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