Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi wochentag berechnen (https://www.delphipraxis.net/35250-wochentag-berechnen.html)

tobiasw 4. Dez 2004 13:00


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:
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
Nur das ganze funktioniert nicht so wirklich. Ich hoffe jemand hat einen Idee wie ich es lösen könnte

Nikolas 4. Dez 2004 13:03

Re: wochentag berechnen
 
Das wird dir helfen: Delphi-Referenz durchsuchendayoftheweek.

Sharky 4. Dez 2004 13:03

Re: wochentag berechnen
 
Hai tobiasw,

wenn Du es nicht selber machen möchtest ;-) -> Delphi-Referenz durchsuchenDayOfTheWeek()

tobiasw 4. Dez 2004 13:08

Re: wochentag berechnen
 
mmh

das sieht dann jetzt so aus

Delphi-Quellcode:
function DayOfTheWeek(const AValue: TDateTime): Word;
aber was für parameter muss ich dort denn noch reinschreiben????

Keldorn 4. Dez 2004 13:13

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

tobiasw 4. Dez 2004 13:15

Re: wochentag berechnen
 
jetzt würde es so aussehen

Delphi-Quellcode:
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;
Wenn ich jetzt aber die Funktion aufrufe bekomm ich nen Fehler
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 edit1.text:=FloatTostr(WochenTag(AYear, AMonth, ADay));

jfheins 4. Dez 2004 13:18

Re: wochentag berechnen
 
Zitat:

Zitat von tobiasw
Wenn ich jetzt aber die Funktion aufrufe bekomm ich nen Fehler

Ach. Ist ja interessant. Und, was sagt er?

tobiasw 4. Dez 2004 13:20

Re: wochentag berechnen
 
undefinierter Bezeichner obwohl ich ihn doch in meiner Funktion hab

fkerber 4. Dez 2004 13:21

Re: wochentag berechnen
 
Hi!

Und was sagt er, wäre der undefinierte Bezeichner?


Ciao Frederic

jfheins 4. Dez 2004 13:23

Re: wochentag berechnen
 
Wenn du
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 edit1.text:=FloatTostr(WochenTag(AYear, AMonth, ADay));
schreibst, und AYear, AMonth und ADay vorher nicht definiert hast, woher soll er dann wissen, welchen tag du haben möchtest ?
Probiers mal so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 edit1.text:=FloatTostr(WochenTag(2004, 12, 4));
P.S. Geändert, aber delphi ist nicht case-Sensitive ... :roll:

tobiasw 4. Dez 2004 13:23

Re: wochentag berechnen
 
AYear

tobiasw 4. Dez 2004 13:29

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

Lantis 4. Dez 2004 13:29

Re: wochentag berechnen
 
Hi, vielleicht hilft Dir das hier ein wenig.
Delphi-Quellcode:
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;
Gruß Lantis

tobiasw 4. Dez 2004 13:32

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

Nikolas 4. Dez 2004 13:40

Re: wochentag berechnen
 
Hast du die passende Unit eingebunden?

Pr0g 4. Dez 2004 13:40

Re: wochentag berechnen
 
Bei mir geht der Code ohne Probleme:
Delphi-Quellcode:
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;
Aber warum nutzt du FoatToStr bei einem Integer? Ist doch AFAIK nur langsamer.

MfG Pr0g

tobiasw 4. Dez 2004 13:42

Re: wochentag berechnen
 
@Pr0g der Source geht ja ich will aber an der Stelle
Delphi-Quellcode:
Edit1.Text := FloatToStr(WochenTag(2004, 12, 4));
aber 2005, 12, 4 meine Edit felder berücksichtigen

jfheins 4. Dez 2004 13:47

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;

mh166 4. Dez 2004 13:49

Re: wochentag berechnen
 
Dann mach halt:

Delphi-Quellcode:
Edit1.Text := FloatToStr(WochenTag(IntToStr(JahresEdit.Text), IntToStr(MonatsEdit.Text), IntToStr(TagesEdit.Text)));
Ein bisschen Eigeninitiative sollte man doch erwarten können... :roll:

mfg, mh166

tobiasw 4. Dez 2004 13:51

Re: wochentag berechnen
 
ja toll so hatte ich das ja
Delphi-Quellcode:
edit1.text:=(IntToStr(WochenTag(Strtoint(edit2.text), strtoint(edit3.text), strtoint(edit4.text))));
dann tritt dort ja der Fehler wie oben beschrieben auf

jfheins 4. Dez 2004 13:54

Re: wochentag berechnen
 
Zeig mal deinen Quellcode, wie du ihn jetzt hast, und was genau nicht geht bzw. welcher Fehler genau kommt ...

tobiasw 4. Dez 2004 13:55

Re: wochentag berechnen
 
@mh116 dabei tritt auch ein Fehler auf das es keine überladenen Version von IntToStr mit diesen Argumenten gibt

tobiasw 4. Dez 2004 13:57

Re: wochentag berechnen
 
Delphi-Quellcode:
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.
So sieht es jetzt aus

tobiasw 4. Dez 2004 13:58

Re: wochentag berechnen
 
invalid arguments so heißt der Fehler

jfheins 4. Dez 2004 14:04

Re: wochentag berechnen
 
Delphi-Quellcode:
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;
So ist's zumindest bei meinem D7 ...

Pr0g 4. Dez 2004 14:04

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.

tobiasw 4. Dez 2004 16:31

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?

jfheins 4. Dez 2004 16:32

Re: wochentag berechnen
 
Welcher Wochentag ist am 2004. Dezember des Jahres 4 ???
(Kein Monat hat 2004 Tage ...)

tobiasw 4. Dez 2004 16:37

Re: wochentag berechnen
 
genau das mal wieder total doofer Fehler

stina 6. Mär 2013 11:10

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:

mkinzler 6. Mär 2013 11:14

AW: wochentag berechnen
 
Und in den Antworten vorher sind genügend Hinweise für die Lösung!

p80286 6. Mär 2013 11:20

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

Blup 6. Mär 2013 12:04

AW: wochentag berechnen
 
Für die ganz Faulen: http://www.delphibasics.co.uk/RTL.asp?Name=DayOfWeek


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz