Sorry, meine vorherige Antwort sollte garnicht so "böse" rüberkommen wie es jetzt aussieht xD.
Jop Forumprofil wird geupdated.
Also ich benutze Delphi
RAD Studio XE.
Also wie ich schon ansprach, muss ich einen String in einen AnsiString umwandeln.
Dachte es reicht, wenn ich einfach
Code:
Text := AnsiString(Edit1.Text);
schreibe.
Denn das habe ich versucht aber es geht nicht.
Das ich den Pointer falsch gesetzt habe schließe ich mal aus, da ja wie gesagt alles wunderbar funktioniert, wenn ich folgendes schreibe:
Hier also mein Code mit UpdateResource:
Code:
function AddString(text,delimiter : string) : Boolean;
var
hUpdateRes : THandle;
lpResLock : ^string;
begin
lpResLock := @text;
hUpdateRes := BeginUpdateResource('Ausgabe.exe', False);
if hUpdateRes = 0 then
showmessage('Could not open file');
result := UpdateResource(hUpdateRes, RT_String, PChar(delimiter), 0, PChar(text), succ(length(text))*sizeof(char));
EndUpdateResource(hUpdateRes, false);
end;
Und hier mein Ausruf:
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
AddString(DoXOr(AnsiString(Edit1.Text), 1000), 'TEXT1');
end;
DoXOr ist einfach nur eine kleine XOr verschlüsselung.
Wie gesagt, wenn ich die Funktion so aufrufe funktioniert es wunderbar:
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
AddString(DoXOr(Edit1.Text + #0), 1000), 'TEXT1');
end;
Edit:
Aber ich habe doch einen String, den ich in einen AnsiString wandeln muss.
Code:
AddString(DoXOr(AnsiString(Edit1.Text), 1000), 'TEXT1');
funktioniert also nicht so einfach ?
PS: Was heißt gecastet? xD Konvertiert?