Quellcodes
Auf dieser Seite sind Quellcodes, die man in eigenen Projekten benutzten kann, aufgelistet, Delphikomponenten sind jedoch auf einer eigenen Seite zu finden. Alle mit der MPL-Lizenz, GPL-Lizenz oder BSD-Lizenz versehenen Quellcodes dürfen beliebig verändert und vertrieben werden.Bei der MPL und GPL müssen aber Änderungen veröffentlicht werden und bleiben unter der MPL lizenziert, bei der GPL gilt dies auch für Erweiterungen.
Steht eine Datei unter mehreren Lizenzen, darf man eine davon wählen.
Genauere und rechtskräftige Informationen sollten den Dateien bei liegen.
Braucht jemand unbedingt eine andere Lizenz, kann er mir eine E-Mail schicken.
| Titel | Beschreibung | Sprache | Lizenz |
|---|---|---|---|
| Internet Tools | Template-basierter HTML-Parser, Autoupdateklasse und HTTP-Verbindungswrapper | FPC | GPL |
| Farbauswahldialog | Ein Farbauswahldialog mit RGB- und HLS-Auswahlmöglichkeiten | Delphi | GPL |
| TCommandLineReader | Eine Unit zum Lesen von Kommandozeilenparametern | FPC, Delphi | GPL |
| Diagram-Tools | Eine Diagrammkomponente, basierend auf einem Model/View-System | FPC/Lazarus | GPL |
| Non-VCL Canvas | Eine Konvertierung des Delphi-Canvas nach Non-Vcl. | Delphi | MPL, GPL |
| BBUtils | Häufig benötigte Funktionen, die einem bei FPC fehlen. | FPC | GPL |
| Diffreader | Eine Unit zum Lesen und Schreiben von Unified Diffs. | FPC | GPL |
| TCVirus | Eine Unit/Komponente zum Entwickeln von Scherzprogrammen | Delphi | MPL, GPL |
| TAutoUpdater | Eine Unit für ein automatisches Progammupdate | FPC | GPL |
| SimpleBrowser | Ein kleiner, IE-basierter Browser | (Delphi), (EXE) | GPL |
| Huffmankomprimierer | Eine Funktionssammlung für Huffman(de-)komprimierung. | Delphi | MPL, GPL |
| TRegExpr | Kopie von TRegExpr von Andrey V. Sorokin | Delphi, FPC | GPL |
Internet Tools
GPL
Dieses Package enthält folgende Module:
Stichpunktübersicht der Features:
Onlinereferenz
Download (640 KB ) zur Übersicht
- Einen simplen HTML Parser, der eine HTML/XML-Datei parst und für jeden gelesen Tag und Text eine entsprechende Callbackfunktion aufruft.
- Einen HTML Tree Parser, der den einfachen Parser verwendet, um eine HTML/XML-Datei zu lesen und in einen Elementstream umzuwandeln, der sich wie ein DOM-Baum verhält. Dabei werden zudem Fehler in der HTML-Datei wie nicht geschlossene Tags korrigiert und die Zeichenkodierung ermittelt.
- Einen XPath 2 Interpreter, der beliebige XPath 2 Ausdrücke über dem DOM-ähnlichen Baum ausführen kann. Er ist vollständig in Pascal implementiert, unterstützt alle XPath 2 Funktionen/Ausdrücke und ist nahezu standardkompatibel (vergleiche seine Ergebnisse der XQuery/XPath Testsuite)
- Ein Parser für CSS 3 Selectors, der in die XPath 2 Klasse eingebaut ist, der CSS Selektoren in XPath 2-Ausdrücke umwandeln, und diese dann ausführt.
- Eine pattern-matching HTML Templateengine, die ein HTML Template auf eine Seite anwendet. Ein solches HTML-Template ist eine vereinfachte Version der zu verarbeitenden Seite. Die Struktur des Templates wird mit der Struktur der Seite verglichen, und jedes Template-Element wird mit einem übereinstimmenden Seiten-Element verknüpft, welches dieselben Eigenschaften und ähnliche Kinder aufweist. Die in den Template-Elementen enthaltenden Annotationen können dann die Werte der entsprechenden Seiten-Elemente auslesen. Zum Beispiel ein Template wie
<a>{@href}</a>*liest die Addressen aller Links auf einer HTML Seite.
Ein Template wie<table id="foobar"><tr><td>abc</td><td>{.}</td>*</tr>*</table>liest alle Tabellenzellen nach der Zelle mit dem Text abc in der Tabelle mit ID foobar. Und schließlich ein Template wie<table id="foobar"><tr>{temp := 0}<td>abc</td><td>{temp := $temp + .}</td>*{result := $temp}</tr>*</table>berechnet die Summe aller Tabellenzellen nach der abc-Zelle für alle Zeilen.
Diese Templates lassen sich auch online or with Xidel ausprobieren. - Die multi page Templateengine speichert in ihren Templates mehrere Einzelseitentemplates, die nacheinander auf die angegebenen Seiten angewandt werden. Im Gegensatz zu den Einzelseitentemplates führt diese Engine kein pattern-matching durch (außer natürlich dem pattern-matching mit den enthaltenen Einzelseitentemplates zu den heruntergeladenen Seiten), sondern führt alle Aktionen in der angegebenen Reihenfolge durch. Dabei werden auch Variablen, Bedingungen und Schleifen unterstützt, so dass sie Turing vollständig ist.
- Der HTTP/S-Verbindungswrapper kann Seiten mit GET/Post-Anfragen runterladen und kümmert sich automatisch um Cookies und Weiterleitungen. Außerdem kann er dynamisch zwischen Wininet (auf allen Windowscomputern vorhanden) und Synapse (platform-unabhängig, muss aber installiert werden) umzuschalten.
- Die Autoupdateklasse ist ein Trivialbeispiel für die anderen Klassen, und kann automatisch ein Update runterladen und installieren.
Stichpunktübersicht der Features:
-
Parser/Interpreter:
- für xml/html Seiten, über ein sax und dom-ähnliches Interface
-
für XPath 2 Ausdrücke
- 95% standardkompatibel
- Plus Erweiterungen für OOP, CSS und Regexps.
-
für CSS 3 Selektoren
- standardkompatibel
- standalone oder innerhalb eines XPath Ausdrucks:
//foobar/css("p#x a.class")/@href
-
für pattern-matching html/xml Templates:
- Templates lassen sich einfach aus einer html-Datei erstellen und später updaten
- Die Sprache kann reguläre, XPath 2 and CSS 3 Selektor Ausdrücke einbinden
- Es gibt Variablen, optionale Elemente, Schleifen und Bedingungen
- z.B.:
<p class="test"><span>Caption:</span><a>{.}</a>*</p>liest alle Links nach einemspan-Element mit TextCaption:innerhalb eines Paragraphens mit Klassetest
-
für multi-page Templates
- Mehrere pattern-matching Templates zusammen, die nacheinander auf unterschiedliche Seiten angewandt werden.
- unterstützt Variablen, Bedingungen und Schleifen => Turing vollständig
-
HTTP-Wrapper:
- Erlaubt GET/POST-Übertragungen über http und https mit Fortschrittsanzeige
- Verwendet entweder die Windowsstandardlibrary Wininet oder das platformunabhängige Synapse
-
Auto update:
- Verwendet ein XML-Format, um auf dem Server die aktuelle Version und das Changelog zu speichern.
- Erlaubt unterschiedliche Updates für 32/64-bit Linux/Windows und BSD-Platformen
- Überprüft, ob es eine neue Version gibt, indem nur eine kleine Datei (statt dem Changelog) heruntergeladen wird
- Erlaubt das Ausführen des heruntergeladenen Installers mit beliebigen Kommandozeilenparametern
Onlinereferenz
Download (640 KB ) zur Übersicht
Farbauswahldialog
GPL
Dieser Farbauswahl ähnelt dem Windowsstandarddialog, bietet aber mehr Möglichkeiten:
Download (16 KB ) zur Übersicht
- Es werden alle Komponenten von RGB und HLS angezeigt.
- Man kann in einem Farbverlauf eine beliebige Komponente von RGB/HLS ändern
- Diese Komponente wird sowohl in Abhängigkeit von den beiden anderen angezeigt wie auch unabhängig
- Die beiden anderen Komponenten können in einem 2D-Farbverlauf ausgewählt werden
- Dieser wird jeweils in Abhängigkeit der anderen Komponente angezeigt
- Zusätzlich kann man eine Liste von änderbaren Farben anzeigen
Download (16 KB ) zur Übersicht
TCommandLineReader
GPL
Dies ist ein Kommandozeilenparser, der sowohl mit Delphi wie auch mit Free Pascal funktioniert, sowie unter Windows und Linux.
Vor der Abfrage von Parametern, müssen alle erlaubten Parameter deklariert werden. Dadurch kann vom Parser überprüft werden, dass der Benutzer nur erlaubte Parameter und nur richtige Parameterwerte (z.B.: Int vs. String) verwendet. Außerdem kann so bei Angabe eines falschen Parameters automatisch eine Hilfsliste aller unterstützenden Parameter angezeigt werden. Dies verhindert umgekehrt, dass es geheime, undokumentiere Optionen gibt.
Es gibt drei verschiedene Versionen des Parsers, die ersten beiden lesen die Argumente von der Kommandozeile, und zeigen die Hilfe auf stdout bzw. in einer Messagebox an. Die dritte Version (nur fpc) läuft als CGI-Anwendung und nimmt die Argumente über http GET/POST-Anfragen entgegen.
Zum Vergleich sind hier die Ausgaben meiner Klasse und der Standard-Kommandozeilenfunktionen bei Aufruf des Programms mit den Parameter
Die Features von rcmdline sind:
Onlinereferenz
Download (40 KB ) zur Übersicht
Vor der Abfrage von Parametern, müssen alle erlaubten Parameter deklariert werden. Dadurch kann vom Parser überprüft werden, dass der Benutzer nur erlaubte Parameter und nur richtige Parameterwerte (z.B.: Int vs. String) verwendet. Außerdem kann so bei Angabe eines falschen Parameters automatisch eine Hilfsliste aller unterstützenden Parameter angezeigt werden. Dies verhindert umgekehrt, dass es geheime, undokumentiere Optionen gibt.
Es gibt drei verschiedene Versionen des Parsers, die ersten beiden lesen die Argumente von der Kommandozeile, und zeigen die Hilfe auf stdout bzw. in einer Messagebox an. Die dritte Version (nur fpc) läuft als CGI-Anwendung und nimmt die Argumente über http GET/POST-Anfragen entgegen.
Zum Vergleich sind hier die Ausgaben meiner Klasse und der Standard-Kommandozeilenfunktionen bei Aufruf des Programms mit den Parameter
'" a "' :
| System | TCommandLineReader | ParamStr | string(cmdline) |
|---|---|---|---|
| Windows (Delphi 4) | " a " | ' a ' | "executable" '" a "' |
| Windows (fpc 2.6) | " a " | ' a ' | executable '" a "' |
| Linux/bash (fpc 2.6) | " a " | " a " | executable "" a "" |
Die Features von rcmdline sind:
- Automatische Typumwandlung in den angegeben Typen
- Automatische Anzeige aller erlaubten Parameter
-
Linux (
--xyz=baroder-x bar) und Windows (/) -styleparameter werden erkannt -
Verschiedene Eingabemöglichkeiten für Flags (
-f,--flag,--enable-flag,--disable-flag) - Einfache (') und doppelte (") Anführungszeichen werden erkannt (auch unter Windows)
- Existierende Dateien mit Leerzeichen im Namen auch ohne Verwendung von Anführungszeichen einlesbar
- Kann als CGI-Anwendung laufen und auf GET/POST-Anfragen antworten (nur fpc)
- Parameter können von einem String (z.B.: cmdline) oder einem Array (z.B.: indirekt ParamStr) gelesen werden
Onlinereferenz
Download (40 KB ) zur Übersicht
Diagram-Tools
GPL
Diese Unit zur Anzeige eines Diagrammes folgt einem ähnlichen Model/View-Konzept wie QT: Es gibt eine View-Komponente, welches die in einem Model gespeicherten Daten anzeigt und eine dazugehörige, abstrakte Modelklasse.
Dies ist sehr viel flexibler als der traditionelle Weg, bei welchem die Daten der anzeigenden Komponente direkt zugeordnet sind.
Features:
Onlinereferenz
Download (72 KB ) zur Übersicht
Dies ist sehr viel flexibler als der traditionelle Weg, bei welchem die Daten der anzeigenden Komponente direkt zugeordnet sind.
Features:
- Model/View-Konzept mit automatische Synchronisation zwischen Views, welche identische Models zeigen
- Füllen mit horizontalem/vertikalen Farbverlauf und unterschiedliche Linien/Punktstyles
- Interpolation durch Geraden oder Splines möglich
- Die Diagrammwerte können je nach Einstellung vom Benutzer verändert werden
- Mehrere mögliche Achsen und Punktreihen mit samt einer Legende für letztere
- Automatische Bereichswahl, Verarbeitung von Fließkommawerten
- Standardmodels, mit Punktlisten, zyklischen Listen und einem Model zur Verknüpfung anderer Modelle
- Es gibt eine Hilfedatei
Onlinereferenz
Download (72 KB ) zur Übersicht
Non-VCL Canvas
MPL, GPL
Diese Quellcodesammlung ermöglicht es die üblichen Funktionen des Delphicanvas ohne die VCL-Codes zu benutzen, indem für jede VCL-Funktion eine Methode existiert, die direkt die entsprechende GDI-Funktion auffruft.
Ihre wichtigsten Elemente sind:
Es gibt eine ausführliche HTML-Doku, in der alle Funktionen beschrieben sind.
Download (28 KB ) zur Übersicht
Ihre wichtigsten Elemente sind:
- Funktionen zum Zeichnen von Ellipsen, Linien, Rechtecken und Polygonen.
- Funktionen zum Kopieren von Bildausschnitten.
- Funktionen zur Ausgabe von Text.
- Klassen zur Einstellung von Vorder- und Hintergrundfarbe.
- Eine Klasse zum Einstellen von Fonteigenschaften.
- Eine Hash-klasse und ein Ressourcenmanager.
Es gibt eine ausführliche HTML-Doku, in der alle Funktionen beschrieben sind.
Download (28 KB ) zur Übersicht
BBUtils
GPL
In diesen Units habe ich einige kleine Funktionen gesammelt, die einem bei der Programmierung mit FPC ständig fehlen. Es gibt:
Onlinereferenz
Download (172 KB ) zur Übersicht
- Alle möglichen Arrayfunktionen (hinzufügen, löschen, vergleichen, ...)
- Alle möglichen Stringfunktionen (pchar/ansistring, vergleichen, zerlegen, suchen, umwandeln, html-Entities, ...)
- Mathematische Funktionen (ggt, Primzahlen, Bernoulli-Wahrscheinlichkeitsrechnung,...)
- Automatische Übersetzung von mit tr['markierten String'] und Lazaruskomponenten
Onlinereferenz
Download (172 KB ) zur Übersicht
Diffreader
GPL
Mit dieser Unit kann man ein Unified Diff in ein strukturiertes Format einlesen, verarbeiten und wieder als gültiges Diff speichern
Download (4 KB ) zur Übersicht
- Liest Unified Diffs für eine oder mehrere Dateien
- Erzeugt gültige Diffs
- Besitzt Funktionen um unnötige Daten zu entfernen (siehe mein Programm Simplify Diff)
Download (4 KB ) zur Übersicht
TCVirus
MPL, GPL
TCvirus hat (unter anderem) folgende Funktionen:
Will man die Komponente ohne die VCL nutzen, benötigt man meinen Non-VCL Canvas, der aber im Ziparchiv enthalten ist.
Download (68 KB ) zur Übersicht
- Es liefert einen Canvas für das direkte Zeichnen auf den Bildschirm, unabhängig von geöffneten Fenstern.
- Man kann den Bildschirm spiegeln
- Es liefert Windowshandle für wichtige Objekte, wie dem Startbutton, der Taskleite und des Desktops, über die sie dann verändert werden können.
- Man kann das Programm vor dem Taskmanager verstecken.
- Man kann die CD-Schublade öffnen und schließen.
Will man die Komponente ohne die VCL nutzen, benötigt man meinen Non-VCL Canvas, der aber im Ziparchiv enthalten ist.
Download (68 KB ) zur Übersicht
TAutoUpdater
GPL
Hiermit kann man in ein Programm ein automatisches Update übers Internet einbauen.
Um die Klasse benutzen zu können, braucht man eine wininet-Unit, die die Windowsinternetfunktionen enthält. (oben gibt es eine neuere Version, die ein besser konfigurierbares XML-Format verwendet) Funktionen:
Download (12 KB ) zur Übersicht
Um die Klasse benutzen zu können, braucht man eine wininet-Unit, die die Windowsinternetfunktionen enthält. (oben gibt es eine neuere Version, die ein besser konfigurierbares XML-Format verwendet) Funktionen:
- Erkennen neuer Versionen
- Download dieser
- Ersetzen des eigenen Programms unter Windows NT und 9x-Schiene
- Erkennen von Rechtemangel unter (Windows NT,...)
Download (12 KB ) zur Übersicht
SimpleBrowser
GPL
Dies ist ein kleiner Browser, der auf dem Internet Explorer basiert.
Für einen Normaluser ist er vollkommen nutzlos, sein Aussehen kann aber beim Aufruf durch Kommandozeilenparameter festgelegt werden, was manchmal recht praktisch ist, wenn man nur eine bestimmte Seite anzeigen will.
Download (196 KB ) zur Übersicht
Für einen Normaluser ist er vollkommen nutzlos, sein Aussehen kann aber beim Aufruf durch Kommandozeilenparameter festgelegt werden, was manchmal recht praktisch ist, wenn man nur eine bestimmte Seite anzeigen will.
Download (196 KB ) zur Übersicht
Huffmankomprimierer
MPL, GPL
Diese Unit ermöglicht die (De-)Kompression von Strings mit dem Huffmanverfahren. In dem entstehenden, komprimierten String wird jedes Zeichen nicht mehr mit 8 Bit gespeichert, sondern die Bitlänge ist variabel, so dass häufige Zeichen mit weniger Bits als seltene gespeichert werden.
Es ist auch möglich Unicodestring, Arrays und Dateien zu komprimieren, indem sie von den entsprechenden Funktionen einfach als Ansistring interpretiert werden.
Die Unit läuft auch ohne die VCL.
Besonders eignet sich das Verfahren für normale Texte und andere Daten, wo einige wenige Zeichen sehr oft wiederholt werden. In beinahe jedem Fall ist die Kompressionsrate aber geringer als von modernen Komprimierungsverfahren, wie Rar oder Ace.
Download (16 KB ) zur Übersicht
Es ist auch möglich Unicodestring, Arrays und Dateien zu komprimieren, indem sie von den entsprechenden Funktionen einfach als Ansistring interpretiert werden.
Die Unit läuft auch ohne die VCL.
Besonders eignet sich das Verfahren für normale Texte und andere Daten, wo einige wenige Zeichen sehr oft wiederholt werden. In beinahe jedem Fall ist die Kompressionsrate aber geringer als von modernen Komprimierungsverfahren, wie Rar oder Ace.
Download (16 KB ) zur Übersicht
TRegExpr
GPL
Dies ist eine Kopie von TRegExpr 0.952 von Andrey V. Sorokin, dessen Seite www.regexpstudio.com tot zu sein scheint. Im wesentlichen ist eine Bibliothek für reguläre Ausdrücke, die sämtliche Regexp-Operationen unterstützt, inklusive Backtracking.
Ich habe ein paar Zeilen geändert, damit es besser mit FPC funktioniert, die größte Änderung ist im Grunde, dass ich die Unit umbenannt habe.
Download (92 KB ) zur Übersicht
Ich habe ein paar Zeilen geändert, damit es besser mit FPC funktioniert, die größte Änderung ist im Grunde, dass ich die Unit umbenannt habe.
Download (92 KB ) zur Übersicht
www.benibela.de/sources_de.html
Inhalt zuletzt geändert: 2012-09-27 01:57:36+0200
Seite zuletzt geändert: 2012-09-27 01:57:36+0200


