Announcement

Collapse
No announcement yet.

c++-objekt in delphi übernehmen

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

  • c++-objekt in delphi übernehmen

    hallo,

    ich soll herausfinden ob man ein c++ (c++builder 5 von borland) in delphi übernehmen kann und wenn ja wie! (habe keine C-Erfahrung!)

    gruß

    markus
    Herzliche Grüße

    Markus Lemcke
    barrierefreies Webdesign

  • #2
    Hallo Markus,<p>
    sehe ich das richtig, Du möchtest einen C++ Quelltext (Objekt) in Delphi einsetzten? Dafür muss man den Quelltext übersetzten

    Comment


    • #3
      geht das wirklich nicht anders?
      wir haben halt ein c++ objekt und das brauchen wir in delphi!!

      gruß

      marku
      Herzliche Grüße

      Markus Lemcke
      barrierefreies Webdesign

      Comment


      • #4
        Unmoeglich, C++ und Delphi-Objekte sind inkompatibel. Beide Dinger heissen "Objekt", sind aber deutlich unterschiedlich in ihren Faehigkeiten und daher inkompatibel. Besonders weil C++ Objekte leistungsfaehiger sind. Stichwoerter: Operatoren, Polymorphie, Templates

        Comment


        • #5
          @Robert, ich meine das die C Objecte als solches nicht leistungsfähigere OOP Objecte sind als die in PASCAL. Die Operatorenoverloading und Templates sind reine Compiler-Leistungen bzw. PreProzessor Arbeiten. Polymorphie geht in C genauso wie in PASCAL, da gibts eigentlich keinen Unterschied da gerade die Polymorphie eine Grundeigenschaft aller Object Implementierungen sind.
          Das was C voraus hat sind die Unions bzw. deren Anwendung, da auch Delphi im gewissen Sinne über die Nutzung von Interfaces "Unions" unterstützt. Die großen Unterschiede meiner Meinung nach liegen in den Details, und sind meistens Features des Compilers bzw. Preprozessors. Der Nachteil beider liegt aber in dem extrem unterschiedlichen compilierungsgeschwindigkeiten zum einfachen PASCAL Compiler.

          Gruß Hage

          Comment


          • #6
            ich habe einen ausdruck von der borlandseite, da wird das aber leider nur an hand einer funktion erklärt und nicht anhand eines objektes!

            gruß

            marku
            Herzliche Grüße

            Markus Lemcke
            barrierefreies Webdesign

            Comment


            • #7
              @Hagen, auf jeden Fall haben die Unterschiede Auswirkungen auf die Objektimplementation.<br>
              Da gibt es auch noch das nette Fature eines static Elementes im C++-Objekt. Das ist dann in allen Instanzen des Objektes zugreifbar, aber nur ein einziges Element

              Comment


              • #8
                he, würdet ihr mal. dem dummen markus erklären um was es hier geht und ob ihr eine lösung für mein problem habt!!

                gruß

                marku
                Herzliche Grüße

                Markus Lemcke
                barrierefreies Webdesign

                Comment


                • #9
                  hier jungs!! habe was entdeckt!!
                  http://www.borland.com/borlandcpp/papers/bc360/

                  gruß

                  marku
                  Herzliche Grüße

                  Markus Lemcke
                  barrierefreies Webdesign

                  Comment


                  • #10
                    Hi

                    @markus, sehr guter link <br>
                    @Robert, der link bestätigt meine Aussage und es ist garnichtmal schwer. Class-Static's sind auch in Delphi möglich. Definiere eine property mit einer read/write methode. In diesen Methoden greiffst Du auf eine Unit-lokale Variable zu. Nun nutzen alle Objecte dieses Types die gleiche Variable. Im Grunde passiert technisch gesehen GENAU das gleiche wie im C++ Object, auch dort wird diese Variable im globalen Datensegment gespeichert und in den Objecten nur "durchgereicht". Ok, der Weg WIE man in C++ solche Members deklariert ist viel viel eleganter, das gebe ich zu.

                    Grundsätzlich kann jede Sprache die einen einigermaßem guten inline Assembler besitzt auf ALLES zugreifen und ALLES unterstützen, selbst in guten BASIC Dialekten lässt sich sowas umsetzen.

                    C/C++ hat eben nur den Vorteil einer sehr guten Preprozessor/Compiler Engine. Die ist so gut, daß man mit ein bischen Aufwand rein theoretisch in C++ in PASCAL-Syntax coden könnte wenn man die entsprechenden Macros/Templates entwickelt.

                    Gruß Hage

                    Comment


                    • #11
                      hi hagen,

                      ich finde es toll, dass du es gar nicht shwer findest! aber ich verstehe noch immer bahnhof! kannst du mal dem dummen markus erklären, was in c und was in delphi zu tun ist um auf ein c-objekt in delphi zuzugeifen?

                      gruß

                      marku
                      Herzliche Grüße

                      Markus Lemcke
                      barrierefreies Webdesign

                      Comment


                      • #12
                        Ein Object ist immer ein stink normaler record. Wir benötigen also bestimmte Informationen wie Datenalignment und die notwendigen "versteckten" Felder des Objectes wie z.B. VMT Zeiger.

                        <pre>

                        type
                        TMyObject = class(TObject)
                        FData: Cardinal;
                        procedure DoThis;
                        end;<br>

                        PMyObjectRecord = ^TMyObjectRecord;
                        TMyObjectRecord = packed record
                        FClassType: TClass;
                        FData: Cardinal;
                        end;<br>

                        procedure TMyObject.DoThis;
                        begin
                        Inc(FData);
                        end;<br>

                        procedure DoThis(Self: PMyObjectRecord);
                        begin
                        Inc(Self.FData);
                        end;<br>

                        var
                        O: TMyObject;
                        R: PMyObjectRecord;
                        begin
                        O := TMyObject.Create;
                        O.FData := 15;<br>
                        R := O;<br>
                        R.FData := 16;<br>
                        R.FClassType := TMyObject;
                        O.DoThis;<br>
                        DoThis(R);<br>
                        DoThis(Pointer(O));<br>
                        O.Free;
                        end;

                        </pre>

                        Das Object TMyObject ist identisch zum TMyObjectRecord und die Methode TMyObject.DoThis ist identisch zur normalen procedure DoThis.<br>
                        Ist nun die Struktur der Objecte bekannt (der generelle Aufbau der C++ Objecte ist identisch zum PASCAL) kann so wie oben gezeigt auch auf jede beliebige Datenstruktur, eben auch Objecte, zugegriffen werden.

                        Gruß Hage

                        Comment


                        • #13
                          hallo hagen du formulierst das so prima:<br>
                          <b>Ist nun die Struktur der Objecte bekannt</b><br>
                          das will ich ja herausfinden! <b>wie</b> muss ich es in C<br>
                          anstellen, dass das objekt <b>delphi</b> bekannt ist!!

                          gruß

                          marku
                          Herzliche Grüße

                          Markus Lemcke
                          barrierefreies Webdesign

                          Comment

                          Working...
                          X