AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Timer offline laufen

Ein Thema von chiller4fun1990 · begonnen am 16. Aug 2011 · letzter Beitrag vom 20. Aug 2011
Antwort Antwort
Seite 2 von 7     12 34     Letzte »    
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#11

AW: Timer offline laufen

  Alt 17. Aug 2011, 05:56
Ach egal .... im Button1Click ist das Try-Finally auch nicht grade "optimal" platziert.

Ich bin mir Sicher der Countdown fängt nur einmal von vorne an ... Man nehme einfach mal DateTimeToStr, um das zu prüfen.
Und ja FormActivate wird wirklich erneut gefeuert, da ja zwischenzeitlich eine Messagebox angezeigt und somit die Form den Fokus verlor, womit dann die neue zielzeit geladen wird und es 2*24 Stunden dauert, da der Button die Zeit ja schon geändert hatte.
Außerdem sollte man den Timer besser noch vor der MessageBox deaktivieren.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Timer offline laufen

  Alt 17. Aug 2011, 08:19
[OT] Werden Forenregeln eigentlich nicht mehr gelesen bzw. EULA-technisch einfach nur abgenickt? 2 * nacheinander pushen, Crossposts nicht verlinken usw. wird allgemein nicht gern gesehen. [/OT]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#13

AW: Timer offline laufen

  Alt 17. Aug 2011, 11:57
@chiller4fun1990: Pushen ist erst nach 24 Stunden erlaubt. Innerhalb dieser Zeit gibt es die Edit-Funktion. Wie DeddyH bereits geschrieben hat, hast du diesen Nutzungsbedingungen auch bei der Anmeldung zugestimmt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
chiller4fun1990

Registriert seit: 26. Dez 2009
23 Beiträge
 
#14

AW: Timer offline laufen

  Alt 17. Aug 2011, 15:42
Hallo,
Merke gerade wenn ich den Countdown starte, Programm beende und neustarte das nichts Passiert.

Wenn ich folgenden Code benutze wird die Restzeit nach einen Neustart des Programms zwar richtig angezeigt und runtergezählt, allerdings rennt der timer auch wieder.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IniFiles, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormActivate(Sender: TObject);
      private
    Zielzeit: TDateTime;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  ini: TIniFile;
  filename: String;
begin
  filename := ExtractFilePath(ParamStr(0)) + 'zeit.ini';
  ini := TIniFile.Create(filename);


  Zielzeit := now + 1;
  

  try

    ini.WriteDateTime('Daten','Zielzeit',Zielzeit);
         finally
      ini.Free;
  end;



  Timer1.Enabled:=true;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  ini: TIniFile;
  filename: String;
begin
  filename := ExtractFilePath(ParamStr(0)) + 'zeit.ini';
  ini := TIniFile.Create(filename);

  Label1.Caption:= TimeToStr(zielzeit - now);


  
  if now >= Zielzeit then

  begin
  Timer1.enabled:=false;
     end;


end;


procedure TForm1.FormActivate(Sender: TObject);
var
  ini: TIniFile;
  filename: String;
begin
  filename := ExtractFilePath(ParamStr(0)) + 'zeit.ini';
  ini := TIniFile.Create(filename);

Zielzeit:=StrtoDateTime(ini.ReadString('Daten','Zielzeit',''));
timer1.Enabled:=true;
  end;
Was mach ich falsch damit der Countdown immer wieder von neu anfängt?


Nachtrag://

Wenn ich aus
Label1.Caption:= TimeToStr(zielzeit - now); das hier mach:
Label1.Caption:= DateTimeToStr(zielzeit - now); und das Programm starte, ist irgendwie das Datum verkehrt.
Hier mal ein Screen davon:

http://www.pic-upload.de/view-11082279/timer.jpg.html

Geändert von chiller4fun1990 (17. Aug 2011 um 15:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Timer offline laufen

  Alt 17. Aug 2011, 15:48
Was mach ich falsch damit der Countdown immer wieder von neu anfängt?
Wie soll man diese Frage verstehen? Übrigens: nette Speicherlecks produzierst Du da. Und was genau willst Du erreichen, ich habe das noch nicht so ganz verstanden?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
chiller4fun1990

Registriert seit: 26. Dez 2009
23 Beiträge
 
#16

AW: Timer offline laufen

  Alt 17. Aug 2011, 15:51
Hab oben Editiert.

Ich will das wenn man den Button klickt ein Timer 24Stunden runterzählt.

Wenn man das Programm beendet und neu startet, sollte es die Restzeit von den 24Stunden anzeigen.

Sprich ich starte den Timer jetzt dann ist die Zielzeit 18.08.2011 16:51

Wenn ich Morgen um 16Uhr das programm wieder starte, soll der Timer die Restzeit hier also 51Minuten runterzählen.

lg
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Timer offline laufen

  Alt 17. Aug 2011, 15:54
Du willst ja auch kein Datum darstellen, sondern eine zeitliche Differenz, das ist ein Unterschied.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
chiller4fun1990

Registriert seit: 26. Dez 2009
23 Beiträge
 
#18

AW: Timer offline laufen

  Alt 17. Aug 2011, 15:59
Hmm
So wenn ich es mach geht gar nichts.
Jedesmal wen cih das Programm starte steht im label ne andere zeit.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IniFiles, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormActivate(Sender: TObject);
      private
    Zielzeit: TTime;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  ini: TIniFile;
  filename: String;
begin
  filename := ExtractFilePath(ParamStr(0)) + 'zeit.ini';
  ini := TIniFile.Create(filename);


  Zielzeit := now + 1;


  try

    ini.WriteTime('Daten','Zielzeit',Zielzeit);
         finally
      ini.Free;
  end;



  Timer1.Enabled:=true;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  ini: TIniFile;
  filename: String;
begin
  filename := ExtractFilePath(ParamStr(0)) + 'zeit.ini';
  ini := TIniFile.Create(filename);

  Label1.Caption:= TimeToStr(zielzeit - now);


  
  if now >= Zielzeit then

  begin
  Timer1.enabled:=false;
     end;


end;


procedure TForm1.FormActivate(Sender: TObject);
var
  ini: TIniFile;
  filename: String;
begin
  filename := ExtractFilePath(ParamStr(0)) + 'zeit.ini';
  ini := TIniFile.Create(filename);

Zielzeit:=StrtoTime(ini.ReadString('Daten','Zielzeit',''));
timer1.Enabled:=true;
  end;




end.
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.338 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: Timer offline laufen

  Alt 17. Aug 2011, 16:12
Natürlich steht im Label jedesmal was anderes. Du trägst dort doch die Restzeit bis zur Zielzeit ein.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IniFiles, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    Zielzeit: TDateTime;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  ini: TIniFile;
  filename: String;
begin
  filename := ExtractFilePath(ParamStr(0)) + 'zeit.ini';
  ini := TIniFile.Create(filename);

  Zielzeit := now + 1;

  try
    ini.WriteDateTime('Daten','Zielzeit',Zielzeit);
  finally
    ini.Free;
  end;

  Timer1.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
// Eine von den folgenden 3 Varianten lässt du stehen. Die anderen 2 löscht du einfach
  Label1.Caption:= TimeToStr(zielzeit - now); // So wird die Restzeit dargestellt
  Label1.Caption:= TimeToStr(zielzeit); // So wird die Zielzeit dargestellt. Das macht aber im Timer-Ereigns keinen Sinn
  Label1.Caption:= TimeToStr(now); // So wird die aktuelle Zeit dargestellt

  if now >= Zielzeit then
  begin
    Timer1.enabled:=false;
  end;
end;


procedure TForm1.FormCreate(Sender: TObject);
var
  ini: TIniFile;
  filename: String;
begin
  filename := ExtractFilePath(ParamStr(0)) + 'zeit.ini';
  ini := TIniFile.Create(filename);

  Zielzeit:=StrtoDateTime(ini.ReadString('Daten','Zielzeit',''));
  ini.Free;

  timer1.Enabled:=true;
end;

end;
Ich habe da ein bisschen rumgebastelt. 2 Speicherlecks sind erstmal entfernt.
Das ist allerdings ungeprüfter Source. Wenns nicht funktioniert, muss du vielleicht mal selbst denken.

Erklären muss ich wohl nichts, da du sowieso nur C&P machst.
Peter

Geändert von Jasocul (17. Aug 2011 um 16:19 Uhr)
  Mit Zitat antworten Zitat
chiller4fun1990

Registriert seit: 26. Dez 2009
23 Beiträge
 
#20

AW: Timer offline laufen

  Alt 17. Aug 2011, 16:20
Das runterzählen und so klappt ja,
nur beim neustart des Programmes komm ich nicht mehr weiter da
jedesmal wenn ich das programm starte, diie zeit wielang der countdown läuft angezeigt wird.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 7     12 34     Letzte »    


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 19:09 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