![]() |
string auf zahlen prüfen
hoi,
wie kann ic per button klick z.b edit1 auf zahlen prüfen (diese will ich vermeiden). Ich weiss nur noch das es in der art war wie... if '0'..'9' in string.... hat jemand ne idee? |
Re: string auf zahlen prüfen
Moin !
Eine funtion die genau das gegenteil prüft hab ich schon mal geschrieben (musst du halt umschreiben) :
Delphi-Quellcode:
function isinteger(input : string): bool;
var i :integer; begin result := true; i:= 1; repeat if input[i] in ['0'..'9'] then i:=i+1 else begin result := false; break; end; until i = length(input); end; |
Re: string auf zahlen prüfen
Hi,
Kannst du im OnKeyPress abfangen Key ist die taste die gedrückt wurde
Delphi-Quellcode:
das geht, aber hatte gerade nicht die lust eine komplexe if abfrage zu erdenken geht unteranderem auch und ist dazu etwas sauberer :)
case Key of
'0'..'9': Key:=Key; #8: Key:=Key; else Key:=#0; end; Grüsse Daniel |
Re: string auf zahlen prüfen
Zitat:
Delphi-Quellcode:
:mrgreen: Bei dem Case Beispiel geht das nicht.
not
|
Re: string auf zahlen prüfen
danke leute :)
btw: ich muss es per button prüfen, nicht keypress |
Re: string auf zahlen prüfen
Man könnte das ganze gleich bei Eingabe in das Edit-Feld mit Hilfe des Ereignisses OnKeyDown prüfen:
Delphi-Quellcode:
Oder man verwendet das KeyDown Ereignis.
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin if (key>='0') AND (key<='9') then Key:=#0; end; Da bekommst Du den ASCII-Code des Zeichens das der Benutzer eingegeben hat. Wenn dieser nicht zwischen 48 und 57 liegt ist es keine Ziffer, falls doch musst du ihm den Wert 0 zuweisen. Der SourceCode ist ähnlich dem obigen, darum schreibe ich ihn hier nicht nochmal hin. EDIT: Komisch, ebend wurden mir noch keine Antwort-Beiträge angezeigt - blöder Cache :gruebel: Wenn du das ganze sofort bei der Eingabe machst sparst du dir die nachträgliche Überprüfung - ein Eingeben von Ziffern ist dann nämlich gar nicht erst möglich. |
Re: string auf zahlen prüfen
Zitat:
|
Re: string auf zahlen prüfen
Moin !
so müsste es doch gehen :
Delphi-Quellcode:
edit :
function numbers(s : string) : boolean;
var i : Integer; begin result := false; for i := 0 to length(s) do if s[i] in ['0'..'9'] then begin result := true; break; end; end; procedure TForm1.Button1Click(Sender: TObject); begin if numbers(edit1.Text) then showmessage('Die Eingabe beinhaltet Zahlen'); end; @ hansa : Hab deinen eintrag zu sapät gelesen ! :mrgreen: |
Re: string auf zahlen prüfen
Ich möchte nochmal darauf hinweisen, dass das Abfangen der Tasteneingaben keineswegs die Lösung ist, per Kontext-Menü -> Einfügen geht es schließlich auch und das dann zu verbieten ist wohl eher eine Notlösung als anwenderfreundlich.
Meine Alternative wäre eine Funktion, die einen String auf "Zahlen" prüft und nur diese zurückliefert.
Delphi-Quellcode:
function StripDigits(sInput: String): String;
var i, dFirstPos: Integer; boolPrevWasDigit: Boolean; begin // Variablen initialisieren Result := ''; boolPrevWasDigit := false; dFirstPos := 1; // Schleife in der alle Zeichen von sInput nach 0..9 geprüft werden for i := 1 to Length(sInput) do begin // ist das i-te Zeichen aus 0..9? if sInput[i] in ['0'..'9'] then begin // war das vorherige Zeichen keine Zahl? if not boolPrevWasDigit then // es war keine Zahl, aber dieses Zeichen ist eine Zahl, // also setze Anfangsposition für erste gefundene Zahl nach // einem Nicht-Zahl-Zeichen dFirstPos := i; // setze "vorherige Zeichen war eine Zahl" auf wahr boolPrevWasDigit := true; end // if sInput[i] in ['0'..'9'] then else begin // war das vorherige Zeichen eine Zahl if boolPrevWasDigit then // es war eine Zahl, aber diese Zeichen ist keine Zahl, // also kopiere die Zeichen von "Anfangsposition für die // erste gefundene Zahl" (i - Anfangsposition) Anzahl Zeichen Result := Result + Copy(sInput, dFirstPos, i - dFirstPos); // setze "vorheriges Zeichen war eine Zahl" auf falsch boolPrevWasDigit := false; end; // else.. (if sInput[i] in ['0'..'9'] then) end; // da der Fall "vorheriges Zeichen war keine Zahl" am Ende der Zeichenkette // nicht auftritt, wenn das letzte Zeichen eine Zahl ist: // Prüfe ob das vorherige Zeichen eine Zahl war if boolPrevWasDigit then // wenn das vorherige (letzte) Zeichen eine Zahl war, dann kopiere die Zeichen von // "Anfangsposition für die erste gefundene Zahl" (i - Anfangsposition) Anzahl Zeichen Result := Result + Copy(sInput, dFirstPos, Length(sInput) + 1 - dFirstPos); end; |
Re: string auf zahlen prüfen
Mit dem Einfügen-Feld hast du Recht - hab ich gar nicht dran gedacht :wall:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz