Einzelnen Beitrag anzeigen

SyntaxXx

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

AW: Strings und Ansistrings, Nullterminiert?

  Alt 24. Feb 2012, 19:33
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:

Code:
Text := Edit1.Text + #0;


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?
  Mit Zitat antworten Zitat