![]() |
wochentag berechnen
hi
mein Prog hat 3 Eingaben: Tag, Monat, Jahr. Ausgabe ist: Wochentag. Ich möchte also wenn ich bei tag z.b. 1 eingeb, Monat 2 und Jahr 1990 das er mir den Wochen tag ausgibt. Das ganze möchte ich über eine Funktion realisieren.
Delphi-Quellcode:
Nur das ganze funktioniert nicht so wirklich. Ich hoffe jemand hat einen Idee wie ich es lösen könnte
function wochentag (tag, monat, jahr:double):double;
var wo_tag:integer; begin wo_tag=(jahr div 4 +jahrhundert div 4+(13*monat-1)div 5+tag+jahr-2*jahrhundert)mod7; result:=wo_tag |
Re: wochentag berechnen
Das wird dir helfen:
![]() |
Re: wochentag berechnen
|
Re: wochentag berechnen
mmh
das sieht dann jetzt so aus
Delphi-Quellcode:
aber was für parameter muss ich dort denn noch reinschreiben????
function DayOfTheWeek(const AValue: TDateTime): Word;
|
Re: wochentag berechnen
einen Tdatetime-wert vielleicht? Wie der aufgebaut ist, verrät dir die OH.
Du kannst mit encode-date einen Tdatetime-wert aus Tag,monat, jahr erstellen. Mfg Frank |
Re: wochentag berechnen
jetzt würde es so aussehen
Delphi-Quellcode:
Wenn ich jetzt aber die Funktion aufrufe bekomm ich nen Fehler
function WochenTag(AYear, AMonth, ADay: integer): integer;
var i : integer; begin i:=DayOfWeek(EncodeDate(AYear,AMonth,ADay))-1; if i=0 then i:=7; Result:=i; end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin edit1.text:=FloatTostr(WochenTag(AYear, AMonth, ADay)); |
Re: wochentag berechnen
Zitat:
|
Re: wochentag berechnen
undefinierter Bezeichner obwohl ich ihn doch in meiner Funktion hab
|
Re: wochentag berechnen
Hi!
Und was sagt er, wäre der undefinierte Bezeichner? Ciao Frederic |
Re: wochentag berechnen
Wenn du
Delphi-Quellcode:
schreibst, und AYear, AMonth und ADay vorher nicht definiert hast, woher soll er dann wissen, welchen tag du haben möchtest ?
procedure TForm1.Button1Click(Sender: TObject);
begin edit1.text:=FloatTostr(WochenTag(AYear, AMonth, ADay)); Probiers mal so:
Delphi-Quellcode:
P.S. Geändert, aber delphi ist nicht case-Sensitive ... :roll:
procedure TForm1.Button1Click(Sender: TObject);
begin edit1.text:=FloatTostr(WochenTag(2004, 12, 4)); |
Re: wochentag berechnen
AYear
|
Re: wochentag berechnen
so das Problem wäre gelöst hatte doch tatsächlich vergessen das als Variable zu deklarieren. Wenn ich jetzt aber Tag 1, Monat 2, Jahr 2004 schreibe bekomm ich einen Fehler der heißt invalid argument to date encode
|
Re: wochentag berechnen
Hi, vielleicht hilft Dir das hier ein wenig.
Delphi-Quellcode:
Gruß Lantis
function Wochentag(Datum:TDateTime):string;
var days: array[1..7] of string; begin days[1] := 'Sonntag'; days[2] := 'Montag'; days[3] := 'Dienstag'; days[4] := 'Mittwoch'; days[5] := 'Donnerstag'; days[6] := 'Freitag'; days[7] := 'Samstag'; Result:=(days[DayOfWeek(Datum)]); end; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(Wochentag(Date)); //gibt den Wochentag von Heute aus end; |
Re: wochentag berechnen
@lantis danke das ist aus der Delphi Hilfe da bin ich auch schon drübergestolpert aber ich soll ja den Wochentag von einem belibigen tag,monat und Jahr ausgeben lasssen
|
Re: wochentag berechnen
Hast du die passende Unit eingebunden?
|
Re: wochentag berechnen
Bei mir geht der Code ohne Probleme:
Delphi-Quellcode:
Aber warum nutzt du FoatToStr bei einem Integer? Ist doch AFAIK nur langsamer.
function WochenTag(AYear, AMonth, ADay: Integer): Integer;
begin Result := DayOfWeek(EncodeDate(AYear, AMonth, ADay)) - 1; if Result = 0 then Result := 7; end; procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text := FloatToStr(WochenTag(2004, 12, 4)); end; MfG Pr0g |
Re: wochentag berechnen
@Pr0g der Source geht ja ich will aber an der Stelle
Delphi-Quellcode:
aber 2005, 12, 4 meine Edit felder berücksichtigen
Edit1.Text := FloatToStr(WochenTag(2004, 12, 4));
|
Re: wochentag berechnen
Schreib halt
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin showmessage (IntToStr(WochenTag(Strtoint(e1.text), strtoint(e2.text), strtoint(e3.text)))); end; |
Re: wochentag berechnen
Dann mach halt:
Delphi-Quellcode:
Ein bisschen Eigeninitiative sollte man doch erwarten können... :roll:
Edit1.Text := FloatToStr(WochenTag(IntToStr(JahresEdit.Text), IntToStr(MonatsEdit.Text), IntToStr(TagesEdit.Text)));
mfg, mh166 |
Re: wochentag berechnen
ja toll so hatte ich das ja
Delphi-Quellcode:
dann tritt dort ja der Fehler wie oben beschrieben auf
edit1.text:=(IntToStr(WochenTag(Strtoint(edit2.text), strtoint(edit3.text), strtoint(edit4.text))));
|
Re: wochentag berechnen
Zeig mal deinen Quellcode, wie du ihn jetzt hast, und was genau nicht geht bzw. welcher Fehler genau kommt ...
|
Re: wochentag berechnen
@mh116 dabei tritt auch ein Fehler auf das es keine überladenen Version von IntToStr mit diesen Argumenten gibt
|
Re: wochentag berechnen
Delphi-Quellcode:
So sieht es jetzt aus
function WochenTag(AYear, AMonth, ADay: integer): integer;
var i : integer; begin i:=DayOfWeek(EncodeDate(AYear,AMonth,ADay))-1; if i=0 then i:=7; Result:=i; end; procedure TForm1.Button1Click(Sender: TObject); begin //edit1.text:=(IntToStr(WochenTag(Strtoint(edit2.text), strtoint(edit3.text), strtoint(edit4.text)))); // dort kommt ein Fehler Edit1.Text := FloatToStr(WochenTag(IntToStr(edit2.Text), IntToStr(Edit3.Text), IntToStr(Edit4.Text))); // dort genau so end; end. |
Re: wochentag berechnen
invalid arguments so heißt der Fehler
|
Re: wochentag berechnen
Delphi-Quellcode:
So ist's zumindest bei meinem D7 ...
procedure TForm1.Button1Click(Sender: TObject);
begin //edit1.text:=(IntToStr(WochenTag(Strtoint(edit2.text), strtoint(edit3.text), strtoint(edit4.text)))); // dort kommt kein Fehler Edit1.Text := FloatToStr(WochenTag(IntToStr(edit2.Text), IntToStr(Edit3.Text), IntToStr(Edit4.Text))); // dort muss man ein bisschen mehr nachdenken, damit auch keiner kommt ... end; |
Re: wochentag berechnen
Hast du auch die Reihenfolge der Parameter beachtet, also das Jahr in Edit2, Monat in 3 und Tag in 4? Bei mir klappts.
|
Re: wochentag berechnen
es war wirklich so das die edit felder zwischen tag und Jahr vertauscht waren. Meine Frage wieso macht den das soviel aus?
|
Re: wochentag berechnen
Welcher Wochentag ist am 2004. Dezember des Jahres 4 ???
(Kein Monat hat 2004 Tage ...) |
Re: wochentag berechnen
genau das mal wieder total doofer Fehler
|
AW: wochentag berechnen
Hey das is keine Antwort sondern ne Frage!
Also ich soll mit vcl ein programm erstellen in das man name und Geburtsdatum einträgt und wenn man auf den button klickt soll son Satz erscheinen wie: Sie wurden an einem.......geboren oder Der Name und dannSie wurden an einem Sonntag geboren. Meine Frage ist wie mach ich das??? Beispiel: Name: Stina Geburtsdatum 6.7.1998 Stina sie wurden an einem Montag geboren. oder so ähnlich. Danke im Vorraus:-D Ps: Die Rechtschreibfehler sind gratis :lol: |
AW: wochentag berechnen
Und in den Antworten vorher sind genügend Hinweise für die Lösung!
|
AW: wochentag berechnen
So einen thread nach 8 Jahren ausbuddeln...
Du hast es schon einmal mit DayoftheWeek versucht? Wo klemmt es denn genau? Gruß K-H |
AW: wochentag berechnen
Für die ganz Faulen:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 Uhr. |
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