AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Differenz 2erDatum in Tmemo
Thema durchsuchen
Ansicht
Themen-Optionen

Differenz 2erDatum in Tmemo

Ein Thema von danku · begonnen am 25. Mai 2006 · letzter Beitrag vom 17. Jul 2006
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Differenz 2erDatum in Tmemo

  Alt 1. Jun 2006, 12:43
hab das problem weckzeit in abhängigkeit vom weckdatum schon seit tagen versucht zu lösen und probiert.

obwohl ich dem timer zuweise:
Delphi-Quellcode:
WeckTime:= edhours.Text + ':' + edmin.Text + ':' + edseconds.Text ;
WeckDate:= cbdatum.Text;

if TimeToStr(Now) =WeckTime then begin
//now >= strToDateTime(WeckTime + WeckDate) selbst geht auch nicht für mein prob
...
DecodeTime(Time, aStd, aMin, aSec, aMsec);
    //now := Timetostr(Time);
    Uhrzeit_Ende := strtoTime(Wecktime);
    Wecktime:=Timetostr(Uhrzeit_Ende);
    Uhrzeit_Verbleib := Time - Uhrzeit_ende;
    Buffer := timetostr(Uhrzeit_Verbleib);
    if Uhrzeit_Ende > Time then
      begin...
      else
      begin
      ...
wird wenn das weckdate kleiner als die reale zeit ist, immer nur von einem tag ausgegangen.
in klartext:
weckzeit: 06:45:00 //vom user eingestellt über 3 editfelder
weckdate: 02.06.06
dann geben die 3editfelder den countdown für die differenz von 18:1:00 aus. // nur als richtwert.

sobald jetzt aber das weckdate auf 03.06.06 gesetzt wird,
kommt das selbe wie oben also 18:1:00 differenz aus.
kann mir einer helfen?
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#12

Re: Differenz 2erDatum in Tmemo

  Alt 1. Jun 2006, 19:50
Zitat von danku:
kann mir einer helfen?
Das habe ich in Beitrag #4 versucht...

Gruß Hawkeye
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#13

Re: Differenz 2erDatum in Tmemo

  Alt 1. Jun 2006, 20:06
Hallo.

Du hast einen dicken Fehler in deiner Rechnung:

Uhrzeit_Verbleib := Time - Uhrzeit_ende; Du rechnest hier mit TDateTime-Werten. Diese Werte geben den Zeitabstand zu einem Referenzdatum in Tagen an. Nur mit den Uhrzeitanteilen -- Time und UhrzeitEnde sind Werte kleiner 1 -- rechnest du effektiv mit einer Uhrzeit am 30. Dez 1899, was gewiss nicht dein Wunsch ist. Um den zeitlichen Abstand zwischen zwei Zeitpunkten zu bestimmen müssen unbedingt beide Zeitpunkte auf das gleiche Referenzdatum normiert sein.

Du darfst also nicht Time (0.75 = 18 Uhr), sondern musst Now (38869.75 = heute 18 Uhr) als Minuend verwenden. Aus gleichem Grund musst du beim Subtrahend (UhrzeitEnde) mit der Kombination von WeckDatum und WeckZeit rechnen (UhrzeitEnde := StrToDate(WeckDatum) + StrToTime(WeckTime) // nur zur Verdeutlichung). Bei der Differenz darfst du dann allerdings auch Werte größer als 1 erwarten, die dann einen Zeitraum angeben. Der Wert vor dem Komma repräsentiert die Tage, der Wert nach dem Komma den Bruchteil eines Tages. Bei der Darstellung von Zeiträumen Größer oder gleich 1 versagt TimeToStr(), aber du kannst statt dessen die Funktion DateTimeToStr2() verwenden.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: Differenz 2erDatum in Tmemo

  Alt 3. Jun 2006, 10:27
Also würdest du das so machen?

Delphi-Quellcode:
 
...
    function DateTimeToStr2(dt: TDateTime; daySep: string): string;
    begin
    Result := Format('%d%s%s', [Trunc(dt), daySep, TimeToStr(dt)])
    end;

begin



WeckTime:= edhours.Text + ':' + edmin.Text + ':' + edseconds.Text ;
WeckDate:= cbdatum.Text;


   DecodeTime(Time, aStd, aMin, aSec, aMsec);
    Uhrzeit_Ende := StrToDate(WeckDate) + StrToTime(WeckTime);
    Wecktime:=Timetostr(Uhrzeit_Ende);
    Uhrzeit_Verbleib := Now - Uhrzeit_ende;
    DateTimeToStr2(Uhrzeit_Verbleib,WeckTime); //parameter funzen aber nich 100%
    Buffer := timetostr(Uhrzeit_Verbleib);
    if Uhrzeit_Ende > Time then
      begin
          Std := copy(Buffer, 1,2);
          Min := copy(Buffer, 4,2);
          Sec := copy(Buffer, 7,2);
          bsec := strtoint(Sec) +1;

          mehours.text:=std;
          memin.Text:=min;
          meseconds.text:=inttostr(bsec);
          end
         else
      begin
      Std := copy(Buffer, 1,2);
      Min := copy(Buffer, 4,2);
      bstd := 23-strtoint(std);
      bmin := 59-strtoint(min);
      if asec >0 then
        bsec := 60-asec
       else
        bsec := 0;
        mehours.text:=inttostr(bstd);
        memin.Text:=inttostr(bmin);
        meseconds.text:=inttostr(bsec);
      end;
...
man kann die datetimetostr2 doch auch anders machen?

//einen tag höher setzen
if (Wecktime) < TimeToStr(now)
then cbdatum.ItemIndex:= 1;

Problem aber weiterhin Weckzeit in Abhängigkeit vom Weckdatum
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#15

Re: Differenz 2erDatum in Tmemo

  Alt 3. Jun 2006, 11:09
Hallo Daniel,

ich würde es so oder ähnlich machen - nur den Rechenteil, nicht die Ablaufsteuerung:

Delphi-Quellcode:
procedure TDemoForm.???
var
  dtAlarm: TDateTime;
begin
  dtAlarm := StrToTime(edhours.Text + ':' + edmin.Text + ':' + edseconds.Text) + StrToDate(cbdatum.Text);
  if Now < dtAlarm then
    ShowRemainingTime(dtAlarm);
end;

procedure TDemoForm.ShowRemainingTime(dtAlarm: TDateTime);
var
  s: String;
  dtRemaining: TDateTime;
  hours, mins, secs, msecs: Word;
begin
  // DecodeTime(Time, aStd, aMin, aSec, aMsec);
  // Uhrzeit_Ende := StrToDate(WeckDate) + StrToTime(WeckTime);
  // Wecktime := Timetostr(Uhrzeit_Ende);
  // Uhrzeit_Verbleib := Now - Uhrzeit_ende;
  dtRemaining := dtAlarm - Now;
  DecodeTime(dtRemaining, hours, mins, secs, msecs);
  hours := hours + 24 * Trunc(dtRemaining);

  meHours.Text := IntToStr(hours);
  meMin.Text := IntToStr(mins);
  meSeconds.Text := IntTostr(secs);
 
{
  Buffer := timetostr(Uhrzeit_Verbleib);
  if Uhrzeit_Ende > Time then
  begin
    Std := copy(Buffer, 1,2);
    Min := copy(Buffer, 4,2);
    Sec := copy(Buffer, 7,2);
    bsec := strtoint(Sec) +1;

    mehours.text := std;
    memin.Text := min;
    meseconds.text := inttostr(bsec);
  end else
  begin
    Std := copy(Buffer, 1,2);
    Min := copy(Buffer, 4,2);
    bstd := 23-strtoint(std);
    bmin := 59-strtoint(min);
    if asec > 0
      then bsec := 60-asec
      else bsec := 0;
    mehours.text := inttostr(bstd);
    memin.Text := inttostr(bmin);
    meseconds.text := inttostr(bsec);
  end;
}

end;
Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: Differenz 2erDatum in Tmemo

  Alt 3. Jun 2006, 13:56
hm so geht das.
bissel kürzer und effektiver.
danke
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: Differenz 2erDatum in Tmemo

  Alt 5. Jun 2006, 18:10
ich hab noch in der showremainingtime procedure
das dazugefügt:

Delphi-Quellcode:
 if Now =(dtRemaining) then begin
              fileopen:= Label2.caption;
              With MediaPlayer1 do begin
               Filename := opendialog1.filename;
               Open;
               Play;
wieso wird dann aber nicht wenn die verbleibende zeit und die reale zeit gleich null sind
die datei abgespielt?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#18

Re: Differenz 2erDatum in Tmemo

  Alt 5. Jun 2006, 18:16
Hallo Daniel,

die reale Zeit (Now) wird wohl in absehbarer Zeit nicht Null werden. Probiere es mal so:

Delphi-Quellcode:
begin
  if dtRemaining < 0 then
  begin
    fileopen:= Label2.caption;
    with MediaPlayer1 do
    begin
      Filename := OpenDialog1.Filename;
      Open;
      Play;
// ...
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#19

Re: Differenz 2erDatum in Tmemo

  Alt 5. Jun 2006, 19:05
das geht aber nicht in deiner prozedur ..ShowRemainingTime(dtAlarm: TDateTime);
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#20

Re: Differenz 2erDatum in Tmemo

  Alt 5. Jun 2006, 19:12
Warum nicht?

marabu
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:04 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