Einzelnen Beitrag anzeigen

Generalissimo

Registriert seit: 28. Aug 2003
187 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Dynamisch DLLs einbinden & Objekte - Pointer-Problem

  Alt 17. Feb 2004, 00:51
Zitat:
Ich will ja auch nicht die Objekte aus der DLL holen, ich will nur der DLL sagen "mach mal ein Objekt, hier hast du die parameter, gib mir die referenz als pointer zurück"...
das klang vorhins ganz anders


Zitat:
Kann ich überhaupt komplexe Objekte in die DLL übergeben / herausbekommen?
probier mal das:

Delphi-Quellcode:
// Routine in der DLL

(...)
var Fibu : TFibustamm;
(...)

function CreateEnvironment(aTransaction : TIBTransaction; aStammdaten : TStammdaten) :TFibuStamm;
//man kann doch die Objekte direkt übergeben (aTransaction:[b]TIBTransaction[/b]). Sie werden doch sowieso als Pointer übergeben, soviel ich weiss
begin

  Fibu := TAddison.Create(nil, aStammdaten, aTransaction);
  Result := Fibu;

end;
Delphi-Quellcode:
// Ausschnitt Hauptprogramm
         uses Objekt_Unit_TFibustamm;

         type
          TCreateEnv = function (aTransaction : TIBTransaction; aStammdaten : TStammdaten) :TFibuStamm;

         private
             Fibu:TFibuStamm;
             CreateEnv:TCreateEnv;

          CreateEnv := GetProcAddress(FibuDLLHandle, PChar('CreateEnvironment'));

          if not Assigned(CreateEnv) then
            begin
              ManBuchhaltung.Enabled := false;
              ParadoxFound := false;
              FrmMessageWindow.MessageAn('Fibu-Datenbank nicht aktiv');
            end
          else
            begin
              
              Fibu := CreateEnv(DM.IBT, Stammdaten);
              
              
            end;
PS: normalerweise entwickelt man in so einem Fall eine Three-tier-Architektur in der im Application-Server der DB-
Zugriff gekapselt ist. Dort meist der Einsatz von COM/DCOM. Dort ist ADO schön, da dort das Recordset in Binärform
übertragen wird und Windows alles umwandelt. Oh je werde Off-Topic
  Mit Zitat antworten Zitat