Announcement

Collapse
No announcement yet.

Welche Delphi Version??

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Welche Delphi Version??

    Hi,<br>schreib' grad' ne' Komponente unter D6. Soll aber auch für D5 funktionieren. Gibt allerdings immer'n bischen Probleme, zB. wegen der Teilung in rtl und vcl usw...<br>Ich hatte gedacht das man über Compilerdirektiven was reißen kann ( {$IF ...} ), allerdings weiß ich nicht wie man da die D-Version abfragen sollte?<P>Wäre nett wenn mir da einer mal was helfen könnte... oder noch besser eine Alternative kennt.<P>Tschüss, Euer Adonis

  • #2
    Du definierst etwas in der Art:

    // Delphi 5 hat VER130
    {$IFDEF VER130}
    {$DEFINE DELPHI5_AND_UP}
    {$ENDIF}

    // Delphi 6 hat VER140
    {$IFDEF VER140}
    {$DEFINE DELPHI5_AND_UP}
    {$DEFINE DELPHI6_AND_UP}
    {$ENDIF}

    für die Uses kannst Du dann folgendes verwenden (und sollte auch mit > D6 funktionieren), wenn Du obiges Define mit der D7/8...-Version ergänzt

    uses ...
    {$IFDEF DELPHI6_AND_UP}
    RTL, ...
    {$ELSE}
    Delphi5-Units
    {$ENDIF

    Comment


    • #3
      Wonderfull, vielen Dank Bernhar

      Comment


      • #4
        Hallo,<br>
        Ich arbeite bisher mit Delphi 5. Nun möchte meine Komponenten auch unter Delphi (6) 7 nutzen. Hierzu möchte ich den Abschnitt <b>requires</b> so anpassen, dass ich Ihn für jede meiner Versionen nutzen kann. Leider funktioniert hier die bedingte Compilierung nicht. Der Eintrag wurde geänder in:<p>
        <pre>
        {$IFDEF VER130}
        //Delphi 5
        requires
        vcl50,
        Vclx50,
        Vcldb50,
        Vclbde50;
        {$ELSE}
        // nicht Delphi5 => Delphi 6, 7 ...
        requires
        vcl,
        vclx,
        vcldb,
        bdertl,
        designide;
        {$ENDIF}
        <p></pre>
        Wird anschließend bei dem Package die Projekt-Optionen geändert und gespeichert, fehlen anschließend die Compiler-Bedingungen. M.a.W der Quelltext sieht dann wie folgt aus;<p>
        <pre>
        requires
        vcl50,
        Vclx50,
        Vcldb50,
        Vclbde50;

        requires
        vcl,
        vclx,
        vcldb,
        bdertl,
        designide;
        {$ENDIF}</pre>
        Was kann man das Problem lösen?<p>

        MFG Uw

        Comment


        • #5
          Besorg dir doch die Jedi Code Library (http://jcl.sourceforge.net oder als Teil der JVCL http://jvcl.sourceforge.net).<br>
          Die darin enthaltene Datei JEDI.INC enthaelt alle Definitionen die du brauchst.<br>
          Mach einfach ein Delphi 5 Package. Delphi 6 und 7 sollten das einfach umformen koennen

          Comment


          • #6
            @Uwe, deine Vorgehensweise ist unüblich. Baue für jede Delphi Version ein eigenes Package Project. Zudem verstehe ich nicht wie du auf VCL50 kommst. In requieres wird der interne=reale Packagename angegeben, nicht der Dateiname des Packages. (oder stehe ich auf der Leitung )

            Gruß Hage

            Comment


            • #7
              @Uwe: Delphi hat mit bedingter Compilierung keine Probleme. Aber zum Beispiel der Projektquelltext (und offensichtlich Package auch) reagiert recht allergisch auf bedingte Compiler-Anweisungen. Delphi muss den Quelltext selbst beieinflussen und scheitert einfach an dieser Hürde. In dem Falle musst Du zuvor halt den Quelltext sichern und nachher wiederherstellen. Die Tipps von Robert und Hagen sind aber vermutlich eh der bessere Weg.<p>
              Schöne Grüße, Mario Noac
              Schöne Grüße, Mario

              Comment


              • #8
                Hallo Mario,<p>
                Danke, für Deinen Beitrag. Es ist in der Tat so, dass ich im Übergang von Delphi 5 nach höher einen einfachen Weg für die Zurücksetzung der Änderung über alle Projekte (ca. 100) suche. Alle Projekte werden über dcc32 in einer Batch compiliert. Erst durch eingehende Tests der Qualitätssicherung wird die erfolgreiche Umstellung festgestellt. Solange muß die Zurücksetzung gewährleistet bleiben.<p>
                Die bedingte Compilierung funktioniert auch, nur dürfen die Projektoptionen nicht mehr geändert werden! Denn anschließend ist der Quelltext zerschossen.<p>
                MFG Uw

                Comment

                Working...
                X