#ifdef Direktiven vom Quellcode entfernen?
Moderator: Moderatoren
- dtmackenzie
- Rekursionen-Architekt
- Beiträge: 265
- Registriert: Do, 22. Nov 2007 9:02
- Wohnort: Leipzig
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 22 Mal
- Kontaktdaten:
#ifdef Direktiven vom Quellcode entfernen?
Kennt jemand vielleicht ein Werkzeug, das veraltete #ifdef/#ifndef Abschnitte "intelligent" vom Quellcode entfernt?
Mittlerweile gibt es bei mir einige "steinzeitliche" Optionen, die bis Cl*pper zurückgehen und definitiv nie wieder eingeschaltet werden.
Ohne diese Abschnitte wäre der Code an manchen Stellen viel lesbarer.
Mittlerweile gibt es bei mir einige "steinzeitliche" Optionen, die bis Cl*pper zurückgehen und definitiv nie wieder eingeschaltet werden.
Ohne diese Abschnitte wäre der Code an manchen Stellen viel lesbarer.
Viele Grüße,
David
David
- dtmackenzie
- Rekursionen-Architekt
- Beiträge: 265
- Registriert: Do, 22. Nov 2007 9:02
- Wohnort: Leipzig
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 22 Mal
- Kontaktdaten:
Re: #ifdef Direktiven vom Quellcode entfernen?
Zwischenmeldung: In der Hilfe für #ifdef wird ein Compile-Switch /p erwähnt, die dazu führen soll, dass der Preprocessor eine .ppo-Datei erzeugt. Weißt jemand, ob dieses Switch sonst irgendwo dokumentiert ist? Sie erscheint auch nicht im Workbench. Das Switch ist ziemlich nah dran an das, was ich wollte. Allerdings werden (so wie ich es verstehe) alle #ifdef-Befehle dadurch aufgelöst, ich wollte aber nur die für eine Liste von veralteten Optionen entfernen. Symbolische Konstanten (#define-Befehle) aus den .CH-Dateien möchte ich auch behalten.
Zuletzt geändert von dtmackenzie am Do, 02. Dez 2021 8:20, insgesamt 1-mal geändert.
Viele Grüße,
David
David
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: #ifdef Direktiven vom Quellcode entfernen?
Hallo, David.
Der Compiler-Schalter /p ist in der Sektion "compiler switches" der Hilfe erläutert. Er dient dazu, zu prüfen, ob alle Präprozessor-Direktiven korrekt umgesetzt werden, aber man kann dadurch auch ermitteln, auf welche Funktionen Kommandos umgeleitet werden usw.
Ich weiß nicht ganz, worauf Du hinauswillst. Wenn Du ein #ifdef hast, das immer Nein ist, weil das veraltet ist, dann schmeiß es doch einfach raus, was danach bis zum #else oder #endif kommt.
Der Compiler-Schalter /p ist in der Sektion "compiler switches" der Hilfe erläutert. Er dient dazu, zu prüfen, ob alle Präprozessor-Direktiven korrekt umgesetzt werden, aber man kann dadurch auch ermitteln, auf welche Funktionen Kommandos umgeleitet werden usw.
Ich weiß nicht ganz, worauf Du hinauswillst. Wenn Du ein #ifdef hast, das immer Nein ist, weil das veraltet ist, dann schmeiß es doch einfach raus, was danach bis zum #else oder #endif kommt.
Herzlich,
Tom
Tom
- dtmackenzie
- Rekursionen-Architekt
- Beiträge: 265
- Registriert: Do, 22. Nov 2007 9:02
- Wohnort: Leipzig
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 22 Mal
- Kontaktdaten:
Re: #ifdef Direktiven vom Quellcode entfernen?
Hallo Tom!
Danke! Sektion "compiler switches" habe ich endlich in xpptools20.chm gefunden (bisher hatte ich nur "normale", Workbench- und Online-Hilfe durchsucht). Weißt Du, ob es irgendwo einen übergeordneten Einstieg gibt zu den einzelnen Hilfedateien, die im Verzeichnis help20 liegen?
Naturlich hast Du recht, dass es kein großer Akt ist, ein #ifdef rauszuschmeißen. Nur, die Menge macht's. Es gibt in unserer Anwendung 375 #ifdefs (23 davon wären zu behalten) und 44 #ifndefs. Wenn ich das einfach so händisch machen würde dann würde ich bestimmt irgendwas irgendwo versauen... Da schaltet das Gehirn aus oder rütschen die Finger!
Deshalb habe ich gehofft, dass es vielleicht ein Werkzeug dafür gibt. Also, wahrscheinlich mache ich es doch nicht in einem Rutsch wie ich gerne hätte (was nur ginge, wenn ich nicht alles explizit testen müsste), sondern sukzessiv und nebenbei wenn ich an spezifischen Bereichen arbeite.
Danke! Sektion "compiler switches" habe ich endlich in xpptools20.chm gefunden (bisher hatte ich nur "normale", Workbench- und Online-Hilfe durchsucht). Weißt Du, ob es irgendwo einen übergeordneten Einstieg gibt zu den einzelnen Hilfedateien, die im Verzeichnis help20 liegen?
Naturlich hast Du recht, dass es kein großer Akt ist, ein #ifdef rauszuschmeißen. Nur, die Menge macht's. Es gibt in unserer Anwendung 375 #ifdefs (23 davon wären zu behalten) und 44 #ifndefs. Wenn ich das einfach so händisch machen würde dann würde ich bestimmt irgendwas irgendwo versauen... Da schaltet das Gehirn aus oder rütschen die Finger!
![Wink :wink:](./images/smilies/wink.gif)
Viele Grüße,
David
David
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2827
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 96 Mal
- Danksagung erhalten: 13 Mal
Re: #ifdef Direktiven vom Quellcode entfernen?
Hallo, David -
.ppo ist eine Idee, hat aber Fallstricke.
Der Prepozessor wandelt konfigurative Konstanten nämlich ebenfalls um, und so wird aus
dann
Ich fürchte, da bleibt nur Handarbeit übrig ...
.ppo ist eine Idee, hat aber Fallstricke.
Der Prepozessor wandelt konfigurative Konstanten nämlich ebenfalls um, und so wird aus
Code: Alles auswählen
WHILE nEvent <> xbeP_Close
nEvent := AppEvent(@mp1, @mp2, @oXbp)
oXbp:handleEvent(nEvent, mp1, mp2)
END
Code: Alles auswählen
WHILE nEvent <> (056 + 1048576)
nEvent := AppEvent(@mp1, @mp2, @oXbp)
oXbp:handleEvent(nEvent, mp1, mp2)
END
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- dtmackenzie
- Rekursionen-Architekt
- Beiträge: 265
- Registriert: Do, 22. Nov 2007 9:02
- Wohnort: Leipzig
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 22 Mal
- Kontaktdaten:
Re: #ifdef Direktiven vom Quellcode entfernen?
Hallo, Georg,
ich fürchte, Du hast Recht...
Das ist eigentlich das was ich gemeint habe mit "Symbolische Konstanten (#define-Befehle) aus den .CH-Dateien möchte ich auch behalten".
Ich habe aber überlegt, ob ich vorübergehend alle #include-Befehle (ungefähr 60) auskommentieren könnte - vielleicht probiere ich das spaßeshalber irgendwann, das lässt sich mit globalem Ersetzen machen... Das müsste ich aber in alle Ruhe probieren wenn ich Zeit habe.
ich fürchte, Du hast Recht...
Das ist eigentlich das was ich gemeint habe mit "Symbolische Konstanten (#define-Befehle) aus den .CH-Dateien möchte ich auch behalten".
Ich habe aber überlegt, ob ich vorübergehend alle #include-Befehle (ungefähr 60) auskommentieren könnte - vielleicht probiere ich das spaßeshalber irgendwann, das lässt sich mit globalem Ersetzen machen... Das müsste ich aber in alle Ruhe probieren wenn ich Zeit habe.
Viele Grüße,
David
David
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: #ifdef Direktiven vom Quellcode entfernen?
Das Ersetzen der Konstanten ist nur die Spitze des Eisbergs. Es werden ja auch alle #translate- und #command-Direktiven abgearbeitet, und alle Kommandos werden durch die korrespondierenden Funktionen ersetzt. Fliegen nicht auch Kommentare raus? Jedenfalls bin ich überhaupt nicht auf die Idee gekommen, dass Du mit dem PP-Output weiterarbeiten willst. Dann doch gleich alles in Assembler, oder?
Nein, eine übergeordnete Hilfedatei habe ich nicht gefunden, aber man findet alles, wenn man einfach nur die Hilfe in der Workbench aufruft, statt einen Unterbereich zu wählen.
![Cool 8)](./images/smilies/cool.gif)
Nein, eine übergeordnete Hilfedatei habe ich nicht gefunden, aber man findet alles, wenn man einfach nur die Hilfe in der Workbench aufruft, statt einen Unterbereich zu wählen.
Herzlich,
Tom
Tom
- dtmackenzie
- Rekursionen-Architekt
- Beiträge: 265
- Registriert: Do, 22. Nov 2007 9:02
- Wohnort: Leipzig
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 22 Mal
- Kontaktdaten:
Re: #ifdef Direktiven vom Quellcode entfernen?
Tja, mit einem ordentlichen Assembler kann man auch viel anfangen, so fing ich jedenfalls an...
Ja, haste aber Recht, #translate und #command kommen auch dazu.
Das ist nun aus meiner Sicht der Genickbruch für die PP-Output-Idee.
Schade aber, dass ich z.B. die 145 Stellen mit __XPP__, die seit einem Jahrzehnt nicht mehr relevant sind, nicht automatisch aus der Anwendung entfernen kann.
Was die Hilfe angeht - das Thema hatten wir schon mal, glaube ich, weiß ich aber nicht mehr wo. Bei mir wird "compiler switches" vom Workbench aus nicht gefunden, egal ob ich die Hilfe über F1 oder Menü (Hilfe / Hilfe oder Hilfe / Xbase++ Workbench) aufrufe und egal in welcher Tab (Index oder Suche). Entweder ist meine Installation anders oder ich habe irgendetwas grundsätzlich nicht kapiert. Wäre vielleicht nett wenn die andere Hilfedateien wie z.B. Tools vom Workbench aus zugänglich wären.
![Wink :wink:](./images/smilies/wink.gif)
![Cool 8)](./images/smilies/cool.gif)
Ja, haste aber Recht, #translate und #command kommen auch dazu.
Das ist nun aus meiner Sicht der Genickbruch für die PP-Output-Idee.
Schade aber, dass ich z.B. die 145 Stellen mit __XPP__, die seit einem Jahrzehnt nicht mehr relevant sind, nicht automatisch aus der Anwendung entfernen kann.
Was die Hilfe angeht - das Thema hatten wir schon mal, glaube ich, weiß ich aber nicht mehr wo. Bei mir wird "compiler switches" vom Workbench aus nicht gefunden, egal ob ich die Hilfe über F1 oder Menü (Hilfe / Hilfe oder Hilfe / Xbase++ Workbench) aufrufe und egal in welcher Tab (Index oder Suche). Entweder ist meine Installation anders oder ich habe irgendetwas grundsätzlich nicht kapiert. Wäre vielleicht nett wenn die andere Hilfedateien wie z.B. Tools vom Workbench aus zugänglich wären.
Viele Grüße,
David
David
- Jan
- Marvin
- Beiträge: 14658
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: #ifdef Direktiven vom Quellcode entfernen?
Die Workbench bietet zwei verschiedene Hilfen an. Über das Menü die allgemeine Hilfedatei, kontextsensitiv die zu dem Begriff unter dem Cursor passende Hilfe. Oder auch gar nichts wenn die nichts passendes findet - was immer mal wieder passiert. Auch bei Funktionen die es gibt (PadL() z. B. weil das gesammelt unter PadC/PadL/PadR steht). Und was Alaska trotz mehrfacher Hinwesie seit Jahren schon einfach nicht repariert.
Wenn Du wirklich die gesamte Doku durchforsten möchtest findest Du die gesammelten Dateien unter C:\Program Files (x86)\Alaska Software\help20
Jan
Wenn Du wirklich die gesamte Doku durchforsten möchtest findest Du die gesammelten Dateien unter C:\Program Files (x86)\Alaska Software\help20
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Rookie
- Beiträge: 2
- Registriert: Mi, 17. Nov 2021 16:02
- Danksagung erhalten: 2 Mal
Re: #ifdef Direktiven vom Quellcode entfernen?
Der Einstiegspunkt der höheren Ebene für die Hilfedatei ist "C:\Program Files (x86)\Alaska Software\help20\xpp-dev.chm"
Hoffe das hilft,
Jonathan
Hoffe das hilft,
Jonathan
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2517
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: #ifdef Direktiven vom Quellcode entfernen?
Das geht schon relativ einfach. Sowas habe ich mal zum Kommentare ( /* .... */ ) entfernen gebaut.dtmackenzie hat geschrieben: ↑Do, 02. Dez 2021 10:01 Schade aber, dass ich z.B. die 145 Stellen mit __XPP__, die seit einem Jahrzehnt nicht mehr relevant sind, nicht automatisch aus der Anwendung entfernen kann.
Schreib dir ein kleines Programm welches die prg Dateien durchsucht und die gewünschten Stellen sucht, indentifiziert anzeigt und nach Abfrage entfernt.
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: #ifdef Direktiven vom Quellcode entfernen?
Das wäre tatsächlich nur ein Zehnzeiler oder so. Man liest das PRG zeilenweise ein und schreibt wieder durch, es sei denn, das fragliche #ifdef/#ifndef kommt, dann lässt man alles bis zum #endif weg, oder nur das #ifdef/#ifndef und das #endif, falls die Kondition immer zutrifft. Lediglich beim #else wird es ein wenig hakelig, aber irgendwas ist ja immer. Dort könnte man dann aber einen Marker im Text platzieren und diese Stellen später händisch korrigieren. Mit zusätzlichen fünf Zeilen wäre aber auch das automatisch zu bewältigen.
Herzlich,
Tom
Tom
- dtmackenzie
- Rekursionen-Architekt
- Beiträge: 265
- Registriert: Do, 22. Nov 2007 9:02
- Wohnort: Leipzig
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 22 Mal
- Kontaktdaten:
Re: #ifdef Direktiven vom Quellcode entfernen?
Danke Jan, Jonathan, Carlo und Tom!
Vielleicht nochmal 5 Zeilen wiel sie verschachtelt sein können, und noch ein paar weil es mehrere veraltete Schalter gibt...
Aber ja, das klingt gut machbar, vielleicht schreibe ich das nächste Woche.
Zum Thema Hilfe: Das Link von Jonathan zeigt die Hilfe so wie vom Workbench aus, aber dort funktioniert die Suche! Endlich kapiere ich aber nun was Tom gemeint hat - dann ist kein Bereich links unter "Inhalt" selektiert (bzw. ist nur ausgegraut). Wenn ich aber die Hilfe vom Workbench aus öffne, ist immer schon ein Bereich dort selektiert, und die Suche geht nicht über alles. Ich konnte diesen Bereich auch nicht deselektieren, bis ich darauf gekommen bin, die gesamte linke Seite auszublenden und wieder einzublenden. Gruselig!
Vielleicht nochmal 5 Zeilen wiel sie verschachtelt sein können, und noch ein paar weil es mehrere veraltete Schalter gibt...
Aber ja, das klingt gut machbar, vielleicht schreibe ich das nächste Woche.
Zum Thema Hilfe: Das Link von Jonathan zeigt die Hilfe so wie vom Workbench aus, aber dort funktioniert die Suche! Endlich kapiere ich aber nun was Tom gemeint hat - dann ist kein Bereich links unter "Inhalt" selektiert (bzw. ist nur ausgegraut). Wenn ich aber die Hilfe vom Workbench aus öffne, ist immer schon ein Bereich dort selektiert, und die Suche geht nicht über alles. Ich konnte diesen Bereich auch nicht deselektieren, bis ich darauf gekommen bin, die gesamte linke Seite auszublenden und wieder einzublenden. Gruselig!
Viele Grüße,
David
David
- Marcus Herz
- 1000 working lines a day
- Beiträge: 852
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 39 Mal
- Danksagung erhalten: 192 Mal
- Kontaktdaten:
Re: #ifdef Direktiven vom Quellcode entfernen?
Ich kann mich an ein Programm PPO aus Clipper Zeiten errinnern, das konnte genaus das. Bin noch auf der Suche. Ob das dann noch unter Win 10 läuft, wird spannend.
Clipper Zeugs hab ich auf einem alten Notebokk. Ich schau mal nach am Wochenende....
Clipper Zeugs hab ich auf einem alten Notebokk. Ich schau mal nach am Wochenende....
Gruß Marcus
Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Erkenne, was du findest, dann weißt du, wonach du gesucht hast
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2517
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: #ifdef Direktiven vom Quellcode entfernen?
Mit DOS-BOX ganz sicher!Marcus Herz hat geschrieben: ↑Fr, 03. Dez 2021 15:22 Ob das dann noch unter Win 10 läuft, wird spannend.
siehe: https://www.dosbox.com/
Valar Morghulis
Gruss Carlo
Gruss Carlo