Zitat von
SirThornberry:
bei mir hat stringreplace sich noch nie an diesem 0-byte orientiert und laut quelltext macht es das auch nicht.
Nein?
Mein StringReplace arbeitet mit
AnsiPos und dieses wiederum enthält folgende Zeile:
P := AnsiStrPos(PChar(S), PChar(SubStr));
Ab diesem Zeitpunkt muss die Funktion sich am 0-Byte orientieren, da sie ja die Länge nicht kennt.
Probier doch mal folgendes:
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
Dialogs,
Classes;
var
S1, S2 : String;
begin
S1:='A'+#0+'B';
S2:=StringReplace(S1,'B','C',[rfIgnoreCase]);
Writeln(s2);
Readln;
end.
"B" wird nicht ersetzt weil StringReplace sich am 0-Byte orientiert.
@ReVenGer:
Zitat von
chaosben:
Falls ersteres zutrifft, müßtest du nach den ersten 4 Byte suchen und dir deren Position merken (siehe Hilfe "Funktion Pos"). Danach musst du nur noch ab dieser Position die 5 neuen Bytes schreiben. (siehe Hilfe "Funktion Delete/Insert") Fertig