Einzelnen Beitrag anzeigen

The_Tremendous

Registriert seit: 10. Nov 2004
65 Beiträge
 
#5

Re: Problem mit Abfangen von ner Datumseingabe

  Alt 3. Jun 2005, 16:04
Also das System ist Klar, allerdings ist da wohl irgendwo noch ein kleiner Fehler drinne. Beim Ablauf wird die funktion zwar aufgerufen, aber die if-anweisungen gekonnt übersprungen.

Ich weis net ob es jetzt ein Fehler von mir ist, oder ob er in deinem Quelltext liegt.?


Delphi-Quellcode:
unit UDatumsberechnung;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Buttons;

type
  TfrmDatum = class(TForm)
    editDatumEingabe: TEdit;
    comboDatumAuswahl: TComboBox;
    RadioGroup1: TRadioGroup;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    lbltest: TLabel;
    BitBtn1: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
    function CheckString(EinleseDatum:string):TDate;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  frmDatum: TfrmDatum;

implementation

{$R *.dfm}

var EinleseDatum, test: string;
    Datum : TDateTime;

procedure TfrmDatum.BitBtn1Click(Sender: TObject);
begin
  try
   // wenns nicht zu except springt, ist alles in ordnung
   CheckString(EditDatumEingabe.Text);

   lbltest.Caption := DateToStr(Datum);
  except
   // der string war keine gültige Datumseingabe
   editDatumEingabe.Text := '';
   ShowMessage('Der Eingegebene Wert ist kein Zulässiges Datum! Bitte geben Sie ein gültiges Datum ein');
  end;
   
end;

function TFrmDatum.CheckString(EinleseDatum:string):TDate;
var
  i,i2:integer;
  s1,s2:string;
begin
if (pos('.',EinleseDatum)>0) and (pos(' ',EinleseDatum)<=0) then begin
  //wenn es 01.01.2005 ist
  result:=StrToDate(EinleseDatum);
end;
if (pos('-',EinleseDatum)>0) and (pos('-',EinleseDatum)<=2) then begin
  //wenn es 2005-01-01 ist
  i:=pos('-',EinleseDatum);
  s1:=copy(EinleseDatum,1,i-1);
  Delete(EinleseDatum,1,i);
  i:=pos('-',EinleseDatum);
  s2:=copy(EinleseDatum,1,i-1);
  Delete(EinleseDatum,1,i);
  result:=StrToDate(EinleseDatum + '.' + s2 + '.' + s1);
end;
if (pos('.',EinleseDatum)>0) and (pos(' ',EinleseDatum)>0) then begin
  //wenn es 1. Januar 2005 ist
  i:=pos(' ',EinleseDatum);
  s1:=Copy(EinleseDatum,1,i-2);
  Delete(EinleseDatum,1,i);
  i:=pos(' ',EinleseDatum);
  s2:=Copy(EinleseDatum,1,i-1);
  Delete(EinleseDatum,1,i);
  if LowerCase(s2)='januarthen s2:='1';
  if LowerCase(s2)='februarthen s2:='2';
  //...
  if LowerCase(s2)='dezemberthen s2:='12';
  result:=StrToDate(s1 + '.' + s2 + '.' + EinleseDatum);
end;

end;

end.
  Mit Zitat antworten Zitat