Autor Beitrag
jf_stgt
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88



BeitragVerfasst: Di 21.04.09 12:04 
Hallo zusammen,

die Funktion StrToDate wandelt ja Benutzereingaben in ein DateTime Objekt um.
In unserer Software wird eine Benutzereingabe eines Geburtsdatums umgewandelt durch

ausblenden Delphi-Quelltext
1:
2:
3:
4:
...
dtObj := StrToDate(Edit1.Text);
Edit1.Text := DateToStr(dtObj);
...


Tut soweit auch wenn jemand z.B. 1.7.70 eingibt.
Dies wird dann umgewandelt in 01.07.1970.

Gibt der Kunde allerdingg 1.7.50 ein, wird das Datum in 01.07.2050 gewandelt.
Das Problem ist, dass dies für ein Geburtsdatum natürlich kein Sinn macht und eigentlich als Jahr 1950 rauskommen hätte müssen. Gerade bei Geburtsdaten.
Hat jemand eine Idee, was man da tun könnte?
Man könnte dies natürlich manuell überwachen aber vielleicht gibts ja irgendwas, was die StrToDate steuert.

Gruß
Jürgen
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Di 21.04.09 12:12 
ich hab zwar keine direkte lösung aber wie wäre es wenn du ein Mask-Edit verwenden würdest und damit den User "zwingst" die Eingabe vollständig auszufüllen??

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Di 21.04.09 12:13 
Oder noch besser: Du bietest ihm 3. Dropdown-Listen an und er kann es damit auswählen.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: Di 21.04.09 13:35 
user profile iconGTA-Place hat folgendes geschrieben Zum zitierten Posting springen:
Oder noch besser: Du bietest ihm 3. Dropdown-Listen an und er kann es damit auswählen.
Das ist die Frage ob das besser ist. Mich nervt sowas eher.

_________________
In the beginning was the word.
And the word was content-type: text/plain.
jf_stgt Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88



BeitragVerfasst: Di 21.04.09 14:31 
user profile iconGTA-Place hat folgendes geschrieben Zum zitierten Posting springen:
Oder noch besser: Du bietest ihm 3. Dropdown-Listen an und er kann es damit auswählen.


Das ist für einen User nicht gerade Benutzefreundlich - sorry!
Auch die vorgeschlagene Lösung mit Mask Edit würde zwar gehen, aber auch das finde ich nicht soo der Brüller.
Der Kunde muss ruck zuck die Daten eingeben und er mostert jetzt schon, dass er das 19xx mit eingeben muss.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 21.04.09 15:07 
Moin!

Das das Problem nun mal nicht eindeutig lösbar ist, wirst du dich für eine ähnlich geartete Lösung entscheiden müssen. Kompromisse wären:
  • Den Splitpoint dynamisch auf 5 Jahr in die Zukunft legen -> 2009..2013,1914...
  • Wenn das Datum um einen bestimmten Betrag vom aktuellen Jahr abweicht, Fragen, geschickt den Default-Button dazu auswählen
  • 4-stellige Eingabe erzwingen
cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Di 21.04.09 15:10 
naja, ein geburtsdatum kann ja nicht in der Zukunft liegen, also wenn es in der Zukunft liegt, einfach 100 abziehen.
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Di 21.04.09 16:08 
user profile iconjf_stgt hat folgendes geschrieben Zum zitierten Posting springen:
Der Kunde muss ruck zuck die Daten eingeben und er mostert jetzt schon, dass er das 19xx mit eingeben muss.

Dir ist aber schon bewusst, dass man das Auswählen der Combobox genau wie das Eintippen in ein Feld mit der Tastaur erledigen kann? Einmal 12 tippen wählt im ersten Feld auch 12 aus ;-)

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
jf_stgt Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88



BeitragVerfasst: Di 21.04.09 16:24 
Hallo!

Danke für eure rege Diskussion und Vorschläge.

user profile iconGTA-Place hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconjf_stgt hat folgendes geschrieben Zum zitierten Posting springen:
Der Kunde muss ruck zuck die Daten eingeben und er mostert jetzt schon, dass er das 19xx mit eingeben muss.

Dir ist aber schon bewusst, dass man das Auswählen der Combobox genau wie das Eintippen in ein Feld mit der Tastaur erledigen kann? Einmal 12 tippen wählt im ersten Feld auch 12 aus ;-)

Wenn ich das Datum direkt eintippe, komme ich mit wenigen Klicks aus. Wenn man z.B. das Jahr über ein Dropdown Feld auswählt, dauert es ewig über Maus oder Tastatur.

user profile iconBoldar hat folgendes geschrieben Zum zitierten Posting springen:
naja, ein geburtsdatum kann ja nicht in der Zukunft liegen, also wenn es in der Zukunft liegt, einfach 100 abziehen.


Dies gefällt mir für mich am besten. Danke.

Gruß
Jürgen
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Di 21.04.09 16:28 
user profile iconjf_stgt hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich das Datum direkt eintippe, komme ich mit wenigen Klicks aus. Wenn man z.B. das Jahr über ein Dropdown Feld auswählt, dauert es ewig über Maus oder Tastatur.

Versteh ich jetzt nicht. Vorgehen für ein fiktives Geburtsdatum (Angaben in Klammern entsprechen den Tasten der Tastatur):

ausblenden Quelltext
1:
2:
Dropdown: [1] [Tab] [1] [Tab] [1] [9] [5] [0]
Textfeld: [1]  [.]  [1]  [.]  [1] [9] [5] [0]


Ich sehe da jetzt keinen Unterschied?!

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Di 21.04.09 16:29 
user profile iconjf_stgt hat folgendes geschrieben Zum zitierten Posting springen:

Wenn ich das Datum direkt eintippe, komme ich mit wenigen Klicks aus. Wenn man z.B. das Jahr über ein Dropdown Feld auswählt, dauert es ewig über Maus oder Tastatur.

Gruß
Jürgen


darf ich meinen Informatik-Lehrer zitieren? "Mäuse sind was für Katzen"

und mittels richtiger Taborder usw sind mir somanche dieser programme lieber als diese "Black boxes" um es mal übertrieben zu formulieren.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
jf_stgt Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88



BeitragVerfasst: Di 21.04.09 16:42 
user profile iconGTA-Place hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconjf_stgt hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich das Datum direkt eintippe, komme ich mit wenigen Klicks aus. Wenn man z.B. das Jahr über ein Dropdown Feld auswählt, dauert es ewig über Maus oder Tastatur.

Versteh ich jetzt nicht. Vorgehen für ein fiktives Geburtsdatum (Angaben in Klammern entsprechen den Tasten der Tastatur):

ausblenden Quelltext
1:
2:
Dropdown: [1] [Tab] [1] [Tab] [1] [9] [5] [0]
Textfeld: [1]  [.]  [1]  [.]  [1] [9] [5] [0]


Ich sehe da jetzt keinen Unterschied?!


Die Eingabe ist aber [1].[1].[5][0]
Darum gehts.

user profile iconelundril hat folgendes geschrieben:
darf ich meinen Informatik-Lehrer zitieren? "Mäuse sind was für Katzen"
lg elundril


Klasse Spruch!

Moderiert von user profile iconNarses: Zitat repariert
ssb-blume
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 375
Erhaltene Danke: 7

XP, W7, W8
Deutschland
BeitragVerfasst: Mi 22.04.09 10:09 
Hallo,
versuch mal Folgendes:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
uses DateUtils;
...
var d: TDate;
...
  d := StrToDate(Edit1.Text);
  if YearOf(now) < YearOf(d) then d := IncYear(d, -100);
  Edit1.Text := DateToStr(d);
....

_________________
Brain: an apparatus with which we think we think.
jf_stgt Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88



BeitragVerfasst: Mi 22.04.09 11:41 
user profile iconssb-blume hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,
versuch mal Folgendes:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
uses DateUtils;
...
var d: TDate;
...
  d := StrToDate(Edit1.Text);
  if YearOf(now) < YearOf(d) then d := IncYear(d, -100);
  Edit1.Text := DateToStr(d);
....


Guter Code!
Danke!
Damit schließe ich mal diese Frage hier.

Gruß
Jürgen
Stundenplan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128
Erhaltene Danke: 32

Win 7
Delphi 7 Pers., C# (VS 2010 Express)
BeitragVerfasst: Mi 22.04.09 16:42 
Es geht auch mit  TwoDigitYearCenturyWindow := 50;
Windows nimmt als Bezugsjahr nämlich das aktuelle, also 2009. Und TwoDigitYearCenturyWindow setzt das Bezugsjahr um 50 Jahre zurück.