Projekt kompatibel zu Borland Builder 3 und Builder XE



  • Hallöle,

    Hätte hier was zum knobeln.

    Ich soll ein relativ altes Projekt, aufgebaut mit Borland Builder 3, auf Borland Builder XE portieren

    ABER

    das Projekt MUSS danach immer noch mit dem alten Compiler verwendbar sein.

    Idee war jetzt an den Stellen wo es in einem der beiden Compiler hakt, predefines reinzusetzen wie z.B.

    # if (__BORLANDC__ == 0x0531)
    //load old form
    # elif (__BORLANDC__ == 0x644)
    //load new form
    # else
    //
    # endif
    

    Das funktioniert auch mittelprüchtig bis zu dem Zeitpunkt wo es um die GUI-Elemente geht.

    Forms die einmal vom Builder XE angefasst wurden, werden aktualisiert, die alten Parametertypen durch neue ersetzt und werfen beim Builder 3 natürlich "Error Reading Form"-Fehler.

    Hat jemand eine kreative Idee wie ich weitermachen kann?

    Kann ich z.B. zwei Sets von dfm-Dateien anlegen und vielleicht per predefines das einzulesende Form festlegen?

    Oder muss ich wirklich darauf setzen zwei Projekte parallel zu führen?
    😮
    Thanks in advance,
    Sharkbyte



  • Also ich habe die gleiche Frage im Borland-Forum gestellt und folgende Antwort erhalten

    To share DFMs across versions, I would switch the DFMs to text-mode (I don't
    remember if BCB3 even supported that yet, though) to avoid any binary incompatibilities,
    and then ignore any errors that arise when opening a newer DFM in an older
    version, unless you manually (or via a third-party tool) strip out the offending
    properties beforehand that do not exist in the older version.

    Hat da jemand Erfahrung mit?
    Die Option für den Textmode habe ich natürlich nicht finden können und ein manuelles Entfernen aller Tags (Minimum jedes Label und jeden Button) kommt aufwandstechnisch nicht in Frage.

    Ich hab so das Gefühl das wird ne richtig lustige Geschichte



  • Also BCB3 ist bei mir schon ewig her, wie ich gerade feststelle 13 Jahre 🙄 .

    Ich meine mich schwach zu erinnern, dass die Option mit den Text-DFMs später kam.

    Ob man wirklich brauchbar VCL-Code zwischen einer Ansi- und einer Unicode-Version des Builders teilen kann, wage ich mal zu bezweifeln.

    Nur im Non-GUI Bereich habe ich da brauchbare Erfahrungen. Z.B. mit Code für die Datenübertragung über die serielle Schnittstelle, den ich ohne große Änderungen in den Buildern 4,5,6,2007,2010,XE und XE2 verwendet habe. Aber außer AnsiString und TStringList tauchen da nicht viele VCL-Typen auf.



  • Ja, hab mich gerade erkundigt, die Funktion gibt es erst ab Builder 5.

    Der Non-Gui-Bereich ist an sich kein Problem, nur der Rest halt.
    Da hier auch kein MFC oder sonst ein Pattern eingehalten wurde, freu ich mich schon auf Stunden voller Verzweifelung 🙂



  • Sharkbyte schrieb:

    Ja, hab mich gerade erkundigt, die Funktion gibt es erst ab Builder 5.

    Ha, das wollte ich erst schreiben, war mir aber nicht mehr sicher.

    Dem Vorschlag aus dem Emba-Forum, zwei Projekte in zwei Verzeichnissen zu verwenden, um auf die ifdefs zu verzichten, stimme ich zu. Eventuell kann man dann ein Tool wie WinMerge verwenden, um seine Änderungen auf die jeweils andere Seite zu bringen.



  • Joa, werden es dann wohl so machen müssen.

    Thx für die Hilfe 🙂



  • In so einem Fall lohnt sich die strikte Einhaltung des Document-View-Prinzips. Man muss also alle Datenhaltung sowie Berechnungsfunktionalität in unabhängigen Code auslagern (am besten eignen libs) und die Ansicht auf reine Views beschränken.



  • Sobald das Budget freigegeben ist für eine Aufbereitung des Projekts werden wir das auch tun, bis dahin versuche ich mich aber an einer Notlösung um wenigstens vom Builder 3 loszukommen.

    In dem Editor von dem Ding kann man nicht mal scrollen Oo


Anmelden zum Antworten