Vom Versuch, XProfan von Delphi nach Free Pascal zu übertragen (Teil 1)

  • Hallo,

    als ich mir die aktuelle Version von Lazarus mit Free Pascal 2.2.4 (beides Open Source Software) installierte, kam ich auf die verrückte Idee, zu versuchen, damit den XProfan-Interpreter zu kompilieren. Wenn das ginge, könnte man eventuell ja den Source des Interpreters auch als Open Source frei geben ...

    Den Compiler auf möglichst große Delphi Kompatibilität eingestellt und los geht's ... bis zur ersten Fehlermeldung.

    So 100%ig kompatibel ist es denn doch nicht. Ein Beispiel: Bei einigen API-Funktionen, wo Delphi eine Struktur per Referenz erwartet (also die Struktur selbst als Parameter geschrieben werden muss), erwartet Free Pascal einen Zeiger auf diese Struktur. Im Einzelfall kein Akt, da es meist reicht ein @ vor den Namen zu setzen, aber in der Masse doch eher mühsam. Die FTP-Bibliotheken wollen überhaupt nicht, also wird FTP erst mal auskommentiert. Die OBJ-Dateien der PNG-Bibliothek gehen auch nicht. Ok, PNG wird zurück gestellt. Das gleiche Schicksal ereilt noch das Speichern als JPG.

    Viele Stunden und einige Fallstricke später: PROFAN.EXE erfolgreich erzeugt. Und was für eine PROFAN.EXE: Trotz Angabe des Release-Modus ohne Debuginfos ist die Datei stolze 14 MB groß! Sei's drum! Beim Aufruf erscheint der Dateiauswahl Dialog und nach Auswahl einer PRF-Datei ... stürzt das Programm ab. Der Versuch mit anderen Dateien zeigt: Einige kleine Test-Programme, die nur aus CLS, PRINT, WAIT, etc bestehen, laufen wie erwartet, größere Programme mit Zugriff auf Variablen rauchen einfach ab.

    Ok, sehr aufbauend war dieser Ausflug vorerst nicht, aber nach dem Release von XProfan 12 werde ich mich der Sache noch mal annehmen. Vielleicht gibt es ja irgendwann den XProfan-Interpreter als Open Source mit Quellcode ... (Ok, einige Sachen, wie z.B. die dBase-Unterstützung müssen dann aus lizenzrechtlichen Gründen außen vor bleiben. Hier hatte ich ein Softwarepaket hinzugekauft, das ich natürlich nicht weitergeben darf.)

    Aber jetzt kümmere ich mich erst mal wieder um XProfan 12. Die nächste Subscriptionsversion soll noch diese Woche fertig werden.

    Gruß
    Roland

    AMD Ryzen 5 5600U with Radeon Graphics 2,3 GHz / 32 GB RAM / 500 + 2000 GB SSD / Windows 11 - XProfan X4a

    Als Backup: MD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4

    http://www.xprofan.de

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress, WoltLab & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

    Wenn du Fragen hast, kannst du dich gerne jederzeit an @Maximilian Rupp wenden

    Hinweis:

  • Ein kurzer Nachtrag:

    Die Verschlüsselung der Variablennamen zur Laufzeit war das Problem. Free Pascal kommt mit der entsprechenden Assembler-Routine nicht klar. Da dieses Feature im Interpreter eh' kaum Sinn macht und eigentlich dort nur vorhanden ist, weil zum großen Teil beim Variablenzugriff dieselben Routinen wie in der Runtime verwandt werden, kann man es im Interpreter auch weglassen.

    Jetzt kann auch das Sternenhimmel-Programm laufen lassen, das ich gerne zum Tempovergleich nutze. Hier auf dem Rechner in der Delphiversion von XProfan 12ß dauert es 1,4s und in der Free Pascal Version sind es 1,8s. Ok, dass ein freier Compiler nicht an Borland herankommt, war zu erwarten. Von daher finde ich das Tempo sogar recht beachtlich!

    (Ein früher Test vor einigen Jahren mit einem freien Pascal-Compiler - ich glaube, es war seinerzeit Virtual Pascal - hatte einen Tempounterschied von 1:10 ergeben.)

    Gruß
    Roland

    AMD Ryzen 5 5600U with Radeon Graphics 2,3 GHz / 32 GB RAM / 500 + 2000 GB SSD / Windows 11 - XProfan X4a

    Als Backup: MD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4

    http://www.xprofan.de

  • Nach meinen Infos, sollte durch deaktivieren unnötiger Libs auch die Dateigröße nicht mehr so extrem vom Original abweichen.
    Ich denke mir, wenn man sich da mal eingearbeitet hat, kennt man auch die
    Kniffe, so das die Differenzen gegen 0 laufen.
    In den Standardeinstellungen entstehen wirklich sehr große Exen.

    Auf jedenfall wäre FreePascal oder Lazarus ein gangbarer Weg um vielleicht mal die Unicode und x64 Unterstützung in Angriff zu nehmen ;)
    (für XProfan 13 oder 14?)

    Gruß
    Thomas

  • So,
    zwischendurch konnte ich ab und an meine Neugier nicht zügeln und habe an der Lazarus-Variante des XProfan-Interpreters weiter gebastelt:
    - JPEG und PNG gehen nun mit den Lazarus-Bibliotheken, auch speichern
    - FTP will immer noch nicht: ist kompilierbar, aber stürzt ab
    - Die OLE-Routinen zum Bilderladen (also mit GIF, ICO, etc.) lassen sich kompilieren, aber stürzen ab
    Ich denke mal XProfanFree 12 (bzw. X2) wird mit Lazarus erstellt werden und später wird dann der komplette Quellcode in irgendeiner Form freigegeben werden, sodass jeder mit Lazarus diesen kompilieren kann und die Möglichkeit hat, XProfanFree zu erweitern. Und wenn diese Erweiterungen auch der Allgemeinheit nutzen können, finden diese möglicherweise den Weg in die Kaufversion mit Compiler (zumindest, wenn sie sich nach Delphi übertragen lassen).

    Gruß
    Roland

    AMD Ryzen 5 5600U with Radeon Graphics 2,3 GHz / 32 GB RAM / 500 + 2000 GB SSD / Windows 11 - XProfan X4a

    Als Backup: MD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4

    http://www.xprofan.de

  • Da ich Zugang zu einem 64-Bit Rechner hatte, habe ich mal spaßeshalber Lazarus für 64-Bit installiert und erst mal (fast) ohne jede Code-Änderung eine 64-Bit-Version des Interpreters erzeugt. Es hat - nach ein paar Anpassungen - funktioniert. Wer will, kann sie ja ausprobieren:

    http://www.xprofan.de/download/profan64.zip

    WICHTIG: Es gibt keinerlei Support und vor der Auslieferung von XProfan X2 werde ich mich nicht weiter damit befassen können, zumal auf meinem Entwicklungsrechner "nur" Windows 7 mit 32-Bit läuft.

    Gruß
    Roland

    AMD Ryzen 5 5600U with Radeon Graphics 2,3 GHz / 32 GB RAM / 500 + 2000 GB SSD / Windows 11 - XProfan X4a

    Als Backup: MD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4

    http://www.xprofan.de

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!