![]() |
Resourcen DLL's
Hi,
ich habe mir das Tutorial von Darty durchgelesen wie man Ressourcen DLL's erstellt ( ![]() Danke Luki :) |
AW: Resourcen DLL's
Überleg doch mal selber...
Wenn das in der .rc Datei steht
Code:
dann soll der Ressource-Compiler das ja in eine .res Datei übersetzen.
BILD1 JPEG "Borland.jpg"
BILD2 JPEG "Delphi.jpg" BILD3 JPEG "Foto.jpg" Wie weiß der Ressource-Compiler jetzt, wie er diese Dateien finden soll? (Kleiner Tip: Zaubern kann der nicht) ;) |
AW: Resourcen DLL's
Ich denke niemand kann zaubern ;) :D Nur versteht man unter Ressourcen-Compiler der Compiler der die DLL erstellt oder gibt es da noch etwas anderes das so etwas erstellt?
|
AW: Resourcen DLL's
Zitat:
![]() |
AW: Resourcen DLL's
Danke hat mich jetzt schon ein Stück weiter gebracht. Ich habe nämlich bei Google einen Link zu Embarcadero Wiki (Weiß nicht genau wie das heißt ;) ) wo erklärt wird wo man den Ressourcen-Compiler finden kann. Nur möchte ich jetzt Delphi oder meine Testanwendung kaputt machen in dem ich in 'Projekt -> Optionen -> Ressourcen-Compiler' dort irgendwas um stelle da ich nichts gefunden habe wie ich die .rc Datei mit einbinde.. Ich glaube ich stelle mich dappischer an als das die Sache schwer ist oder?
|
AW: Resourcen DLL's
Hast du den Menüpunkt "Projekt\Ressourcen und Bilder..." nicht?
Da kannst du dir die Ressourcen zusammenklicken ;) |
AW: Resourcen DLL's
Doch habe ich. Und in meinem neuen DLL Projekt dort dann einfügen? Wenn es wirklich so einfach war ist doch dann irgendwas falsch (Matheunterricht lehrt uns das immer wieder :D)?
|
AW: Resourcen DLL's
Zitat:
Und warum soll es auch kompliziert sein? :gruebel: |
AW: Resourcen DLL's
Keine Ahnung.. Nur weil dort bei dem Tutorial diese Text Datei erstellt werden muss und.. und.. und.. Deshalb habe ich gemeint das durch die Leichtigkeit dieses Vorgehens irgendwo dann ein Fehler sein muss, wie ich ja gemeint hatte mit dem Mathe Unterricht. Ist die Aufgabe zu einfach ist sie falsch ;)
Edit: Eine Frage habe ich jetzt noch, ich habe png Bilder und keine JPEG Bilder. Wie mache ich das da jetzt? Bei Uses PngImage einfügen und dann das nur mit PNG schreiben anstatt mit JPEG? |
AW: Resourcen DLL's
Zitat:
Wenn du neugierig bist, dann trage dort ein paar Ressourcen ein (wild verstreut von der Platte) und erzeuge das Projekt. Dann schaust du mal in deinen Projektordner und wirfst ein Blick auf die dort liegenden Dateien. Wenn dort eine Datei deine Aufmerksamkeit erregt, dann schau dir diese Datei doch einfach mal an, was dort drin steht. (Zur Info: Diese Datei wird immer erst beim Kompilieren des Projekts geschrieben) |
AW: Resourcen DLL's
Ja kann ich machen ;) nur wie geht das jetzt mit den PNG's? Weil ich habe eben mich irgendwo reingelesen und habe auch schon probiert aber es geht nicht.. :( BZW. Ich bekomme Fehler zurück (bei dem Code der anderen)
|
AW: Resourcen DLL's
Und würdest Du Dich nun Geheimnisverrat schuldig machen, wenn Du uns den Fehler nennen würdest?
|
AW: Resourcen DLL's
Nein, tut mir leid.. Ich hätte ihn auch genannt nur wurde ich eben abgelenkt und habe das vergessen, sorry.. Ich habe den Code aber erstmal mit Bitmaps probiert und hier ist der Code:
Delphi-Quellcode:
und hier der Fehler:
procedure TFrmHaupt.PictLoad(Pic: string);
var h :HINST; r :TResourceStream; b : Tbitmap; begin h := LoadLibrary('bitmaps.dll'); if h <> 0 then try r := TResourceStream.Create(h, Pic, BITMAP); b := Tbitmap.Create; try b.LoadFromStream(r); ImgButtonStore.Picture.Bitmap := b; finally b.Free; r.Free; end; finally FreeLibrary(h); end; end;
Code:
[dcc32 Fehler] haupt.pas(155): E2029 '(' erwartet, aber ')' gefunden
[dcc32 Fehler] haupt.pas(156): E2010 Inkompatible Typen: 'PWideChar' und 'tagBITMAP' |
AW: Resourcen DLL's
|
AW: Resourcen DLL's
Ok, ich habe jetzt meinen Code verbessert aber jetzt bekomme ich angezeigt das die Bitmap ungültig sei. Neuer Code:
Delphi-Quellcode:
procedure TFrmHaupt.PictLoad(Pic: string);
var h :HINST; r :TResourceStream; b : Tbitmap; begin h := LoadLibrary('LW_MP_GRA1.dll'); if h <> 0 then try r := TResourceStream.Create(h, Pic, RT_BITMAP); b := Tbitmap.Create; try b.LoadFromStream(r); ImgButtonStore.Picture.Bitmap := b; finally b.Free; r.Free; end; finally FreeLibrary(h); end; end; |
AW: Resourcen DLL's
Zeig uns doch mal die dazugehörige .rc Datei
|
AW: Resourcen DLL's
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe sie in .txt gemacht weil sonst hätte ich sie ja nicht hochladen können
|
AW: Resourcen DLL's
So hätte es auch gereicht, gelle?
Code:
Bitmap_1 BITMAP "..\\..\\..\\..\\Pictures\\L-Write\\Media Player Store Button.bmp"
Bitmap_2 BITMAP "..\\..\\..\\..\\Pictures\\L-Write\\Media Player Store Button_hint.bmp" |
AW: Resourcen DLL's
Ja, heut ist nicht mein Tag :D
|
AW: Resourcen DLL's
![]() War es nicht so, daß bei den Bitmap-Resourcen irgendwas mit einem "fehlenden" FileHeader war? Bei LoadFromStream muß aber die komplette "Datei" vorhanden sein. PS: LoadLibraryEx + LOAD_LIBRARY_AS_IMAGE_RESOURCE .... läd die DLL, ohne die Initialisationsroutine auszuführen. |
AW: Resourcen DLL's
Ich verstehe nicht was du damit meins? :gruebel:
|
AW: Resourcen DLL's
Wenn man nichtmal das einzige Wort der ersten Zeile lesen kann, dann kann ich auch nicht weiterhelfen.
|
AW: Resourcen DLL's
Oh, sorry. Ich habe das PS gemeint. Das ist irgendwie verwirrend..
|
AW: Resourcen DLL's
Wenn eine DLL geladen wird, dann wird die DLL nicht nur in den RAM gelasen, sondern auch die Initialisierungfunktion ausgeführt,
worin auch die Initialization-Abschnitte aller Units und der Code in der DPR ausgeführt wird. Das Selbe dann auch beim Entladen der DLL. Man kann aber beim Laden von DLLs auch sagen, daß man nur Daten/Resourcen verwenden möchte und daher kein Code ausgeführt werden soll. Wenn man eh keine exportieren Funktionen aufrufen will, dann ist die Initialisierung eh nicht nötig. |
AW: Resourcen DLL's
Ah ok verstanden ;) aber das ist nicht das Hauptproblem, oder?
|
AW: Resourcen DLL's
Drum stand es ja auch nur als Zusatz unten drunter. :angel2:
|
AW: Resourcen DLL's
Ok, ich bin jetzt soweit dass ich wenigstens die Recourcen in meiner Anwendung habe, das mit der DLL weiß ich immer noch nicht wie ich das da machen soll, bzw. wie ich auf die DLL zugreife. Ich werde es aber gleich mal versuchen mit dem Code von vorne. Danke bis jetzt ;)
|
AW: Resourcen DLL's
So ich melde mich noch einmal hier. Ich habe jetzt auch herausgefunden wie man *.rc in *.res umwandelt. Nur wenn ich jetzt die cmd.exe aufrufe und dann
Code:
eingebe, bekomme ich folgenden Fehler:
brc32.exe "D:\LWRe\bild.rc
Code:
und folgendes steht in meiner .rc Datei:
Error bild.rc 1 14: Invalid bitmap format
Code:
Wo ist mein Denkfehler? :gruebel:
bild1 BITMAP "D:\LWRe\Play.bmp"
bild2 BITMAP "D:\LWRe\pause.bmp" Edit: Alle zwei Dateien sind Bitmapfiles.. Edit2: Hat sich erledigt, läuft jetzt über DLL aber auch über .png nur bekomme ich jetzt beim Ausführen folgenden Fehler:
Code:
Nur kann ich leider nichts mit dem Fehler anfangen.. :(
Im Projekt Test.exe ist eine Exception der Klasse $C0000005 mit der Meldung 'Access Violation at 0x0073ac34: read of address 0x00000000' aufegtreten.
|
AW: Resourcen DLL's
Wo passiert der Fehler. Hier?
Delphi-Quellcode:
ImgButtonStore.Picture.Bitmap := b;
Zitat:
|
AW: Resourcen DLL's
Oh, sorry hatte ich vergessen hier hin zu schreiben. In meinem anderen Thread mit den PNG aus Strean in TImage einfügen beantwortet ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:13 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