Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - GetStrings a..z, A..Z, 0..9 liefert immer andere Werte
Biarchiv - Mi 22.04.09 15:48
Titel: GetStrings a..z, A..Z, 0..9 liefert immer andere Werte
Hallo,
folgender Code liefert immer andere Werte obwohl die Ausgangswerte gleich sind.
Mir ist das Aufgefallen wenn ich das Programm immer neu Starte gibt es immer andere Werte, warum?
Dieser soll aus einem Stringbundle, nur lesbare Zeichen rausfischen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| function GetStringOnly(Value: String): String; var i, Cur: Integer; begin SetLength(Result, Length(Value)); Cur := 1; for i := 1 to Length(Value) do if Value[i] in ['a'..'z', 'A'..'Z', '0'..'9'] then begin Result[Cur] := Value[i]; Inc(Cur); end; SetLength(Result, Cur - 1); end; |
Moderiert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Mi 22.04.2009 um 16:32
Gausi - Mi 22.04.09 16:10
Ich würde vermuten, dass das letzte Setlength dir da was kaputt haut. Probier es mal so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| function GetStringOnly(Value: String): String; var i, Cur: Integer; begin Result := StringOfChar(' ', length(Value)); Cur := 1; for i := 1 to Length(Value) do if Value[i] in ['a'..'z', 'A'..'Z', '0'..'9'] then begin Result[Cur] := Value[i]; Inc(Cur); end; Result := trim(Result); end; |
Oder alternativ, wenn die Länge von Value nicht zu groß ist:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| function GetStringOnly(Value: String): String; var i: Integer; begin Result := ''; for i := 1 to Length(Value) do if Value[i] in ['a'..'z', 'A'..'Z', '0'..'9'] then Result := result + Value[i]; end; |
Narses - Mi 22.04.09 16:30
Moin!
Hab´s mal etwas umgestellt und getestet, bei mir klappt´s so: :nixweiss:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| function GetStringOnly(const Value: String): String; var i, Cur: Integer; begin SetLength(Result, Length(Value)); Cur := 0; for i := 1 to Length(Value) do if Value[i] in ['a'..'z', 'A'..'Z', '0'..'9'] then begin Inc(Cur); Result[Cur] := Value[i]; end; SetLength(Result, Cur); end;
procedure TForm1.Button1Click(Sender: TObject); begin Edit2.Text := GetStringOnly(Edit1.Text); end; |
cu
Narses
Biarchiv - Mi 22.04.09 16:33
Hallo,
danke, läuft.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!