AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

UpdateResource String auslesen

Ein Thema von SyntaxXx · begonnen am 18. Mai 2010 · letzter Beitrag vom 18. Mai 2010
Antwort Antwort
SyntaxXx

Registriert seit: 14. Dez 2008
328 Beiträge
 
Delphi XE4 Architect
 
#1

UpdateResource String auslesen

  Alt 18. Mai 2010, 15:26
Hallo und zwar wollte ich via UpdateResource einen String in eine .exe schreiben und diese dann in dem Programm, indem der Text Gespeichert wurde, wieder ausgeben.

Nach langem gesuche habe ich nun den Teil, indem ich einen Text in eine .exe schreiben kann.

Delphi-Quellcode:
function WriteRes(sServerFile: string; pFile: pointer; Size: integer; Name: String): Boolean;
var
Hand: THandle;
pwServerFile: PWideChar;
pwName: PWideChar;
begin
GetMem(pwServerFile, (Length(sServerFile) + 1) *2);
GetMem(pwName, (Length(Name) + 1) *2);
try
StringToWideChar(sServerFile, pwServerFile, Length(sServerFile) * 2);
StringToWideChar(Name, pwName, Length(Name) * 2);
Hand := BeginUpdateResourceW(pwServerFile, False);
Result := UpdateResourceW(Hand, MakeIntResourceW(10), pwName, 0, pFile, Size);
EndUpdateResourceW(Hand, False);
finally
FreeMem(pwServerFile);
FreeMem(pwName);
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var Text : string;
begin
Text := Edit2.Text;
WriteRes(OpenDialog1.FileName, @Text, length(Edit2.Text), 'Text');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Edit1.Text := OpenDialog1.FileName;
end;

end.
Nur wie lese ich das, was in Edit2.Text stand in der .exe, in die der Text geschrieben wurde wieder aus?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#2

Re: UpdateResource String auslesen

  Alt 18. Mai 2010, 15:34
FindResource + LoadResource
LoadString
LoadStr
TResourceStream
...

Es gibt viele Methoden und Wege.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
SyntaxXx

Registriert seit: 14. Dez 2008
328 Beiträge
 
Delphi XE4 Architect
 
#3

Re: UpdateResource String auslesen

  Alt 18. Mai 2010, 15:53
Bei FindResource muss man irgendwie mit ner .rc Datei arbeiten etc , da blick ich nich wirklich durch.

Also mein Problem liegt im mom darin.

Ich habe ja nun eine .exe in der die ganezn befehle stehen.
Und ganz am Ende steht dann mein Text, so stelle ich mir das vor.

Gibt es den nicht irgenwo nen guts Tut was sich damit befasst?
Irgenwie finde ich da nichts richtiges.

Ich schaue aber mal weiter ^^



Edit:

So hab da jetzt mal was gefunden.
Der Code von meiner .exe, die den Text wieder ausgeben soll sieht jetzt so aus:

Delphi-Quellcode:
function GetResourceAsPointer(ResName: pchar; ResType: pchar; out Size: longword): pointer;
var
InfoBlock: HRSRC;
GlobalMemoryBlock: HGLOBAL;
begin
InfoBlock := FindResource(hInstance, resname, restype);
size := SizeofResource(hInstance, InfoBlock);
GlobalMemoryBlock := LoadResource(hInstance, InfoBlock);
Result := LockResource(GlobalMemoryBlock);
end;

function GetResourceAsString(ResName: pchar; ResType: pchar): string;
var
ResData: PChar;
ResSize: Longword;
begin
ResData := GetResourceAsPointer(resname, restype, ResSize);
SetString(Result, ResData, ResSize);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := GetResourceAsString(pchar('Text'), RT_RCDATA);
end;

end.


Aber Wenn ich als Text "Test" eingebe, bekomme ich "Te偔う" ausgegeben.
Warum das?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz