Einzelnen Beitrag anzeigen

Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#1

PlugIn Schnittstelle - DLL

  Alt 3. Jul 2006, 19:45
Hallo,
Zuerst muss ich mich entschuldigen, ich habe hier ein Problem mit Dlls und mit denen arbeite ich nur sehr selten und deshalb ist mein Wissen derer als sehr begrenzt einzustufen.
Also,
Wie sooft wenn ich etwas realisieren will, dass (zumindest für mich) mehr oder weniger neue "Technologien" erfordert baue ich es erstmal "im Reinen" in ein Testapp um dort das Potential austesten zu können. Deshalb ist mein Testapp auch teilweise mit Fragmenten bestückt die ich zum Testen benutzt habe und für das eigentliche Ziel unerheblich sind, das ganze hat etwas von einer Baustelle .

Zum Problem:
Ich habe hier eine Dll und ein Programm die Daten austauschen sollen(Die Dll soll einen Loader für spezifische Daten darstellen, welche immer erweitert werden(deshalb die Dll)). Die Dll "registriert" sich im Programm mit einem eigenen Typus("PlugIn") über den die Funktionen gesteuert werden.

Soweit, so gut, alles funktioniert, ich kann auch (testweise) Strings austauschen. Jedoch erfordert das Ziel den Austausch binärer Daten(in diesem Fall die Daten eines TBitmaps), und das will einach nicht funktionieren. Beide Funktionen funktionieren(angepasst auf Strings) anstandslos.

Es hat den anschein als würden einfach keine Daten ankommen.

Hier sind mal die Funktion und der Aufruf:
Aufruf:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if opendialog1.Execute then
  begin
    Image1.Picture.Bitmap.Assign(
      FPlugIns[0].PlugIn.Loadmage(Opendialog1.Filename));
    showmessage(IntToStr(Image1.Picture.Bitmap.Height)); //<-- Ergibt "0"!
  end;
end;
Funktion:
Delphi-Quellcode:
function TPlugIn01.Loadmage(Filename: String): TBitmap;
var
  Bit: TBitmap;
begin
  Bit := TBitmap.Create;
  try
    Bit.LoadFromFile(Filename);
    Result :=Bit;
    MessageBox(Parent, PChar(IntToStr(Bit.Width)), '', 0);
  finally
    Bit.Free;
  end;
end;

Ich bedanke mich schonmal hier für die Aufmerksamkeit und hoffe auf eure Hilfe
Gruß,
Max
Max
„If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
  Mit Zitat antworten Zitat