Italia
SDK-Helfer/ Tools

GDO

 

Timotheus
GDO steht per Grafische Darstellung und Optimierung. Dieses Programm hieß früher Mc.exe, per 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 per 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 per 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 Foro zum Download disponibile  [...]  , 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 disponibile  [...]  . Das wäre doch ein ganz guter Zeitpunkt dieses Foro 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 solito 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 Aiuto 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 Aiuto. 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 potrebbe daher das bisher einzige Programm sein dass eine Variablenoptimierung anbietet. Eine Variablenoptimierung hat mehrere Vorteile, z.B. corre das Programm dann schneller. Die Variablen werden in voller Länger im Kompilat gespeichert, dass è 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 potuto 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 per 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-File, auch die Sys\Pre.exe, müssen aber im Kompatibiltätsmodus per 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 potuto 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 disponibile.

Der Optimierer wurde von 2004 bis 2008 circa 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 opposto postfixlosen Variablen. Das è Variablen die circa 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
Downloadcounter147
Download
3 kB
Hochgeladen:30.05.2016
Downloadcounter143
Download
 
30.05.2016  
 




Timotheus
Kennt sich niemand mit Lizenzerklärungen aus?
Möchte niemand dieses Thema zu den Helfern verschieben?
Möchte niemand das Foro 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 per Leute wie mich dann interessant als {$batch - Anweisung per 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 per optimierte File.
Update: GDO kann nun auch den vollständigen Titelfehlertext einer mit "..." gekürzten Fehler-Messagebox Mostra.

Der Sommer ist jetzt vorbei, da potuto 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 Foro um den Inhalt des Profanmanagers wieder erweitern?
 
22.02.2017  
 




Timotheus
Meldung circa Forumsbug: Der Downloadzähler friert ein, nachdem eine File erstmals geupdated wurde. Dadurch è 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 per die Meldung!

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



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

7.615 Views

Untitledvor 0 min.
Gast.081524.07.2024
Walter30.04.2023
Thomas24.04.2023
Normann Strübli29.01.2023
Di più...

Themeninformationen

Dieses Thema hat 3 subscriber:

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


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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