Announcement

Collapse
No announcement yet.

Objekt in dll

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

  • Objekt in dll

    Hallo,

    wie lege ich ein Objekt in einer dll an?
    dort gibt es doch kein <b>interface</b> und <b>implementation</b> oder doch?

    Gruß

    Markus
    Herzliche Grüße

    Markus Lemcke
    barrierefreies Webdesign

  • #2
    Hallo Markus,

    was genau willst Du mit dem Objekt machen? Soll dieses innerhalb der DLL verwendet werden, oder soll dieses nach außen hin bekannt gemacht werden?

    Gruß, Hans

    Comment


    • #3
      hi hans,

      es ist ein ergebnis von einer funktion!
      vielleicht kann ich es aber auch als record anlegen.
      was meinst du?

      Gruß

      Marku
      Herzliche Grüße

      Markus Lemcke
      barrierefreies Webdesign

      Comment


      • #4
        Hallo Markus,

        wenn ich Dich richtig verstanden habe, dann hast Du in der DLL ein Funktion, welche ein Objekt zurückliefern soll, also in etwa sowas:

        function GetMyObject: TMyObject;

        Diese Funktion wird nach außen exportiert.

        In der Funktion brauchts Du nur das gewünschte Objekt erzeugen:

        function GetMyObject: TMyObject;
        begin
        Result := TMyObject.Create;
        end;

        Sollte das Objekt bereits bestehen, dann kannst Du dieses einfach ohne Create zurückliefern.

        function GetMyObject: TMyObject;
        begin
        Result := MyObject;
        end;

        Das Objekt kannst Du in der DLL im INITIALIZATION-Teil erzeugen, im FINIALIZATION-Teil wieder freigeben:

        Bsp:
        Initialization
        MyObject := TMyObject.Create;

        Finialization
        MyObject.Free;

        Grundsätzlich würde ich auf jeden Fall lieber mit Objekten, als mit Rekords arbeiten. Es muss einfach sichergestellt sein, dass keiner mehr auf das Objekt zugreift, wenn die DLL freigeben wurde.

        Gruß, Hans

        Comment


        • #5
          hi hans,

          "Hallo Markus,

          wenn ich Dich richtig verstanden habe, dann hast Du in der DLL ein Funktion, welche ein Objekt zurückliefern soll, also in etwa sowas:

          function GetMyObject: TMyObject;

          Diese Funktion wird nach außen exportiert."

          EXAKT!!!

          wie definiert man diese teile:
          INITIALIZATION-Teil erzeugen, im FINIALIZATION-Teil

          habe noch nie ne dll programmiert!

          gruß und danke!

          Marku
          Herzliche Grüße

          Markus Lemcke
          barrierefreies Webdesign

          Comment


          • #6
            Hallo Markus,

            die *.DPR könnte folgendermaßen aussehen:

            library MyDll;

            uses
            SysUtils,
            Classes,
            MyObject in 'MyObject.pas';

            {$R *.RES}

            function GetMyObject: TMyObject;
            begin
            Result := MyIntObject;
            end;

            exports
            GetMyObject name 'GetMyObject';

            begin
            end.

            Das eigentliche Objekt ist in der Unit MyObject versteckt, welche folgendermaßen aussieht:

            // Unit mit der Klasse -----------------------------------------------
            unit MyObject;

            interface

            type
            TMyObject = class(TObject)
            end;

            var
            MyIntObject: TMyObject;

            implementation

            initialization

            MyIntObject := TMyObject.Create;

            finalization

            MyIntObject.Free;

            end.

            Damit sollte es klappen. Probier es einfach mal aus.

            Ich bin mir jedoch noch immer nicht ganz sicher, was Du eigentlich vor hast, hoffe jedoch Du kommst damit weiter.

            Gruß, Hans

            Comment


            • #7
              ShareMem nicht vergessen in Applikation und DLL

              Comment


              • #8
                okay, danke ihr beide
                Herzliche Grüße

                Markus Lemcke
                barrierefreies Webdesign

                Comment

                Working...
                X