Autor Beitrag
Tarry
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 213
Erhaltene Danke: 1



BeitragVerfasst: Do 07.02.08 18:34 
Hi,
entweder steh ich auf dem Schlauch oder mein Delphi spinnt... (ich vermute mal ersteres ;))

Folgender Code:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Zeit := Now;
for i := 0 to lbxDatum.Count-1
do begin
    if (Zeit >= StrToDate(lbxDatum.Items[i])) and (Zeit >= StrToTime(lbxZeit.Items[i]))
    then begin
          // Wecken
         end;
   end;


Sollte eigentlich erkennen wann der Weckzeitpunkt abgelaufen ist und dann die entsprechende Prozedure ausführen, allerdings
führt er diese einfach immer aus egal ob der Zeitpunkt schon vorbei ist oder nicht... :(

Könnt ihr mir helfen?

Gruß
Tarry

_________________
"Es gibt zwei Dinge, die unendlich sind. Das Universum und die menschliche Dummheit. Beim Universum bin ich mir noch nicht ganz sicher." -Albert Einstein
Hexenkönig
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 41

Win XP
Delphi 2005 Personal, Delphi 5 Standart
BeitragVerfasst: Do 07.02.08 18:41 
könnte es sein, dass die Funktion strtodate und now verschiedene Formate zurückgeben?
Wie zum Beispiel T/M/J und M/T/J und es daraufhin zu fehlinterpretationen kommt?

_________________
Irren ist menschlich, aber wenn man richtigen Mist bauen will, braucht man einen Computer.
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 07.02.08 18:46 
Now ist vom Typ DateTime. Du kannst Now nicht einzeln mit Date und Time vergleichen.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
for i := 0 to lbxDatum.Count-1 do
  if Now >= (StrToDate(lbxDatum.Items[i]) + StrToTime(lbxZeit.Items[i])) then
  begin
    // Wecken
  end;

Außerdem empfehle ich dir eine bessere Codeformatierung, das hat schon manchen Fehler sichtbar gemacht ;)
Tarry Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 213
Erhaltene Danke: 1



BeitragVerfasst: Do 07.02.08 18:48 
user profile iconHexenkönig hat folgendes geschrieben:
könnte es sein, dass die Funktion strtodate und now verschiedene Formate zurückgeben?
Wie zum Beispiel T/M/J und M/T/J und es daraufhin zu fehlinterpretationen kommt?

Ne, das Problem liegt bei der Zeit, da stimmt das Format aber, hab's überprüft....

_________________
"Es gibt zwei Dinge, die unendlich sind. Das Universum und die menschliche Dummheit. Beim Universum bin ich mir noch nicht ganz sicher." -Albert Einstein
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 07.02.08 18:54 
Hast du meinen Post gesehen? So wie du es geschrieben hast, kann es gar nicht klappen. Eine Zeitangabe ist immer am 1. 1. 1970, das kannst du so gar nicht mit einem wirklichen Datum vergleichen. Du musst noch das Datum dazuaddieren.
Tarry Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 213
Erhaltene Danke: 1



BeitragVerfasst: Do 07.02.08 18:54 
user profile iconYogu hat folgendes geschrieben:
Außerdem empfehle ich dir eine bessere Codeformatierung, das hat schon manchen Fehler sichtbar gemacht ;)

DANKE, das klingt gut, ich werd's gleich mal testen ;)

Gruß
Tarry

EDIT: Die Formatierung ist so, wie ich's in der Schule gelernt habe...

Moderiert von user profile iconNarses: Zitat gekürzt

_________________
"Es gibt zwei Dinge, die unendlich sind. Das Universum und die menschliche Dummheit. Beim Universum bin ich mir noch nicht ganz sicher." -Albert Einstein
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: Do 07.02.08 19:20 
Dann zeig deinem Lehrer wie man richtig formatiert ;-)

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

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 07.02.08 19:24 
user profile iconTarry hat folgendes geschrieben:
Die Formatierung ist so, wie ich's in der Schule gelernt habe...

user profile iconGTA-Place hat folgendes geschrieben:
Dann zeig deinem Lehrer wie man richtig formatiert

Das solltest du wirklich tun. Es ist immer gut, wenn du die gleiche Syntax hast, wie sie auch Delphi nimmt. Das ist einfach nur besser, wenn du einen Fehler suchst. Beispielsweise fehlen öfters einfach nur end;s. Solche kleinen Fehlerchen kriegst dur raus, wenn du den Code gut formatierst.
Tarry Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 213
Erhaltene Danke: 1



BeitragVerfasst: Do 07.02.08 19:30 
user profile iconYogu hat folgendes geschrieben:
Beispielsweise fehlen öfters einfach nur end;s. Solche kleinen Fehlerchen kriegst dur raus, wenn du den Code gut formatierst.

Ob nen end; fehlt sehe ich doch auch bei:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
if true
then begin
      tuwas;
      tuwas;


Wie ist denn die richtige Formatierung ?


Gruß
Tarry

Moderiert von user profile iconNarses: Zitat gekürzt

_________________
"Es gibt zwei Dinge, die unendlich sind. Das Universum und die menschliche Dummheit. Beim Universum bin ich mir noch nicht ganz sicher." -Albert Einstein
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 07.02.08 19:40 
Jetzt werden wir aber arg OffTopic :wink:

Die richtige Formatierung ist die, die Borland für Delphi gewählt hat. Du siehst sie schon bei der einfachen Unit eines Formulars - und noch mehr, wenn du den Quelltext eines Formulars anzeigst, oder eine Event-Prozedur erstellst. Wenn du Zugriff auf die Delphi-Units hast, dann siehst du da auch, wie die formatiert sind.

Bei deiner Formatierung kommt man schnell mal zum rechten Rand, weil du mit so vielen Leerzeichen einrückst.

Hier mal ein Beispiel:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure Prozeder(Parameter1: Stringvar Parameter2: Integer);
var i: Integer;
begin
  Parameter2 := 0;
  for i := 1 to Length(Parameter1) do
  begin
    case Parameter[i] of
      #13: inc(Parameter2);
      '-': dec(Parameter2);
    end;
  end;
end;
Tarry Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 213
Erhaltene Danke: 1



BeitragVerfasst: Do 07.02.08 20:00 
Danke, werds mir für meine zukünftigen Projekte merken, glaub aber nicht, dass ich den Wecker, den ich grade programiere noch umschreibe... ;)

Gruß & Danke
Tarry

EDIT: Wie mache ich das denn bei if, then else ?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
if true then
begin
  TuWas;
  TuWas;
end;
else
begin
  TuWas;
  TuWas;
end;


Das sieht doch irgendwie beschei...den aus.... ;)

Moderiert von user profile iconNarses: Zitat entfernt

_________________
"Es gibt zwei Dinge, die unendlich sind. Das Universum und die menschliche Dummheit. Beim Universum bin ich mir noch nicht ganz sicher." -Albert Einstein
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 07.02.08 20:35 
Ich hab dir mal per PN geschrieben. Und nun schleunigst Back To Topic! :mahn: