Deutsch
SDK-Helfer/ Tools

GDO

 

Timotheus
GDO steht für Grafische Darstellung und Optimierung. Dieses Programm hieß früher Mc.exe, für Mistake Cleaner, mit dem ich 2004 begann. Damals zeigte mir der Compiler den Fehler "zu dem iF fehlt ein endiF", wonach aber ein paar hundert Zeilen Quellcode folgten und auch nach längerer Fehlersuche die Zeile nicht auffindbar war in der das endiF fehlte. Daher schrieb ich dann die Mc.exe, die die Verschachtelungen grafisch anzeigte, so dass dann endlich für das iF ein endiF gefunden werden konnte. Danach folgten dann noch mehrere Erweiterungen, wie Syntaxtest der Parameteranzahl aller Funktionen oder andere Fehler. Nach einem Wettbewerbsprogramm 2005 wurde die Mc.exe dann als Teil des Profan-Managers weiterentwickelt. Ab 2008 hatte ich dann aber nicht mehr so viel Zeit für die Ergänzung aller neuen Funktionen jeder neuen Profanversion, wonach Dietmar die veralteten Programmteile dann entfernte und dafür auf den Profaninspektor setzte. Da dieser auch alle Fehler der Mc.exe finden kann, ist die Fehlerüberprüfung in GDO nicht mehr enthalten, sie findet zwar noch im Hintergrund statt, die Ergebnisse werden aber nicht mehr angezeigt, so dass GDO nur noch die grafische Darstellung der Verschachtelungen von iF, endiF, proc, endproc, while und wend anzeigt. Für weitere Fehlermeldungen kann der Profaninspektor verwendet werden. Der war mal in diesem Forum zum Download verfügbar  [...]  , ging aber durch einen Unfall abhanden. Der Profaninspektor ist aber dem Profanmanager beigefügt  [...]  , auch der ging durch einen Unfall der Forumssoftware verloren. Der Profanmanager ist, jedenfalls zurzeit, hier verfügbar  [...]  . Das wäre doch ein ganz guter Zeitpunkt dieses Forum mal wieder um den Inhalt des Profanmanagers zu vervollständigen und auch diesem selbst wieder einen festen Downloadplatz zuzuweisen.

Neben der grafischen Darstellung der Verschachtelungen ist auch eine Optimierung eingebaut. Neben dem üblichen Entfernen von Kommentaren und Leerzeilen ist besonders die Variablenoptimierung hervorzuheben. Unter XProfan 11, das ich noch nutze, kann auch der Compiler so etwas übernehmen, wobei aber in der Hilfe steht dass diese Funktion experimentell ist und möglicherweise nicht immer funktioniert. Unter X3 wurde diese Funktion dann ganz entfernt, so steht es jedenfalls in der Hilfe. Auch sonst hat der Compiler den Nachteil dass kein Quellcode sondern nur eine prc ausgegeben wird, es kann also niemand sagen ob der Compiler richtig gearbeitet hat und wo die Fehler liegen könnten. GDO dürfte daher das bisher einzige Programm sein dass eine Variablenoptimierung anbietet. Eine Variablenoptimierung hat mehrere Vorteile, z.B. läuft das Programm dann schneller. Die Variablen werden in voller Länger im Kompilat gespeichert, dass heißt je kürzer der Name, desto schneller ist dieser von dem Runtime eingelesen und desto schneller kann das Runtime dann wieder andere Arbeit erledigen. Außerdem könnte eine solche Fehlermeldung der Exe den Anwender verunsichern: "Variable nicht deklariert: SystemFehler!, Zeile 1!". Nach einer Variablenoptimierung würde dann höchstens angezeigt: "Variable nicht deklariert: A!, Zeile 1!". Der Optimierer verkleinert daher nicht nur den Quellcode und dadurch auch das Kompilat und die Exe, sondern entfernt auch alle Informationen aus dem Kompilat die für die Ausführung dieses nicht unbedingt erforderlich sind. Zum Finden von solchen und anderen Variablenfehlern kann der Variablentester verwendet werden  [...]  , welcher rekursiv alle Prozeduren nach nicht declarierten Variablen durchsucht. Beide Exe-Dateien, auch die Sys\Pre.exe, müssen aber im Kompatibiltätsmodus für Windows XP arbeiten. Sonst werden noch alle Kommentare, Leerzeilen und nicht notwendige Leerzeichen entfernt. Das kann auch XPSE, das liegt aber gerade auf Eis. Außerdem ist XPSE vor allem ein Quellcodeveränderer und kein Optimierer.

Dazu als Beispiel die ersten Zeilen aus der Demo.prf der Grafik.inc  [...]  :
WindowStyle 530
Windowtitle "Demos mit der Grafik.inc"
Window (%Maxx - 350) / 2,(%Maxy - (375 + %CYCaption)) / 2 - 350,(375 + %CYCaption)
'
declare ListBox&,ListBox2&,a#,a$,a&,b&,c&,e%
Dim a#,1000

Daraus macht XPSE:
proc __cfEOP

    parameters exitcode&
    case %pcount=1 : end exitcode&
    end

endproc

declare LISTBOX&,LISTBOX2&,A#,A$,A&,B&,C&,E%
var __cfMode&=0
WINDOWSTYLE 530
WINDOWTITLE "Demos mit der Grafik.inc"
WINDOW (%MAXX - 350) / 2,(%MAXY - (375 + %CYCAPTION)) / 2 - 350,(375 + %CYCAPTION)
DIM A#,1000

Es wird weiterer Code eingefügt, der z.B. zu Kollisionen führen könnte wenn jemand mal so die Variable __cfMode& deklarieren möchte. Außerdem wird aus irgendeinem Grund die 5. Zeile nach ganz oben verschoben. Das verursacht z.B. Probleme mit SizeOf. Ein SizeOf(a&) in der 3. Zeile gibt im Originalprogramm -1 aus, im XPSEprogramm dagegen 4, so dass sich die Funktionsweise des Quellcodes verändert. GDO ist dagegen ein reiner Optimierer, der nichts hinzufügt, sondern nur alles unnötige entfernt. Dadurch muss es auch nicht ständig mit neuen Profanversionen weiterentwickelt werden sondern bleibt auch so funktionsfähig, mit wenigen Ausnahmen bei Änderungen zu den Deklarationsvorschriften. GDO macht aus der Demo das hier:
WINDOWSTYLE 530
WINDOWTITLE "Demos mit der Grafik.inc"
WINDOW (%MAXX-350)/2,(%MAXY-(375+%CYCAPTION))/2-350,(375+%CYCAPTION)
DECLARE D&,E&,A#,A$,A&,B&,C&,A%
DIM A#,1000

Wie man sieht werden alle Variablen verkürzt und mehr Leerzeichen entfernt als XPSE das tut. Die gesamten Quellcodes als Beispielergebnis (Demo.prf, Demo_OPTIMAL_.PRF und Demo.enh) sind hier als zweiter Download verfügbar.

Der Optimierer wurde von 2004 bis 2008 über fünf Jahre aktiv weiterentwickelt und sollte dementsprechend stabil laufen. Der Profanmanager (>100000 Zeilen Quellcode) wurde mit diesem Programm seit 2006 regelmäßig um einige MB verkleinert, Exe und Quellcode. Neu dazu gekommen sind dahingegen eine Unterstützung des Var-Befehls und eine Toleranz gegenüber postfixlosen Variablen. Das heißt Variablen die über den Var-Befehl declariert wurden, werden wie alle anderen Variablen auch optimiert. Postfixlose Variablen werden dagegen nur toleriert, also nicht optimiert und behalten ihre Namen. Eine automatische Optimierung der postfixlose Variablen wird es nicht geben, da dafür dass ganze Programm von Grund auf neu geschrieben werden müsste und Variablen ohne Postfix meiner Meinung nach die Lesbarkeit des Quellcodes verschlechtern, dass man immer zuerst eine Menge Typenbezeichnungen nachschlagen muss, so dass solche Variablen meiner Ansicht nach sowieso nur dort verwendet werden sollten wo dass absolut notwendig ist.

Die Neuerungen zur Unterstützung des Var-Befehls und zur Toleranz von postfixlosen Variablen könnten noch einige Bugs enthalten, da das ganz neue Erweiterungen sind und ich beide Optionen nicht nutze. Außerdem habe ich auch keinen Zugang zu der aktuellen X3 Version, es könnten daher theoretisch noch Inkompatibilitäten zu mir noch unbekannten Neuerungen bestehen. In diesem Fall wäre ein Hinweis dazu angebracht.

Mal eine Frage an die die sich damit auskennen: Habe ich dass mit der Lizenzerklärung richtig gemacht?

2.271 kB
Hochgeladen:30.05.2016
Ladeanzahl153
Herunterladen
3 kB
Hochgeladen:30.05.2016
Ladeanzahl152
Herunterladen
 
30.05.2016  
 




Timotheus
Kennt sich niemand mit Lizenzerklärungen aus?
Möchte niemand dieses Thema zu den Helfern verschieben?
Möchte niemand das Forum um den Inhalt des Profanmanagers wieder erweitern?
 
02.06.2016  
 




Michael
W.
Es ist Urlaubszeit, da liegen die meisten in der Sonne...
(und das ist ja sooo viel Text... )
 
Alle Sprachen
System: Windows 8/10, XProfan X4
Programmieren, das spannendste Detektivspiel der Welt.
05.06.2016  
 



Bei XPSE geht es eher darum, den Code auf Performance hin zu optimieren. Das verursacht nicht selten größeren Code. Vermutlich wäre GDO für Leute wie mich dann interessant als {$batch - Anweisung für nachträgliches Optimieren der ENH.
 
11.06.2016  
 




Timotheus
Update: GDO findet jetzt auch P2CPP Fehler:  [...] 
Update: GDO findet nun zu einer Exefehlerzeile die Quellcodefehlerzeile, auch für optimierte Dateien.
Update: GDO kann nun auch den vollständigen Titelfehlertext einer mit "..." gekürzten Fehler-Messagebox anzeigen.

Der Sommer ist jetzt vorbei, da könnte man dieses Thema doch nun einmal verschieben.

Michael W. (05.06.2016)
Es ist Urlaubszeit, da liegen die meisten in der Sonne...
(und das ist ja sooo viel Text... )


Timotheus (02.06.2016)
Kennt sich niemand mit Lizenzerklärungen aus?
Möchte niemand dieses Thema zu den Helfern verschieben?
Möchte niemand das Forum um den Inhalt des Profanmanagers wieder erweitern?
 
22.02.2017  
 




Timotheus
Meldung über Forumsbug: Der Downloadzähler friert ein, nachdem eine Datei erstmals geupdated wurde. Dadurch befindet sich der Downloadzähler von gdosfx.exe nach dem ersten Update nur noch konstant bei „6“ und der Downloadzähler vom Variablentester  [...]  ist seit dem ersten Update am 29.03.2010 bei „123“ eingefroren (kann man sich gut merken).
 
15.12.2020  
 



Ow, schaue ich mir an! Danke für die Meldung!

Ich kann schon mal sagen, dass gezählt wird und ("nur") das Bild nicht stimmt.
 
15.12.2020  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

7.788 Betrachtungen

Unbenanntvor 0 min.
Gast.081524.07.2024
Walter30.04.2023
Thomas24.04.2023
Normann Strübli29.01.2023
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

Timotheus (4x)
iF (2x)
Michael W. (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie