AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

string auf zahlen prüfen

Ein Thema von Pseudemys Nelsoni · begonnen am 19. Okt 2003 · letzter Beitrag vom 28. Jun 2004
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

string auf zahlen prüfen

  Alt 19. Okt 2003, 20:39
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?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von braingrenade
braingrenade

Registriert seit: 30. Okt 2002
Ort: Neufra
274 Beiträge
 
Delphi 6 Personal
 
#2

Re: string auf zahlen prüfen

  Alt 19. Okt 2003, 20:44
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;
Let the sun beat down upon my face
Stars fill my dream
I am a traveller of both time and space
To be where I have been ________________ Such A Surge
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#3

Re: string auf zahlen prüfen

  Alt 19. Okt 2003, 20:47
Hi,

Kannst du im OnKeyPress abfangen

Key ist die taste die gedrückt wurde

Delphi-Quellcode:
case Key of
  '0'..'9': Key:=Key;
  #8: Key:=Key;
  else Key:=#0;
end;
das geht, aber hatte gerade nicht die lust eine komplexe if abfrage zu erdenken geht unteranderem auch und ist dazu etwas sauberer

Grüsse Daniel
Daniel M.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: string auf zahlen prüfen

  Alt 19. Okt 2003, 20:54
Zitat von braingrenade:
musst du halt umschreiben
Und zwar mit einem Wort not Bei dem Case Beispiel geht das nicht.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#5

Re: string auf zahlen prüfen

  Alt 19. Okt 2003, 21:03
danke leute

btw: ich muss es per button prüfen, nicht keypress
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
trialfreak

Registriert seit: 19. Okt 2003
24 Beiträge
 
Delphi 6 Professional
 
#6

Re: string auf zahlen prüfen

  Alt 19. Okt 2003, 21:06
Man könnte das ganze gleich bei Eingabe in das Edit-Feld mit Hilfe des Ereignisses OnKeyDown prüfen:

Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (key>='0') AND (key<='9') then
Key:=#0;
end;
Oder man verwendet das KeyDown Ereignis.

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

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.
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#7

Re: string auf zahlen prüfen

  Alt 19. Okt 2003, 21:07
Zitat:
btw: ich muss es per button prüfen, nicht keypress
naja aber beim OnKeyPress könntest du schon andere eingaben unterdrücken das wollte ich damit sagen, aber nagut
Daniel M.
  Mit Zitat antworten Zitat
Benutzerbild von braingrenade
braingrenade

Registriert seit: 30. Okt 2002
Ort: Neufra
274 Beiträge
 
Delphi 6 Personal
 
#8

Re: string auf zahlen prüfen

  Alt 21. Okt 2003, 18:26
Moin !

so müsste es doch gehen :

Delphi-Quellcode:
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;
edit :
@ hansa : Hab deinen eintrag zu sapät gelesen !
Let the sun beat down upon my face
Stars fill my dream
I am a traveller of both time and space
To be where I have been ________________ Such A Surge
  Mit Zitat antworten Zitat
Benutzerbild von nTE
nTE

Registriert seit: 8. Sep 2003
60 Beiträge
 
#9

Re: string auf zahlen prüfen

  Alt 21. Okt 2003, 20:34
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;
  Mit Zitat antworten Zitat
trialfreak

Registriert seit: 19. Okt 2003
24 Beiträge
 
Delphi 6 Professional
 
#10

Re: string auf zahlen prüfen

  Alt 22. Okt 2003, 18:09
Mit dem Einfügen-Feld hast du Recht - hab ich gar nicht dran gedacht
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz