Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Schon wieder Stringproblem -> array of char mit Vergleich
trm - Do 08.07.10 17:52
Titel: Schon wieder Stringproblem -> array of char mit Vergleich
Hi,
irgendwie habe ich heute meine Gehirnhälften zu lange einer drehenden Dame ausgesetzt (siehe offtopic).
Folgendes möchte ich erreichen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| function TForm1.HoldChars_in_Range(Dummy_String: string; Dummy_Char_Range: array of char): string; var x: Integer; begin
Result := ''; showmessage(Dummy_Char_Range); for x := 1 to Length(Dummy_String) do if (Dummy_String[x] in Dummy_Char_Range) then Result := Result + Dummy_String[x];
end;
Dummy_String := HoldChars_in_Range(Edit1.Text, ['0'..'9' , 'A'..'Z', 'a'..'z']); |
Bei der function verstehe ich nicht, dass der Char (string[x]) nicht in der Menge (Dummy_Char_Range) vorkommen darf?
Und bei dem Aufruf an sich sollte das doch auch wieder eine Menge, also ein Array sein.
Gruß
~Mathias
Moderiert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Do 08.07.2010 um 18:17
elundril - Do 08.07.10 17:54
nimm statt array of char lieber Set of Char. dann sollte es gehen. der in-Operator funktioniert in D7 nämlich nur mit Sets.
lg elundril
trm - Do 08.07.10 18:08
Huhu,
Danke, aber Set of ist doch nicht in der Funktion anwendbar - das ist doch eine Menge, die ich vorher definieren muss?
Dann ist aber die schöne Dynamik hin :(
OMG, es ist wirklich warm draussen.
Danke für den Hinweis, habs gelöst:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| type TChar_Range=set of Char;
function TForm1.HoldChars_in_Range(Dummy_String: string; Dummy_Char_Range:TChar_Range): string; var x: Integer; begin
Result := ''; for x := 1 to Length(Dummy_String) do if (Dummy_String[x] in (Dummy_Char_Range)) then Result := Result + Dummy_String[x];
end;
Aufruf bleibt gleich. |
Sorry für die weitere Banalität :/
Teekeks - Do 08.07.10 18:14
Ein Set ist eine Menge.
Probiers doch mal:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| var se:set of char; s:string; e:string; i:integer; begin s:='123Hal323lo565'; se:=['a'..'z','A'..'Z']; e:=''; for i:=1 to length(s) do if s[i] in se then e:=e+s[i]; Writeln(e); end; |
trm - Do 08.07.10 18:16
Huch, Du warst zu schnell.
ASMFreak - Do 08.07.10 22:09
Mathias,
probier 'mal
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| type TMyCharSet = set of Char;
function HoldChars_in_Range(Dummy_String; Dummy_Char_Range: TMyCharSet): String; var X: Integer; begin Result := ''; for X := 1 to Length(Dummy_String) do if (Dummy_String[X] in Dummy_Char_Range) then Result := Result + Dummy_String[X]; end; |
Dass der Compiler meckert, wundert mich nicht! "in" ist ein Mengenoperator und Du übergibst als Argument ein Array!
Gruß, Trutz
Hoppla, da war ein Tag zu viel! Und Rechtschreibung kann ich auch nicht mehr!
Und wohl auch ein Gals Rotwein zu viel, sonst hätte ich gemerkt, dass das Problem schon gelöst ist! :nut:
trm - Do 08.07.10 22:37
Hihi (kurz und bündig).
Danke dennoch.
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!