Entwickler-Ecke

Dateizugriff - dll string ressource


Takeshi - Sa 12.04.03 00:23
Titel: dll string ressource
hi

ich habe hier eine dll-datei, die strings enthaelt.
nun moechte ich diese gerne auslesen (dll stammt natuerlich net von mir)

http://home.arcor.de/its2loud/nameresources.zip

hier koennt ihr sie mal runterladen wenn ihr wollt und hier ein screenshot von restorator:

http://home.arcor.de/its2loud/nameresources.jpg

ich hoffe sehr, es kann mir jemand helfen, wie ich an diese strings komme.
greez, Takeshi :cry:


bis11 - Sa 12.04.03 21:37

Hi,

das was Du über Restorator siehst sind die normalen Ressourcen der DLL. So lade ich zum Beispiel Bitmaps aus einer DLL :


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TMainControl.FormShow(Sender: TObject);                               
var                                        
   hDLL : THandle;                                               
begin                                                                 
   hDLL := LoadLibrary(PChar('ressource.dll'));     
   if hDLL <> 0 then begin
     try                            
       postbasket.Glyph.LoadFromResourceName(hDLL,'postkorb');       
       Search.Glyph.LoadFromResourceName(hDLL,'suchen'); 
       configuration.Glyph.LoadFromResourceName(hDLL,'configuration');
       useradministration.Glyph.LoadFromResourceName(hDLL,'useradmin');
       beenden.Glyph.LoadFromResourceName(hDLL,'beenden');  
     finally  
       FreeLibrary(hDLL);  
     end;  
   end;    
end;


Auf die gleich Art un Weise sollte es auch mit Strings funktionieren.


Takeshi - Sa 12.04.03 23:55

Zitat:
Die Methode LoadFromResourceName lädt eine Bitmap-Ressource in das Bitmap-Objekt.

ich weiss leider nicht genau, wie ich damit umgehen muss. bei:

Quelltext
1:
postbasket.Glyph.LoadFromResourceName(hDLL,'postkorb');                    

ist 'postbasket' also irgendein button oser so ? aber womit geht das mit strings?
greez

Moderiert von user profile iconAya: CodeTag hinzugefügt.


Takeshi - Mo 14.04.03 16:25

Kann mir hier jemand helfen ????
hier ist mal ein eintrag aus dem forum ,aber den code versteh ich nicht

http://www.delphi-forum.de/viewtopic.php?t=6369&highlight=dll+resource

aber bitte geb mir doch wenigstens einer mal nen tipp :cry:


bis11 - Mo 14.04.03 19:44

Was verstehst Du denn daran nicht ? Der Code ist doch gut dokumentiert.


Takeshi - Mo 14.04.03 20:46

schon, aber ich halt ein kleiner nub, der gewisse dinge noch nicht kennt :cry:
wichtig ist fuer mich ja hier die function GetStringFromRes:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function TForm1.GetStringFromRes(iID: Integer) : string;
var
  iCnt   : Integer;
  szText : array[0..29] of Char;
begin
  iCnt := LoadString(hDLL, iID, szText, SizeOf(szText)-1);
  if iCnt > 0 then GetStringFromRes := StrPas(szText)
              else GetStringFromRes := 'Kein Eintrag!';
end;

hDLL = DLL-Datei
wozu ist aber iID, szText und der Dritte Parameter in LoadString ?

Wie kann ich denn jetz konkret aus ner dll den string X aus table X bekommen?

greez, Takeshi


Takeshi - Di 15.04.03 01:25

ich meine die function funktioniert ja wunderbar, ich moecht sie nur gerne verstehen.

was passiert da alles mit der variable szText :?: den trick mit dem buffer versteh ich leider nicht.