Declare-Filter

[26.06.2007]
Dies ist ein kleines Tool, welches das Programmieren mit der originalen IDE von Purebasic ein wenig erleichtern soll.
Somit ist es natürlich nur für Leute interessant, die mit Purebasic selbst Software entwicklen.

Prozeduren müssen in PureBasic i.d.R.am Anfang des Hauptprogrammcodes deklariert werden, wenn man sie innerhalb von anderen Prozeduren aufrufen möchte. Zumindest, wenn der Aufruf der Prozedur vor der eigentlichen Definition derselben geschiet. Ansonsten gibt der Compiler eine Fehlermeldung raus.

Nun gibt es Leute, die die Prozeduren so geschickt im Quellcode platzieren und umstellen können, daß es zu einer solchen Situiation niemals kommt (nämlich dem Aufruf einer Prozedur vor deren Definition). Zum anderen gibt es fleissige Leute, die sowieso jede Prozedur von Anfang deklarieren. Tja, und dann gibt es noch Leute wie mich... die erstmal zu faul sind die Prozeduren extra zu deklarieren (man muß ja unter Umständen zwischen Include und Hauptquellcode wechseln :-) ), sich dann aber schwarz ärgern, wenn es in einem größeren Projekt
nach dem Umsortieren oder dem thematischen Zusammenfassen von Prozeduren in Include-Dateien Fehlermeldungen hagelt.

Ehrlich gesagt... eigentlich will ich es ja ordentlich haben in meinem Quellcode. ;-)

Also habe ich mir ein kleines Tool geschrieben, das mir meinen Quellcode und alle Include-Dateien auf Tastendruck nach Prozeduren durchsucht und mir eine fertige Declare-Liste generiert, die ich nur noch in den Quellcode kopieren bzw. in mein Projekt inkludieren muß.

Das Programm wird einfach in ein beliebiges Verzeichnis kopiert und kann als Werkzeug in den Editor von Purebasic eingebunden werden.
Mit entsprechender Konfiguration erstellt es die Declare-Liste dann auf Tastendruck.

Wer Interesse am Programm und am Code hat, der kann sich die .zip Datei runterladen. Sie enthält sowohl das Executable, als auch die Purebasic-Sourcen.
Download (140 KB, ZIP-Archiv, Sourcecode und Exe "Declare-Filter")

Dieses Programm ist "Freie Software" gemäß den Bedingungen der GNU General Public License.

Here you will find the english version of the program and the description (non recursive Version, translated by the Pureboard user yrreti).
(Note: The german version works recursive since version 1.03 from 05/2010 (it detectes includes in includes in includes in...) and have an improved PROCEDURE detection)

[Update: 03.06.2010]
- Erkennung der Procedure-Aufrufe verbessert (es gab Probleme bei Prozeduren, die Arrays als Parameter nutzen)
- Includefiles werden nun rekursiv durchsucht, Mehrfachvorkommen ausgeschlossen
- Echte Windows CHM-Hilfedatei statt PDF-Hilfedatei


Declare-Filter [de]

Version 1.03


Zweck des Programms:

Das Programm Declare-Filter ist ein Werkzeug für die Arbeit mit PureBasic. Es dient dazu in größeren Projekten die Deklaration von Prozeduren zu automatisieren.
Declare-Filter kann sowohl als eigenständiges Programm aufgerufen und auch als Werkzeug in die Purebasic-IDE eingebunden werden.

Arbeitsmodi:

Das Programm kann in zwei Ausführungsmodis arbeiten:

Die Arbeitsweise ist in beiden Ausführungsmodis ähnlich:

Das Programm durchsucht den ausgewählten oder als Parameter übergebenen Quellcode und alle darin inkludierten Quellcodes nach Prozeduren ab und baut daraus eine Liste mit Prozedur-Deklarationen auf.
Diese Liste kann danach direkt in den Haupt-Quellcode kopiert oder automatisch in eine externe Include-Datei geschrieben werden.

Der GUI-Modus:

Im GUI-Modus startet das Programm, wenn es ohne oder nur mit einem Parameter aufgerufen wird. Als Parameter muß der Dateiname der zu durchsuchenden Quellcodedatei angegeben werden.

Die Fensteroberfläche teilt sich von oben nach unten in drei Bereiche:

Aufruf mit Parameter:

Wird das Programm mit übergebener Quellcodedatei aufgerufen, dann lädt es den Quellcode und den aller Includes automatisch ein und beginnt sofort damit die Declare-Liste aufzubauen und im unteren Bereich anzuzeigen.
(Anm.: Sind im Quellcode sog. "Magic Words" für das Programm hinterlegt, dann kann es sein, daß es dadurch im invisible Modus gestartet wird - mehr dazu weiter unten)

Mit einem Klick auf den Knopf "Liste kopieren" wird die fertige Declareliste als Text in die Zwischenablage (Clipboard) kopiert.

Aufruf ohne Parameter:

Wird kein Parameter angegeben, dann kann der Quellcode mittels FileRequester ausgewählt werden (Verzeichnis-Button).
Danach wird die Declareliste mit Klick auf den Button Filtern aufgebaut.
Mit Klick auf den Knopf "Liste kopieren" wird die Declareliste als Text in die Zwischenablage (Clipboard) kopiert.

Der invisible Modus:

Im invisible Modus startet das Programm, wenn es entweder mit zwei Parametern gestartet wurde oder aber mit einem Parameter und sich in der zu durchsuchenden Quellcodedatei "Magic words" befinden.

Bedeutung der Parameter:

1. Parameter = Name der zu durchsuchenden Quellcodedatei.
2. Parameter = Name der Include-Datei, in die die Declare-Liste geschrieben wird.

Im invisible Modus führt das Programm vollautomatisch alle nötigen Schritte aus. Nach erfolgreicher Erstellung der Declareliste wird ca. 1/2 Sekunde lang ein kleines Infofenster angezeigt und das Programm dann automatisch beendet.
Die Ausgabe der Declareliste in eine Datei kann auch über ein "Magic word" innerhalb des Quellcodes aktiviert werden. Dabei muß dann nur ein Parameter übergeben werden - der zweite Parameter wird direkt aus der Quellcodedatei  ermittelt.

So kann z.B. die von Declare-Filter erzeugte Declare-Datei als Include-Datei im Quellcode eingebunden sein. Diese Datei muß mit dem Kommentar ; %DECLAREFILE markiert werden.

Findet Declare-Filter beim Durchsuchen der Quellcodedatei einen so markierten IncludeFile-Befehl, dann wird dieser Dateiname als Ausgabedatei für die Declare-Liste benutzt.

Mit dem "Magic word" ; %IGNOREFILE kann eine Include-Datei von der Bearbeitung durch Declare-Filter ausgeklammert werden.

Beispiel:

  IncludeFile "GUI.pb"                    ; %IGNOREFILE
  IncludeFile "_Deklarationen.pbi"        ; %DECLAREFILE
  IncludeFile "_General.pbi"
  IncludeFile "_Database.pbi" 
  IncludeFile "_Fileaccess.pbi"
  IncludeFile "_Window_Message.pbi"
  IncludeFile "_Window_Settings.pbi"
  IncludeFile "_Window_Info.pbi"
  IncludeFile "_Window_Main.pbi"

Hier wird die Datei GUI.pb von Declare-Filter ignoriert und die Datei _Deklarationen.pbi als Ausgabedatei für die Declare-Liste benutzt.

Somit braucht man Declare-Filter nur kurz per ShortCut aufrufen und alles weitere passiert vollautomatisch.
Die erzeugte Declare-Liste sieht dann beispielsweise so aus:

; --- Procedure declarations, generated by Declare-Filter ---

; --- _General.pbi
Declare Wait(Millisec.l)
Declare.s DeEncode(Text.s, Key.s)
Declare WriteLog(Text$)
Declare.l InvalidUser()
Declare.l InputDate(CallerWindowID.l, CallerItemID.l, X.l, Y.l, Title$, DefaultDate.l)

; --- _Database.pbi
Declare BuildStatement()
Declare InitDB()
Declare ConnectToDB()
Declare DisconnectFromDB()
Declare.l DBQueryToList(Query$)
Declare.s DBQueryWithHeader(Query$)
Declare DoScan(Manual.b)

usw...

Aufruf:

Features:

Einrichtung des Programms als IDE-Werkzeug:

Aufruf des Menübefehls "Werkzeuge Konfigurieren"

Mit NEU ein neues Werkzeug einrichten. Parameter siehe Bild unten.

Beispiel einer Anwendung von Declare-Filter:

Wird im Haupt-Quellcode (dort, wo alle Inkludes aufgeführt sind) mittels ALT-D Declare Filter aufgeruden, dann scannt das Tool alle Includefiles und genriert im Verzeichnis des Projekts/Quellcodes die Datei "Declarations.pb".

Nach dem Scan erscheint kurz eine Meldung, daß das Includefile erzeugt wurde.

Dieser Vorgang dauert max. 1 Sekunde. Danach kann der Programmcode ausgeführt werden (F5), ohne daß man sich um die Reihenfolge der benutzen Prozeduren kümmern muß.

Wichtig ist, daß das Declarefile (im Beispiel oben "Declarations.pb") vor allen anderen Includefiles eingelesen wird, damit die Prozedurdeklarationen möglichst "weit oben" im Quellcode stehen. Auf jeden Fall müssen die Deklarationen vor dem ersten Aufruf einer deklarierten Prozedur stehen.