Einzelnen Beitrag anzeigen

tommie-lie
(Gast)

n/a Beiträge
 
#2

Re: Probleme mit Insert? Stringbearbeitung!

  Alt 29. Apr 2004, 22:18
Der Debugger ist dein Freund
Wenn du in deiner Schleife schaust, ob das aktuelle Zeichen ein Leerzeichen ist, ist dort 1 (in Worten: ein) Zeichen. Ersetzt du es durch " - " sind das 3 (in Worten: drei) Zeichen. Also stimmt dein i nicht mehr, denn es zeigt jetzt auf das erste Leerzeichen des eingefügten " - ", da aber der Schleifendurchlauf zu Ende ist, zeigt es kurz darauf auf das "-" von " - ". Beim nächsten Durchlauf zeigt i dann auf das zweite Leerzeichen von " - ", ergo werden nochmal mit StringReplace sämtliche Leerzeichen auf dem String entfernt, er wird wieder um zwei verkürzt. Damit rutscht die zweite Zahl hinter dem Leerzeichen (in deinem Fall die 4) und fügt dort nochmal " - " ein, denn er hat ja vorher festgestellt, daß er wieder auf ein Leerzeichen getroffen ist, obwohl er das mit StringReplace wieder gelöscht hat.
Folgendes klappt vielleicht besser:
Delphi-Quellcode:
function ReplaceString(fNummer: String): String;
var
  i : Integer;
begin
  if (fNummer<>'')then
  begin
    fNummer := StringReplace(fNummer,'(','',[rfReplaceAll]);
    fNummer := StringReplace(fNummer,')','',[rfReplaceAll]);
    fNummer := StringReplace(fNummer,'/','',[rfReplaceAll]);
    fNummer := StringReplace(fNummer,'\','',[rfReplaceAll]);
    fNummer := StringReplace(fNummer,'-','',[rfReplaceAll]);

    for I := 1 to Length(fNummer) do // Iterate
    begin
      if fNummer[i]= ' then
      begin
        fNummer[i] := '-';
      end;
    end; // for
    fNummer := StringReplace(fNummer, '-', ' - ', [rfReplaceAll]);
  end;
  Result := fNummer;
end;
  Mit Zitat antworten Zitat