![]() |
Delphi-Version: 5
eingebunde Resourcen abfragen (RCDATA)
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
wie kann ich eingebunde Resourcen auslesen ? Der Typ ist RC_DATA. Ich kann sie übrigens mit dem "Resource Hacker" auslesen. Thomas |
AW: eingebunde Resourcen abfragen (RCDATA)
Stichwort: TResourceSteam.
|
AW: eingebunde Resourcen abfragen (RCDATA)
Zitat:
Delphi-Quellcode:
gibt leider die Fehlermeldung:
TResourceStream.Create(HINSTANCE, '99303', RT_RCDATA);
der angegebene ressourcentyp wurde nicht in der image-datei gefunden Ist die Syntax denn dem Screenshot zufolge richtig ?? |
AW: eingebunde Resourcen abfragen (RCDATA)
Nein, es muss heißen
Delphi-Quellcode:
, da du hier eine Ressource nach einer ID (=Nummer) und nicht nach einem Namen (=String) lädst. Ich persönlich bin ja eher ein Freund von benannten Ressourcen, aber wie du deine Ressourcen verwaltest, ist natürlich dir überlassen.
TResourceStream.CreateFromID(HINSTANCE, 99303, RT_RCDATA)
|
AW: eingebunde Resourcen abfragen (RCDATA)
Liste der Anhänge anzeigen (Anzahl: 1)
Leider funktioniert das auch nicht und gibt den selben Fehler aus.
Wie kommst du denn darauf, dass ich nach einer Nummer suche ? Dort, wo im Screenshot 99303 steht, könnte auch ein String stehen. Im Anhang habe ich noch ein Beispiel erstellt. Ist es denn sicher, dass man die Resourcen auslesen kann, wenn sie im "Resource Hacker" angezeigt werdne oder gibt es da noch Spezialfälle, die es zu unterscheiden gibt ? |
AW: eingebunde Resourcen abfragen (RCDATA)
Zitat:
Ist wirklich sicher, dass die Ressource auch in der Exe ist und du nicht mit Reshacker versehentlich die falsche Datei untersucht hast? |
AW: eingebunde Resourcen abfragen (RCDATA)
Wie hast du diese Resource erstellt?
|
AW: eingebunde Resourcen abfragen (RCDATA)
Liste der Anhänge anzeigen (Anzahl: 1)
Es ist sicher, dass ich die richtige Datei mit dem Resourcehacker geöffnet habe.
Zwei mögliche Probleme sehe ich: - Ich arbeite mit Lazarus, nicht mit Delphi. - Die Resource, die ich auslesen möchte, habe ich auch in die exe-Datei geschrieben (mit einem anderen Programm über UpdateResource). -> Es könnte also sein, dass die Resource nicht "ordentlich" reingeschrieben worden ist, obwohl ich sie mit dem reshacker sehen kann (daher auch die Frage, ob es da noch Unterschiede/Spezialfälle gibt) --> Wenn ich die Resource in die exe-Datei schreibe und diese starte, sieht das Design auch anders aus (siehe screenshot), es wurden also die Resourcen, die für das Design verantwortlich sind, entfernt? |
AW: eingebunde Resourcen abfragen (RCDATA)
Es kann sein, dass das Design des Programms aus der Ressource geladen wird und du mit deiner veränderung selbiger, diese irgendwie zerstörst. Er somit die benötigten Daten nicht mehr bekommt.
Ich kann dir nur dazu raten, dich vorher mit Tutorials zu dem Thema Ressourcen zu befassen. Google ist da dein Freund ;) |
AW: eingebunde Resourcen abfragen (RCDATA)
Ich habe mich in der Zwischenzeit mit dem Thema Resourcen sehr ausgiebig beschäftigt, trotzdem kann ich mir nicht erklären, warum die Resource nicht gefunden werden kann, aber mit einem anderen Programm (Resource Hacker) angezeigt werden kann.
Könnte jemand vielleicht mit Delphi folgenden Code compilen und die exe hier im Forum anhängen ?
Delphi-Quellcode:
mit folgenden Komponenten:
function TForm1.GetResValue(resname: string): string;
var RS: TResourceStream; begin try RS := TResourceStream.Create(hinstance, resname, RT_RCDATA); ShowMessage('(1)'); RS.Free; ShowMessage('(2)'); SetString(Result, RS.Memory, RS.Size); except ShowMessage(SysErrorMessage(GetLastError)); Result := ''; end; end; procedure TForm1.Button1Click(Sender: TObject); var s: string; begin s := GetResValue(Edit1.Text); if (s <> '') then ShowMessage(s); end; - Editfeld: "Edit1" - Button: "Button1" Dann könnte ich testen, ob es möglich ist, die Resource abzufragen, die ich in eine exe reinschreibe. Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04: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