Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi wenn edit nicht dem format entspricht dann ... ?? (https://www.delphipraxis.net/65673-wenn-edit-nicht-dem-format-entspricht-dann.html)

mquadrat 20. Mär 2006 08:32

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 ;)

delphineuling88 20. Mär 2006 10:14

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.?

mquadrat 20. Mär 2006 10:18

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:
^([0-1]\d|2[0-3]|\d):[0-5]\d$
Bis man die Dinger lesen kann, braucht es seine Zeit ;)


Ich denke mal, hier dürften recht viele Themen zu regulären Ausdrücken zu finden sein, einfach mal die Suchfunktion bemühen.

Nisbo 30. Mär 2006 14:46

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:
position  := Pos(ListBox2.items[ccc] + ' [([0-9]){2}]' + FormatDateTime('hh', time),Memo1.Lines.Text);
nur wie muß [([0-9]){2}] in delphi ausschauen damit es in Pos() funktioniert ?

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 ;)

Hansa 30. Mär 2006 17:02

Re: wenn edit nicht dem format entspricht dann ... ??
 
Zitat:

Zitat von delphineuling88
ich will überprüfen ob edit dem hh:mm:ss format enspricht wenn das nicht so ist soll er ne nachricht zeigen ...[/delphi]

Also erst reagieren, wenn die Eingabe abgschlossen ist und sich letztenendes als falsch herausstellt ? Und den User zwingen, wieder von vorne anzufangen und dann andere Fehler zu machen ? Nene. Frage Murphy. :mrgreen: So was ist doch in Delphi narrensicher im OnKeyPress zu regeln.

Delphi-Quellcode:
// 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;
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.

Sharky 30. Mär 2006 17:06

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 14:31 Uhr.
Seite 2 von 2     12   

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