![]() |
Re: 3 Fragen zu DLLs als Resource Datei für Text und Bilder
Hallo,
@scp so in der Art hatte ich es ja auch am Anfang. Nur befindet sich in der dll 'ne absolut Optionale Funktion die wenn die dll sich im Programm-Verzeichnis befindet bein Programmstart ausgeführt wird und der Vorschlag von OLI_T klingt irgendwie gut. Im grunde ist es relativ egal wo die Funktionen sich befinden aber hier ist es jetzt zu einer Frage der Ehre geworden. Die Lesefunktion muß aus der dll exportiert werden weil ich es jetzt so angefanen habe, irgendwie muß es funktionieren und es gilt jetzt herauszufinden wo bei mir das Problem ist. Ich sehe das ganze eher als Vorbereitung auf eine weiterführende Benutzung von dll-Dateien. @Luckie
Delphi-Quellcode:
Ich habe HInstance als Handle angegeben, klingt irgendwie logisch. Dummerweise bekomme ich eine Fehlermeldung bein Ausführen des Progs:
function GetImage(Index: Integer): TImage; stdcall;
var LoadPic: String; TempJpeg:TJpegImage; ResStream: TResourceStream; begin Result := nil; LoadPic := 'Bild' + IntToStr(Index); ResStream := TResourceStream.Create(HInstance, LoadPic, 'JPEG'); TempJpeg := TJpegImage.Create; try TempJpeg.LoadFromStream(ResStream); Result.Picture.Bitmap.Assign(TempJpeg); finally ... Access violation at address 01301805 in Module 'MYDLL.DLL'. Read of address FFFFFFFF. Ich denke mal das es sich hierbei um
Delphi-Quellcode:
handeln kann.
TempJpeg.LoadFromStream(ResStream);
Wie kann ich ein Tracing in der dll bewerkstelligen ? Oder hat jemand eine Idee was hier falsch sein könnte ? Gruß, Karsten |
Re: 3 Fragen zu DLLs als Resource Datei für Text und Bilder
Zitat:
Aber noch etwas zu meiner Variante: Wenn du genauer hinsiehst, die Funktion wird ja nur aufgerufen, wenn die DLL vorhanden ist und die Funktion auch. Ansonsten würde nichts passeieren, auch kein Fehler. Deshalb kann die DLL auch optional sein. |
Re: 3 Fragen zu DLLs als Resource Datei für Text und Bilder
@scp
natuerlich hast Du mit Deiner Aussage recht, es gibt halt diese 2 Wege. Nur waehre die komplette Auslagerung in die dll mal 'ne klasse Uebung fuer weitere dll-vorhaben. Ich denke sogar das sich in meinem aktuellen Fall der Code eher verdoppelt wenn ich die Funktionen in die dll auslagere. Es ist halt 'ne Frage der Ehre. Sollte ich bis Ende der Woche meine dll nicht 100 %ig am Laufen haben, dann werde ich die Funktionen wieder in das Hauptprogramm verlagern und dann hat Samurei keine Ehre mehr :oops: . Aber Samurei kann auch nicht mit der staendig auftretenden Fehlermeldung leben. Gruss, Karsten |
Re: 3 Fragen zu DLLs als Resource Datei für Text und Bilder
Hallo,
ich kämpfe noch. Innerhalb der dll habe ich ja die Funktion GetImage definiert. Da ich nicht weiß wie ich ein Tracing innerhalb der dll bewerkstellige habe ich einfach mehrere ShowMessage eingefügt.
Code:
Beim durchlaufen des codes habe ich festgestellt das die Zeile
function GetImage(Index: Integer): TImage; stdcall;
... Result := nil; LoadPic := 'Bild' + IntToStr(Index); ShowMessage(LoadPic); <-- Ist in der Resource Datei, kann also nicht das Problem sein ResStream := TResourceStream.Create(HInstance, LoadPic, 'JPEG'); try TempJpeg.LoadFromStream(ResStream); ShowMessage('Loaded from Stream'); Result.Picture.Bitmap.Assign(TempJpeg); ShowMessage('Assigned to picture'); ...
Code:
die Fehlermeldung liefert.
Result.Picture.Bitmap.Assign(TempJpeg);
Was ich jetzt bisher noch nicht weiß ist ob das TempJpeg.LoadFromStream(ResStream); ins Leere greift und in TempJpeg kein gültiges Bild geladen wurde oder ob es wirklich Result.Picture.Bitmap.Assign(TempJpeg); ist was den Fehler verursacht. Access violation at address 01301805 in Module 'MYDLL.DLL'. Read of address FFFFFFFF. Hat hier vieleicht noch jemand eine Idee wie man das Problem noch weiter eingrenzen kann ? Danke, Karsten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz