Aktuelle Zeit: 17.12.2018 04:09

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: PB IDE-Werkzeug: Declare-Filter generiert ProcDeclarationen
BeitragVerfasst: 26.06.2007 13:04 
Offline
Benutzeravatar

Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg
Hallo zusammen,

gestern habe ich ein etwas größeres Projekt umgestellt und den Source auf mehrere Includes neu aufgeteilt. Außerdem Proceduren thematisch sortiert usw.

Naja und dabei hat man dann das Problem, daß nicht deklarierte Proceduren beim compilieren unter Umständen angemeckert werden, weil sie von anderen Proceduren benutzt werden, bevor sie im Source überhaupt definiert sind.
Aus dem Grund müssen diese Proceduren ja auch am Anfang des Codes deklariert werden.
Ich denke, jeder der das gleiche Problem hat(te), weiß in etwa was ich meine. :-)

Entweder man schangelt seine Proceduren so geschickt um, daß man das Problem nicht bekommt oder man deklariert einfach jede Procedure gleich am Anfang, dann hat man das Problem erst gar nicht.

Da ich scheisse-faul bin und keine Lust habe mir wegen dieser Procedure-Schangelei mein Schmalz unnütz zu belasten, habe ich ich mir kurzerhand ein Tool erstellt, daß mir diese Arbeit abnimmt. (Ich frage mich wieso PB das nicht selbst kann - also einfach 2-pass compilieren?)

Also das Tool "Declare-Filter" schnappt sich den Haupt-Quellcode und alle seine Includes... ackert die durch und erstellt daraus eine Declare-Liste aller verwendeten Proceduren. Diese Liste pasted man sich dann an den Anfang seines Haupt-Quellcodes. Fettich.

Hier liegt das Programm mitsamt Screenshots für die Einrichtung als IDE Werkzeug:
>>> Declare-Filter Download <<<

Nachtrag 28.06.07: Das manuelle kopieren war mir dann auch zu lästig. Daher habe ich das Programm etwas erweitert, so daß alles vollautomatisch abläuft. Das Readme unten habe ich angepasst. Die Webseite (siehe link oben) kann ich erst morgen anpassen, aber die dort liegenden ZIP Archive enthalten schon die aktuelle Version.

Und hier das Readme dazu:
Code:
 ____            _                      _____ _ _ _           
|  _ \  ___  ___| | __ _ _ __ ___      |  ___(_) | |_ ___ _ __
| | | |/ _ \/ __| |/ _` | '__/ _ \_____| |_  | | | __/ _ \ '__|
| |_| |  __/ (__| | (_| | | |  __/_____|  _| | | | ||  __/ |   
|____/ \___|\___|_|\__,_|_|  \___|     |_|   |_|_|\__\___|_|   

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.

Das Programm kann in zwei Ausführungsmodis arbeiten:
- GUI Modus (mit Fensteroberfläche)
- Invisible Modus (ohne Fensteroberfläche)

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 Quell-
codedatei angegeben werden.

Die Fensteroberfläche teilt sich von oben nach unten in drei Bereiche:
- Dateiname des Hauptquellcodes
- Liste der inkludierten Quellcodedateien
- Anzeige der generierten Declareliste

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:

  ; Includedateien

  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 Augabedatei 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:
Declare-Filter.exe
   -> Programm startet im GUI Modus, Die Quellcode-Datei muß manuell geladen werden und die
      fertige Declare-Liste wird in der GUI angezeigt.

Declare-Filter.exe "Dateiname"
   -> Programm startet im GUI Modus, wenn in "Dateiname" keine Magic words vorhanden sind.
      Die fertige Declare-Liste wird in der GUI angezeigt.
   -> Programm startet im invisible Modus, wenn in "Dateiname" das Magic word "%DECLAREFILE"
      vorhanden ist. Die Declare-Liste wird in die Datei geschrieben, die durch %DECLAREFILE
      definiert ist. Das Programm wird automatisch beendet.

Declare-Filter.exe "Dateiname1" "Dateiname2"
   -> Programm startet im invisible Modus und schreibt die Declare-Liste in die Datei Dateiname2.
      Das Programm wird automatisch beendet.

Features:
- Der Proceduretype wird beachtet (.s, .l usw...)
- Procedure() muß nicht allein in der Zeile stehen
  Procedure Tuewas() : Tuewas : EndProcedure ist kein Problem
- Verwechslungen mit dem Wort "Procedure" in einem anderen Kontext innerhalb des Quellcodes
  werden ziemlich sicher vermieden
- Kommentare werden als solche erkannt und ignoriert
- Generierung einer Declare-Datei

Einschränkungen:
- Die Quellcodes werden nicht rekursiv durchsucht. Sollte also in einem Include
  ein weiteres Include enthalten sein, wird dies nicht durchsucht
- IncludeFile muß als einziger Befehl in einer Zeile stehen
- Ein als Declare-File markiertes Includefile (%DECLAREFILE) muß das erste IncludeFile im Quellcode
  sein, da es sonst Compilerfehler hagelt

Die Bilder Declare-Filter-x.gif zeigen wie man das Programm in die Purebasic-IDE
einbindet und wie die generierte Declare-Liste aussieht.


Bild

Bild

Bild

Bild

Bild

Ich hoffe, es ist auch für andere nützlich.

Gruß Markus

PS: Ja, ichweiß, daß ts-soft einen pre-compiler für das gleiche Problem erstellt hat, aber dort gefällt mir nicht, daß sich der compilierte Code von dem im Editor unterscheidet. Hier habe ich bzgl. meines Quellcodes volles WYSIWYC (what you see is what you compile) :)

_________________
"Never run a changing system!"
PB 5.62, OS: Windows 7 Pro x64, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Ich bin Baujahr 1968, also aktuell 50.


Zuletzt geändert von Kurzer am 20.07.2012 22:38, insgesamt 12-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 26.06.2007 15:55 
Offline
Benutzeravatar

Registriert: 01.10.2004 10:02
Nett. Damit ähneln sich jaPBe udn die PB IDE immer mehr... :-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 26.06.2007 21:12 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
Sehr schön! Danke! :allright:

Grüße ... Kiffi

_________________
ƃᴉɹǝᴉʍɥɔs ʇsᴉ ɥɔɐɟuᴉǝ


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 28.06.2007 15:51 
Offline
Benutzeravatar

Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg
Das manuelle kopieren war mir dann auch zu lästig. Daher habe ich das Programm etwas erweitert, so daß alles vollautomatisch abläuft. Das Readme im Ursprungsposting habe ich angepasst.
Die Webseite, die oben angegeben ist wird später angepasst, aber die dort liegenden ZIP Archive enthalten schon die aktuelle Version.

Gruß Markus

_________________
"Never run a changing system!"
PB 5.62, OS: Windows 7 Pro x64, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Ich bin Baujahr 1968, also aktuell 50.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 06.11.2007 00:08 
Offline
Benutzeravatar

Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg
Habe jetzt auch den Sourcecode beigelegt, falls das Tool jemand anpassen/erweitern möchte. Außerdem waren die links im ersten post nach meinem Umbau der Hompage nicht mehr korrekt - hab's korrigiert. Zur Webseite

_________________
"Never run a changing system!"
PB 5.62, OS: Windows 7 Pro x64, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Ich bin Baujahr 1968, also aktuell 50.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 06.11.2007 09:22 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Habs jetzt nicht getestet, aber wie ist das mit Procedure-Parametern mit
einer Structure gelöst?

Zum Beispiel bei folgendem
Code:
Structure bla
  a.l
  b.l
EndStructure

Procedure blubb(*a.bla)
EndProcedure

Kommt die die Declare-Zeile dann vor die Structure, oder danach oder
schreibst du dann einfach nur
Code:
Declare blubb(*a)

ohne die Structure?

_________________
Freakscorner.de - Der Bastelkeller | Neustes Video: Neje DK - 1 Watt Laser Engraver
Ubuntu Gnome 18.04.1 LTS x64, PureBasic 5.60 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 06.11.2007 14:04 
Offline
Benutzeravatar

Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg
NicTheQuick hat geschrieben:
...Kommt die die Declare-Zeile dann vor die Structure, oder danach oder
schreibst du dann einfach nur
Code:
Declare blubb(*a)

ohne die Structure?

Der originale Quellcode wird nicht verändert. Es wird entweder eine seperate (von Dir selbst zu inkludierende) Includedatei erzeugt oder aber das Resultat liegt in einem Editorgadget bzw. im Clipboard und kann von Dir in Deinen Code gepasted werden.

Und ja, ich mache nur:
Code:
Declare blubb(*a)


Im Automatikmodus wird z.B. eine solche Datei erzeugt:
Code:
; --- 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)
Declare.l TickQueryTimers()
Declare BuildStatement()
Declare InitDB()
Declare ConnectToDB()
Declare DisconnectFromDB()
Declare.l DBQueryToList(Query$)
Declare.s DBQueryWithHeader(Query$)
Declare DoScan(Manual.b)
Declare LoadSettings()
Declare SaveDBSettings()
Declare SaveGUISettings(Message.l)
Declare LoadRecordProperties()
Declare SaveRecordProperties()

; --- _Window_Message.pbi
Declare MESSAGE_Window_Open()
Declare MESSAGE_Window_Close()
Declare MESSAGE_Button_Ok()
Declare MESSAGE_SyncLinkedList()
Declare MESSAGE_ListIcon_Result_LeftDoubleClick()
Declare MESSAGE_ListIcon_Result_Change()
Declare MESSAGE_ListIcon_Result_Rebuild()
Declare MESSAGE_ListIcon_Property_LeftDoubleClick()
Declare MESSAGE_ShowRecords(SelectedRow.l)
Declare MESSAGE_ShowRecordProperty(SelectedRow.l, Clear.l)

; --- _Window_Settings.pbi
Declare SETTINGS_Window_Open()
Declare SETTINGS_Window_Close()
Declare SETTINGS_Button_Save()

usw...

Diese Datei inkludiere ich in meinen zugehörigen Hauptquellcode:
Code:
; ------------------------------------------------------------
; Includedateien

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


Mit der Kennung ;%DECLAREFILE sage ich dem Tool auch gleich den namen der Datei, in die es die Deklarations-Definitionen schreiben soll.

Wenn also die Includes in Deinem Hauptsource richtig eingerichtet sind (%DECLAREFILE), dann benötigst Du später nur noch einen Tastendruck (Shortcut), um die Procedure-Deklarationen Deines Projekts auf den neusten Stand zu bringen.

_________________
"Never run a changing system!"
PB 5.62, OS: Windows 7 Pro x64, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Ich bin Baujahr 1968, also aktuell 50.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB IDE-Werkzeug: Declare-Filter generiert ProcDeclaratio
BeitragVerfasst: 30.05.2010 22:24 
Offline
Benutzeravatar

Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg
Habe den Thread noch mal von den Toten zurückgeholt.

Mir ist leider erst heute aufgefallen, daß Declare-Filter ein Problem mit Prozeduren hat, die ein oder mehrere Arrays als Parameter besitzen.
Hier wurde die schließende Klammer nicht korrekt erkannt und somit eine falsche Deklaration dafür erzeugt.

Die deutsche Version von Declare-Filterist seit heute korrigiert (siehe link im ersten Beitrag).

_________________
"Never run a changing system!"
PB 5.62, OS: Windows 7 Pro x64, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Ich bin Baujahr 1968, also aktuell 50.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB IDE-Werkzeug: Declare-Filter generiert ProcDeclaratio
BeitragVerfasst: 01.05.2015 13:20 
Offline
Benutzeravatar

Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg
Nochmal ein kurzer Post von mir aus der Versenkung.

Mir ist nach langer Zeit aufgefallen, dass die letzte Version von Declare-Filter Prozeduren mit Typensuffix (z.B. Procedure.s Getchar(...) ) nicht korrekt erkannt hat. Ich hatte seinerzeit die Erkennungsroutine komplett neu geschrieben und dabei muss dieser bug reingekommen sein.

Ich weiß zwar nicht, ob das Programm noch jemand nutzt, aber der Fehler ist jetzt korrigiert worden. Die aktuelle Version ist unter dem link im ersten Post downloadbar.

Gruß
Kurzer

_________________
"Never run a changing system!"
PB 5.62, OS: Windows 7 Pro x64, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Ich bin Baujahr 1968, also aktuell 50.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB IDE-Werkzeug: Declare-Filter generiert ProcDeclaratio
BeitragVerfasst: 03.05.2015 09:41 
Offline
Benutzeravatar

Registriert: 29.08.2004 08:48
Danke, ja es gibt noch welche die das tool nutzen ;)

_________________
Rings hat geschrieben:
ziert sich nich beim zitieren


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
cron

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye