![]() |
wenn edit nicht dem format entspricht dann ... ??
ich will überprüfen ob edit dem hh:mm:ss format enspricht wenn das nicht so ist soll er ne nachricht zeigen
hab schon mal einen vorschlag nur was muss hinter das gleich?
Delphi-Quellcode:
else if (not(edit5.Text={was kommt hier rein?} ) then showmessage (' ')
|
Re: wenn edit nicht dem format entspricht dann ... ??
Wenn die Eingabe ein festes Format haben soll, wäre es sinnvoll eine derartige Eingabe im Edit zu erzwingen. An sonsten bleibt dir nichts anderes übrig als den Eingabestring auf die ':' an Pos 3 und 6 zu überprüfen anschlißend zu zerlegen und einzeln die Wertebereiche zu validieren (Stunden zwischen 0 -12 /24; Minuten zwischen 0-60).
|
Re: wenn edit nicht dem format entspricht dann ... ??
ich muss mich da mkinzler anschließen. Mit so wenig Zeilen wird das nichts.
Du musst erst prüfen ob der eingegebene Text die richtige länge hat um deinem format zu entsprechen. Anschließend noch prüfen ob die Doppelpunkte an den richtigen stellen sind. Dann noch prüfen ob die restlichen zeichen Zahlen sind. Und dann noch prüfen ob die entsprechenden zeichen zusammengefügt keine zu große zahl ergeben. |
Re: wenn edit nicht dem format entspricht dann ... ??
wie erzwinge ich denn eine feste eingabe in dem format?
|
Re: wenn edit nicht dem format entspricht dann ... ??
Man sucht eine passende Edit-Komponente oder verwendet z.B. TJvMaskEdit (JediVCL) und setzt über die Eigenschaft EditMask das benötigte Format.
|
Re: wenn edit nicht dem format entspricht dann ... ??
was heißt eine passende edit komponente?
und den kram mit mask edit blick ich nicht durch hab noch nie was in der richtung gemacht |
Re: wenn edit nicht dem format entspricht dann ... ??
Es gibt spezielle Editkomponenten für speziell Inputformate (Datum, Dateinamen u.ä.)
EditMask ist eine Eigenschaft der oben genannten Komponente. Wenn du hierfür den wert '!90:00:00;1;_' setzt sieht der Edit so aus: __:__:__. Es kann jetzt nur noch an den mit _ markierten Positionen Zahlen eingegeben werden. |
Re: wenn edit nicht dem format entspricht dann ... ??
wo finde ich die komponente und wiekann ich das dann noch machen das ich halt nur 24 stunden und 60 sekunden und minuten eingeben kann also einen gültigen zeitwert?
|
Re: wenn edit nicht dem format entspricht dann ... ??
Hallo,
auf gültige Zeit und Format '00:00:00' prüfen:
Delphi-Quellcode:
var aTime: TDateTime;
Begin if Length(Edit1.Text) = 8 then begin try ATime := StrToTime(Edit1.Text); except showmessage('Bitte gültige Zeit angeben'); end; end else Showmessage('Bitte Zeit im Format "00:00:00" angeben'); |
Re: wenn edit nicht dem format entspricht dann ... ??
ok zu spät gesehen hab es jetzt anders gemacht mit drei edit feldern.
hätte ich deins früher gesehen hätte ich das wohl genommen aber finde meine jetzige lösung auch gut. |
Re: wenn edit nicht dem format entspricht dann ... ??
Alternativ kannste dir auch mal reguläre Ausdrücke anschauen. Das sollte das sein, was du suchst ;)
|
Re: wenn edit nicht dem format entspricht dann ... ??
was meinst du mit reguläre ausdrücke anschauen hast du da mal ein beispiel für mein problem z.b.?
|
Re: wenn edit nicht dem format entspricht dann ... ??
Reguläre Ausdrücke dienen als Schablonen für Strings. Man kann damit also entweder nach Teilstrings mit bestimmten Format in einem größeren String suchen, oder eben prüfen ob ein bestimmter String ein bestimmtes Format hat.
Je nach Delphi-Version brauchst du eine extra Komponente, die dir die Arbeit mit den Ausdrücken abnimmt. Beispiel für einen Ausdruck für die Uhrzeit ohne Sekunden (nicht selbstgeschrieben, es gibt ja Google):
Code:
Bis man die Dinger lesen kann, braucht es seine Zeit ;)
^([0-1]\d|2[0-3]|\d):[0-5]\d$
Ich denke mal, hier dürften recht viele Themen zu regulären Ausdrücken zu finden sein, einfach mal die Suchfunktion bemühen. |
Re: wenn edit nicht dem format entspricht dann ... ??
Hallo,
stehe gerade vor einem ähnlichen problem. die OH zu reg expr bei delphi ist ja sehr sehr spärlich, zumindest in version 5 ich möchte das ganze in Pos() benutzen also ala
Delphi-Quellcode:
nur wie muß [([0-9]){2}] in delphi ausschauen damit es in Pos() funktioniert ?
position := Pos(ListBox2.items[ccc] + ' [([0-9]){2}]' + FormatDateTime('hh', time),Memo1.Lines.Text);
an der stelle soll auf eine zweistellige zahl geprüft werden, das ganze ist der monatstag, aber das ist nicht so wichtig, mir kommt es nur darauf an das an dieser stelle eine zweistellige zahl steht hat da jemand eine idee ? nebenbei suche ich natürlich noch weiter bei google ;) |
Re: wenn edit nicht dem format entspricht dann ... ??
Zitat:
Delphi-Quellcode:
Allerdings wäre damit auch als Zeiteingabe '99.99.99' möglich. Also muß das erste Zeichen noch auf 0..2 eingegrenzt werden, das 4. auf 0..5 usw.
// Edit muß leer/richtig vorbesetzt sein, z.B. OI-Einstellung nicht auf Edit1
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if key <> #8 then begin if length (Edit1.Text) < 8 then begin // ACHTUNG : hier ist Tastendruck noch nicht verarbeitet für Text, obwohl // Taste selber bereits verfügbar ! Deshalb "[2,5]" und "< 8" !! if length (Edit1.Text) in [2,5] then begin if not (key in[':']) then key := #0; end else begin if not (key in ['0'..'9']) then key := #0; end; end else key := #0; end; end; |
Re: wenn edit nicht dem format entspricht dann ... ??
Hai ihr,
warum nehmt ihr für einen Zeiteingabe nicht einfach einen TDateTimePicker? Dann hat man keinen Stress mit eingabeprüfungen und hat auch immer das vom Anwender in Windows eingestellt Zeitformat. OnKeyPress und Co ist dafür doch für die Füsse. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:03 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