Moin!
Yogu hat folgendes geschrieben: |
Aber vielleicht wäre es sinnvoller, eine while-if-Abfrage zu machen |
Nein, das Delete() ist ungefähr genau so "schlecht" wie StringReplace() oder viele Stringverkettungen.
Wenn schon, dann mit einer Kopie und Abschneiden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| function Clean(const S: String): String; var i, p: Integer; begin Result := S; p := 0; for i := 1 to Length(S) do if NOT (S[i] in ['+',#39]) then begin Inc(p); Result[p] := S[i]; end; SetLength(Result,p); end;
procedure TForm1.Button1Click(Sender: TObject); begin Edit2.Text := Clean(Edit1.Text); end; |
Hier wird nur einmal Speicher für den String angefordert und dann ggfs. auf die nötige Länge gekürzt, wärend Delete() und auch StringReplace() u.U. mehrfach den String umkopieren.
cu
Narses
There are 10 types of people - those who understand binary and those who don´t.