Einzelnen Beitrag anzeigen

Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Stringreplace mit einer unbekannten

  Alt 15. Jun 2007, 09:51
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
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat