![]() |
Abfragen
ähmm ich bins nochmal :mrgreen:
wie kann ich denn aus einem Editfeld abfragen ob das was drinnen steht buchstaben oder zahlen sind ??? thx 4 help |
Re: Abfragen
Hai cell,
die Frage ist eigentlich falsch gestellt. In einem Edit stehen immer nur Zeichen. Du möchtest jetzt wissen ob Du diese Zeichen in eine Zahl umwandeln kannst. Dafür gibt es zwei möglichkeiten: a) Try und Error. Du versuchst also die Umwandlung und reagiert auf Fehler. b) Du lässt einfach nur Zeichen in dem Edit zu ['0'..'9',Dezimalseperator] welche auch in eine Zahl konvertiert werden können. |
Re: Abfragen
du kannst aber auch die Funktion val(...) nutzen! Kenne leider die genauen Parameter nicht auswenidig!!!
|
Re: Abfragen
Delphi-Quellcode:
Grüße vom marabu
function IsNumeric(s: string): boolean;
var i: integer; begin Result := TryStrToInt(s, i); end; |
Re: Abfragen
ich hba isNumeric mal hineingeschrieben und auf F1 gedrückt und er kennt des ned ?
was muss ich da in de uses schrieben?? |
Re: Abfragen
schau mal nach tryinttostr!
|
Re: Abfragen
Ähmm.... hallo?
Das ist eine Funktion die marabu geschrieben hat mit der Du prüfen kannst ob ein String in eine Zahl gewandelt werden kann. |
Wie wär's mit Ord und Chr?
|
Re: Abfragen
Was is Ord und Chr ??
kannst a bissi mehr dazu sagen bitte |
Zitat:
|
Den Wert, der im Editfeld steht umwandeln und überprüfen, welche Zahl es in der ASCII-Tabelle ist -> dementsprechend handeln!
cell, schau mal in die DH - dort findest Du alles über Chr und Ord! |
Re: Abfragen
ich will nur schauen ob es 1,2,3,4,5,6,7,8,9,0 is und wenn ja dann soll er es in die datenbank schreiben, wenn nein dann soll er eine fehelermeldung heruasgeben
|
Was hälst Du
Delphi-Quellcode:
davon? ;)
if Ord(Edit1.Text[1]) in [48..57] then // Zahlen im Editfeld?
{schreibe die Zahlen in die DB} |
Re: Abfragen
Geht nicht.
Du musst Inhalt des Edit-Feldes vorher einer String-Variablen zuweisen, weil du aif die Text-Eigenschaft nicht generell wie auf ein String zugreifen kannst. Dies ist einer der Fälle.
Delphi-Quellcode:
var
s : String; ... s := Edit1.Text; if Ord(s[1]) in [48..57] then // Zahlen im Editfeld? {schreibe die Zahlen in die DB} |
Ich glaube ich gebe es auf.
Es wurden drei Vorschläge gemacht wie man das ganze richtig lösst. Aber anscheinend scheint cell sich für Lösungsvorschläge nicht zu interessieren. :gruebel: |
Lass ihn doch, vllt. kennt er sich noch nicht so gut aus. ;)
Wir haben alle mal klein angefangen.. :) Vor 4 Monaten wusste ich nicht mal, was 'ne Prozedur ist und jetzt bin ich bald mit meinem Game fertig! :thumb: |
Zitat:
Delphi-Quellcode:
damits noch kryptischer wird. Weil wie von Sharky vorgeschlagen die Chars zu vergleichen wäre ja viel zu übersichtlich. :roll:
Ord(Edit1.Text[1]) in [$30..$39]
Benutz die Hilfe such wie vorgeschlagen nach tryinttostr und dann benutz deinen Kopf. |
Re: Abfragen
Hier gibt es eine Numeric Edit Komponente
![]() oder:
Delphi-Quellcode:
das gibt es ja noch die Möglichkeit die Keys zu testen die gedrückt werden:
// als Decimal-Separator wird nur "." akzeptiert
function TestOfNumeric(S: String) : Boolean; var r: Real; c: Integer; begin val(s, r, c); Result := Boolean(c = 0); end; // if not TestOfNumeric(Edit1.Text) then Error...
Delphi-Quellcode:
//Edit: PS.: Dein Titel ist ein bissel dünn "Abfragen" ?!?
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin ... if Key in ['0'..'9', '.', ',' ] then ok else NichtOk; ... ... end; |
Re: Abfragen
Geht vielleicht ein einfaches TMaskEdit? Ich persönlich benutze die zwar nicht, aber für einen Anfänger doch eine praktikable Sache.
|
Re: Abfragen
Ich glaube wir sollten das mal zusammenfassen:
1.) n MaskEdit benutzen(Jasocul) 2.) nicht Zahl-Zeichen abfangen(turboPASCAL) Das würde ich dann aber noch etwas verbessern:
Delphi-Quellcode:
3.)TryStrToInt(marabu)
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin ... if not (Key in ['0'..'9', '.', ',', #8 ]) then begin Beep; Key := #0; end; ... end; 4.) Selbst ne Funktion schreiben.(wurde von mehreren vorgeschlagen) Das hat aber den Nachtteil, dass man so auch sowas berücksichtigen muss:
Code:
Is das ne Zahl, wenn ja, welche? :mrgreen:
,,99,,,,,,2....5,9.,5,.
Ich hoffe ich hab niemanden vergessen. Möglichkeiten sollten das jetzt auch genug sein. Ich persönlich würde Version 2 oder 3 nehmen. mfg Christian |
Re: Abfragen
Zitat:
"[Fehler] Unit1.pas(30): Inkompatible Typen: 'Word' und 'Char'" |
Re: Abfragen
Zitat:
Das ganze mit OnKeyPress und es funktioniert! mfg Christian |
Re: Abfragen
Zitat:
Das "kleine" Problem ist komplexer als erwartet... Edit: Vielleicht hilft auch ![]() |
Re: Abfragen
Zitat:
mfg Christian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:27 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