Entwickler-Ecke

Windows API - DateTimePicker Wochentag auslesen


vogeste0 - Mi 20.04.05 12:07
Titel: DateTimePicker Wochentag auslesen
Hallo *ALL,

also zunächst möchte ich mich kurz Vorstellen (gehört sich glaube ich so!). Ich bin neu im Delphi-Forum und Schüler einer Technikerschule. Für ein Projekt der Schule schreibe ich ein Programm zur Arbeitszeiterfassung. Leider bin ich noch ein
Frischling im Delphi-Programmieren. Die wichtigsten Dinge habe ich schon herausbekommen, jedoch muss ich Euch hier mit einer
für Profis wahrscheinlich sinnlosen Frage nerven.

Ich habe bei der Arbeitszeiterfassung ein DateTimePicker eingesetzt. Dieser wird beim Öffnen des Formulars auf das aktuelle Datum gesetzt.


Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.DateTime(Sender: TObject);
begin
   DateTimePicker1.Date := now;
   filltextgrid
end;


Weiterhin wird der Wert aus dem DateTimePicker später mit in eine Textfile geschrieben.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
procedure TForm1.SaveClick(Sender: TObject);
var Datei:TStringlist;
var Zeile:String;
begin
{hiermit wird eine Stringlist erstellt}
  Datei:=TStringlist.Create;
 {hiermit wird die VAR Zeile erstellt und mit einem zusammengesetzten String
befüllt}

  Zeile:=DateToStr(DateTimePicker1.Date) + '=' + ComboBox1.Text + ',' +
  ComboBox2.Text + ',' + ComboBox3.Text + ',' + ComboBox4.Text;
{hiermit wird die aktuelle Datei aufgerufen und an das Ende der Datei die
nächste Zeile eingefügt}

  If FileExists(ExtractFilePath(Application.ExeName)+'arbeitszeit.txt'then
  Datei.LoadFromFile(ExtractFilePath(Application.ExeName)+'arbeitszeit.txt');
{hiermit wird die oben gefüllte VAR Zeile an die Stringlist übergeben}
  Datei.Values[DateToStr(DateTimePicker1.Date)]:= ComboBox1.Text + ',' +
  ComboBox2.Text + ',' + ComboBox3.Text + ',' + ComboBox4.Text;
{hiermit wird die VAR Datei, die die Stringlist enthält in einen Datei
geschrieben. Um den Ablageort mitzugeben, liest man über den Wert:
ExtractFilePath(Application.ExeName) aus und verknüpft diesen Wert mit dem
Dateinamen}

  Datei.SaveToFile(ExtractFilePath(Application.ExeName)+'arbeitszeit.txt');
{ganz wichtig, mit Datei.Free wird der Speicher anschließend wieder freigegeben}
  Datei.Free;
  end;
end;


Jetzt die eigentliche Frage: Es stellt kein Problem dar, den Datumswert in die Textfile zu übertragen, jetzt möchte ich jedoch den
Wochentag (Mo; Di; usw.) zusätzlich in die Textfile speichern. Was muss ich dazu tun?

Bitte leicht verständliche Antworten, da ich noch ganz am Anfang der Delphi-Evolutionskette stehe.

Danke und Gruß
:? vogeste0

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.


jasocul - Mi 20.04.05 12:11

:welcome: im DF.

In Delphi gibt es ein Funktion DayOfTheWeek iirc.
Die sollte dir das passende liefern.


vogeste0 - Mi 20.04.05 12:34
Titel: Re: Antwort von jasocul
Hallo jasocul,

danke für die schnelle Antwort. DayofWeek ist ok, habe ich schon einmal in einem Beispielprogramm gesehen, jedoch verstehe ich nicht wie ich die DayOfWeek Geschichte aus dem DateTimePicker herausbekomme! Kannst Du mir ein kurzes Code-Beispiel geben? Das würde mir sehr helfen. Denn zur Zeit ist nix verstehn in Athen angesagt.

Danke
vogeste0 :?:


alias5000 - Mi 20.04.05 12:41

Hi
schau mal unter http://www.delphibasics.co.uk/RTL.asp?Name=DayOfTheWeek
Dort ist die ganze Funktion ausführlich erklärt
Als Datum übergibts du einfach Pickerxy.Date


jasocul - Mi 20.04.05 12:46

Einmal auf die Schnelle:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button2Click(Sender: TObject);
var
  DOW : String;
begin
  case DayOfWeek(DateTimePicker1.Date) of
    7 : DOW := 'SA';
    1 : DOW := 'SO';
    2 : DOW := 'MO';
    3 : DOW := 'DI';
    4 : DOW := 'MI';
    5 : DOW := 'DO';
    6 : DOW := 'FR';
  end;
  ShowMessage(dow);
end;

Ich habe nicht alle Wochentage geprüft. Evtl ist ein Index noch falsch.
Besser wäre es, wenn du dir eine vernünftige Funktion davon machst.


vogeste0 - Mi 20.04.05 12:58
Titel: Re: Bitte ein kurzes Codebeispiel
Hallo jasocul, hallo alias5000,

ihr habt mir sehr geholfen. Jasocul, danke für das kurze Code-Beispiel.
Alias5000, danke für den Link-Hinweis, diese Seite kannte ich noch nicht.

Gruß
vogeste0


jasocul - Mi 20.04.05 12:59

Habe gerade festgestellt, dass der Wert für Samstag 7 sein muss. Oben im Source schon korrigiert.


vogeste0 - Mi 20.04.05 13:59
Titel: Re: Danke Danke
Hallo Jasocul,

echt super, jetzt funktioniert es einwandfrei. Ich habe den Code schon eingebastelt. Beim Testen war mir das mit dem Samstag auch aufgefallen, jedoch wusste ich nicht wie simple der Fehler jetzt zu beseitigen geht. Ich dachte schon wieder viel zu umständlich.

super super

Gruß
vogeste0 :D