Seite 6 von 8

Verfasst: 22.10.2006 20:14
von ts-soft
Mir fehlt aber die Unterstützung von Include-Dateien!
MultiLine on darf mehrfach vorkommen
Unterscheidung von MultiLine = je IncludeFile

Ich will Dich nicht beschäftigen und ich weiß das dies nicht so einfach ist, aber
ohne Includes kann ich das Feature nur in der Main.pb nutzen :(

Gruß
Thomas

Verfasst: 22.10.2006 20:53
von Little John
ts-soft hat geschrieben:Mir fehlt aber die Unterstützung von Include-Dateien!
MultiLine on darf mehrfach vorkommen
Unterscheidung von MultiLine = je IncludeFile

Ich will Dich nicht beschäftigen und ich weiß das dies nicht so einfach ist, aber
ohne Includes kann ich das Feature nur in der Main.pb nutzen :(
Ich verstehe. Ist schon klar, dass das keine Beschäftigungstherapie ist. :)
So wie ich die "MultiLine"-Direktive im Moment implementiert habe, hat es den Vorteil, dass, wenn sie fehlt, der Preprocessor gleich beendet werden kann. Ansonsten müsste er evtl. tausende von Zeilen lesen und in die temporäre Datei schreiben, auch wenn es im betr. Quelltext gar keine Zeilen zu verbinden gibt. Ich habe aber an Include-Dateien leider nicht gedacht. :(

Das heißt (bitte korrigiere mich, wenn ich mich irre) entweder gibt es nur 1 "MultiLine"-Direktive in der Hauptdatei, die sich auch auf alle "includierten" Dateien auswirkt, oder andernfalls -- so wie Du es vorschlägst -- muss der Präprozessor immer den ganzen Quelltext durchgehen. In dem Fall kann man sich die Direktive

Code: Alles auswählen

MultiLine on
eigentlich auch sparen, d.h. auch wenn gar nichts angegeben ist, kann/sollte _ als Zeilenverbindungszeichen betrachtet werden, oder?

Gruß, Little John

Verfasst: 22.10.2006 21:31
von ts-soft
MultiLine On braucht nur in der Main ausgewertet werden, wenn nein, dann
beenden, wie bisher, sonst kostet es unnütz Zeit.

MultiLine = \ o.ä. sollte zusätzlich je Include ausgewertet werden. Also
Include A kann \ verwenden, Include B _ usw.

MultiLine bleibt also solange gültig, bis Ende oder es trifft auf neues MultiLine
in neuer Include. Also nur ein MultiLine = je Include möglich.

Gruß
Thomas

Verfasst: 23.10.2006 08:00
von Little John
ts-soft hat geschrieben:MultiLine On braucht nur in der Main ausgewertet werden, wenn nein, dann
beenden, wie bisher, sonst kostet es unnütz Zeit.

MultiLine = \ o.ä. sollte zusätzlich je Include ausgewertet werden. Also
Include A kann \ verwenden, Include B _ usw.

MultiLine bleibt also solange gültig, bis Ende oder es trifft auf neues MultiLine
in neuer Include. Also nur ein MultiLine = je Include möglich.
Ich habe meine private Kopie des Programms angepasst (den Quelltext hier im Forum noch nicht). Die Multiline-Direktive muss weiterhin die erste Anweisung im Programm sein, ansonsten beendet sich der Preprozessor sofort. Neu ist, dass jetzt beliebig viele Multiline-Direktiven im Programm vorkommen können.

Das Problem ist, dass die PureBasic-IDE mir aber trotzdem Syntax-Fehler in Include-Dateien meldet. Wenn ich den Inhalt der Include-Dateien jedoch an die betr. Stelle im Hauptprogramm kopiere, funktioniert alles wie erwartet. D.h. offenbar prüft die IDE die Include-Dateien, bevor mein Preprozessor sie verändert. :(
Der Preprozessor bekommt ja als Argument "%COMPILEFILE" übergeben. Ich hatte angenommen, dass sei der gesamte Programmcode, der auch alle Include-Dateien enthält. Dem ist offenbar nicht so,

Jetzt weiß ich nicht, wie ich vorgehen soll. Ich könnte den Preprozessor so ändern, dass er selbst rekursiv alle Include-Dateien liest. Aber was ist z.B., wenn er dann eine Include-Datei ändert, die gerade in der IDE geöffnet ist?
Das gute an "%COMPILEFILE" ist ja, dass es eine temporäre Datei ist, deren Änderung sich daher nicht auf die in der IDE geöffnete Datei auswirkt. Vielleicht ginge es, wenn der Preprozessor die Include-Dateien vor dem Ändern auch in temporäre Dateien kopiert, aber findet PureBasic diese Dateien dann, um sie kompilieren zu können?

Gruß, Little John

Verfasst: 07.01.2009 02:14
von Little John
Ich habe das Programm mal wiederbelebt -- jetzt mit deutlich mehr Erfahrung in PB ;-) -- und ein klein wenig verbessert. Der Code ist jetzt nur noch im englischen Forum zu finden.
Wenn alles so läuft wie geplant, kann die nächste Programm-Version dann auch endlich Include-Dateien verarbeiten! :-)

Gruß, Little John

Verfasst: 10.02.2009 22:48
von Little John
ts-soft hat geschrieben:MultiLine On braucht nur in der Main ausgewertet werden, wenn nein, dann
beenden, wie bisher, sonst kostet es unnütz Zeit.

MultiLine = \ o.ä. sollte zusätzlich je Include ausgewertet werden. Also
Include A kann \ verwenden, Include B _ usw.

MultiLine bleibt also solange gültig, bis Ende oder es trifft auf neues MultiLine
in neuer Include. Also nur ein MultiLine = je Include möglich.

Gruß
Thomas
Dein Wunsch ist mir Befehl.
(Wenn auch mit einer "kleinen" Verspätung.) :D
siehe Link im vorangehenden Posting.

Gruß, Little John

Verfasst: 10.02.2009 23:10
von ts-soft
Little John hat geschrieben:(Wenn auch mit einer "kleinen" Verspätung.)
Weißt Du wie Alt ich inzwischen geworden bin :mrgreen:

:allright:

Verfasst: 10.02.2009 23:35
von Little John
Reicher an Erfahrung bestimmt, aber alt? ... Det gloob ick nich. ;-)

Gruß, Little John

Verfasst: 19.02.2009 09:09
von Little John
Neue Version 0.50

- Die verarbeiteten Include-Dateien werden nicht mehr in eine einzige Datei geschrieben.
So kann die IDE bei einem Syntaxfehler nun die richtige Zeile anzeigen, in der sich der Fehler befindet.
- Einige Bugs beseitigt.

Der Code ist wie immer im engl. Forum.

Gruß, Little John

Verfasst: 19.02.2009 16:11
von Andesdaf
danke! :allright: