Autor Beitrag
kiwicht
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: Di 28.01.03 18:13 
Hallo zusammen..

ich will meinen Anwendern die Datums-Eingabe etwas vereinfachen und deshalb ermöglichen, anstatt das Datum in folgender Form
30.05.1979
in dieser Form, ohne Punkte einzugeben:
30051979

Ich hätte jetzt, Anfänger wie ich bin :D, einfach 3 EditFelder genommen, und dann jenes:
Datum := Edit1.Text + '.' + Edit2.Text + '.' + Edit3.Text

Ich habs auch schon so, zugegeben etwas eleganter, probiert, das hat aber nicht geholfen (Fehlermeldung: Kein Datum):

FormatDateTime('dd"."mm"."yyyy', StrToDate(Edit.Text);

Gibts de facto eine Alternative zu meinen stümperhaften :shock: Versuchen?

mit bestem Dank

kiwicht
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Di 28.01.03 18:22 
Hallo Kiwicht,

die einfachste Möglichkeit ist:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var s:String;
...
  s:=Edit1.Text;
  if (Length(s)<>8) then // 30051979 entspricht 8 Stellen
  begin
    ShowMessage('Eingabe ist falsch');
    Edit1.SetFocus;
    Exit;
  end; // if
  EditDatum.Text:=Format("%s.%s.%s", [System.Copy(s, 1, 2), System.Copy(s, 3, 2), System.Copy(s, 5, 4)]);


Schwieriger wird es, wenn er bei Tagen und Monaten keine führende Null angibt. Also statt 06051955 --> 651955. Aber damit nicht genug. Wenn schon komfortabel, was ist dann, wenn der Benutzer das Jahr nur 2-stellig angibt --> 6555. Dann habe ich noch zusätzlich das Problem, dass ich nicht einmal weiss, in welchem Jahrhundert ich bin;-)

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
Wolff68
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: Di 28.01.03 19:04 
Oder Du setzt Dir einfach die Punkte, wohin sie gehören:
ausblenden Quelltext
1:
2:
3:
4:
  s := Edit1.Text; // TTMMYY oder TTMMYYYY
  Insert('.', s, 3);
  Insert('.', s, 6);
  d := StrToDate(s);

Damit ist auch egal, ob er das Jahr 2- oder 4-Stellig angibt. 8)
die Führenden Nullen bei Tag oder Monat sind aber ein MUSS.
Das ganze sollte übrigends unbedingt in einen Try-Except Block.

_________________
"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Di 28.01.03 19:57 
hallo kiwicht!

ich würde ein TMaskEdit verwenden, bei dem ich das property 'EditMask ' auf '!90/90/0000;1;_' setze.
somit ersparst du dir schon die überprüferei auf gültige datumseingaben :)
mfg, stefan
kiwicht Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: Mi 29.01.03 17:50 
ach gott.. soviel antworten.. kann mich garnich entscheiden.. :shock: :D ..

ich probier alle mal aus, weil gut sehen sie alle aus, vielen dank dafür!

mfg
kiwicht