Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Alle Buchstaben in einem Ascii Feld rausfiltern
csigg - Do 09.06.05 15:06
Titel: Alle Buchstaben in einem Ascii Feld rausfiltern
Ich habe eine Tedit in dem entweder die Betriebsstätten Nummer oder der Betriebsstättenname eingegeben werden kann.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42:
| procedure Tfrm_Main.prc_NLSuche; var sqlstatement: String; anzahl: Integer; eingabe: String; ziffer: boolean; begin anzahl := 0; eingabe := edtNLSuche.Text;
if length(eingabe) < 1 then begin MessageDlg('Es wurd nix angegeben',mtError,[mbOK],0); exit; end;
case eingabe[1] of '0'..'9': ziffer := true; else ziffer := false; end;
if ziffer then begin for lenght(eingabe) do begin
end;
if ziffer then begin sqlstatement := 'SELECT * FROM NL ' + 'WHERE NLNR = ' + edtNLSuche.Text; end else begin sqlstatement := 'SELECT * FROM NL ' + 'WHERE NAME LIKE ''%' + edtNLSuche.Text + '%'''; end; ...... [u][/u] |
Jetzt sollte ich allerdings noch sicherstellen das wenn es sich um ziffern handelt, dass alles was nicht Ziffer ist herausgefiltert wird, bzw. wenn es sich um Buchstaben handelt sollten alle Ziffern raus. Das erste Zeichen ist dabei das enscheidende.
uall@ogc - Do 09.06.05 15:12
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| s := 'asdasdasdasd43wersfgg3456erfdsfsdf';
if (ord(s[1]) >= ord('0')) and (ord(s[1]) <= ord('9')) then begin for i := 1 to length(s) do if (ord(s[i]) >= ord('0')) and (ord(s[i]) <= ord('9')) then t := t+s[i]; end else if (upcase(ord(s[1])) >= ord('A')) and (upcase(ord(s[1])) <= ord('Z')) then begin for i := 1 to length(s) do if (upcase(ord(s[i])) >= ord('A')) and (upcase(ord(s[i])) <= ord('Z')) then t := t+s[i]; end; |
ungetestet
csigg - Do 09.06.05 15:36
Funktioniert nicht, es meldet immer Inkopatible Typen.
Ich schaus mir mal an und poste dann den richtigen code.
csigg - Do 09.06.05 15:44
Du hast einfach das Ord und das Upcase verdreht. Berichtigte Version:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| if (ord(eingabe[1]) >= ord('0')) and (ord(eingabe[1]) <= ord('9')) then begin for i := 1 to length(eingabe) do if (ord(eingabe[i]) >= ord('0')) and (ord(eingabe[i]) <= ord('9')) then t := t+eingabe[i]; end else if (ord(Upcase(eingabe[1])) >= ord('A')) and (ord(Upcase(eingabe[1])) <= ord('Z')) then begin for i := 1 to length(eingabe) do if (ord(Upcase(eingabe[i])) >= ord('A')) and (ord(Upcase(eingabe[i])) <= ord('Z')) then t := t+eingabe[i]; end; |
Funktioniert perfekt
HiteHower - Mo 04.07.05 11:34
Hallo Leute ich versuch mir seit 2 Tagen selber bisschen Delphi beizubringen!
Hab also ne Frage:
Wie kann ich in einem Edit bewirken das keine Zahlen eingegeben werden können?
csigg - Mo 04.07.05 13:32
du könntest mit OnKeyPress jede Tastatureingabe abfangen, prüfen ob es ne Zahl, wenn ja nicht darstellen, aber vielleicht gibt es auch noch ne bessere Methode.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!