Thema: Delphi DLL Aufruf aus EXE

Einzelnen Beitrag anzeigen

Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#9

Re: DLL Aufruf aus EXE

  Alt 6. Nov 2009, 10:55
Du benutzt "String", welcher IMO ziemlicher Blödsinn ist, wenn man DLLs benutzt. Denn Strings sind Delphi-features und dann auch noch verwaltet vom MemoryManager.
Was schnell zu Fiesimatenten führt.
Entweder du nimmst PWideChar, oder WideString, oder du bleibst beim alten ANSI-Krams und nimmst PChar.

Ungeachtet dessen...
Falls du auch nur irgendwo in der DLL die globale Variable deines Forms hernimmst, die Delphi hirnamputierterweise jedesmal anlegt, solltest du dich nicht wundern wenn es irgendwo irgendwann knallt.
Nochmal: Hast du auch nur irgendwo code, der "Form1." enthält, dann ist das schlicht und ergreifend falsch.

So sollte es einfach gehen, solange du in dem Form nix machst was du zufrüh freigibst:
Delphi-Quellcode:
function ShowFormAdministration(const sUser, sEnvironment : WideString) : Integer; stdcall; export;
...
implementation
...
function ShowFormAdministration(const sUser, sEnvironment : WideString) : Integer;
var
  yourForm : TYourForm;
begin
  yourForm := TYourForm.Create(nil);
  try
    yourForm.UserName := sUser;
    yourForm.Environment := sEnvironment;

    result := yourForm.ShowModal();
  finally
    yourForm.Free();
  end;
end;
Edit:
Auwaia, du zeigst das Form nicht modal, aber ohne etwas an die Echse zu übergeben, mit der es Geschlossen und/oder Freigegeben werden kann?
Marcos Vorschlag mit der CloseAction trifft es schon auf den Kopf.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat