Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String mit TTimer (https://www.delphipraxis.net/83173-string-mit-ttimer.html)

Gehstock 28. Dez 2006 20:58


String mit TTimer
 
also habe einen TEdit in dem die ausgelesene zeit eines telefons angezeigt wird z.B. 20:56:26
wie schaffe ich es das diese zeit im Programm weiterläuft sicherlich in einen ttimer

Blackheart 28. Dez 2006 21:03

Re: String mit TTimer
 
Wie Liest Du denn die Zeit des Telefons aus.

Gehstock 28. Dez 2006 21:08

Re: String mit TTimer
 
Delphi-Quellcode:
s:= 'AT+CCLK?';
    SendCMD;
    Memo1.Lines.Add(Result1);
    zeit:=Memo1.Lines[33];
    datum:=Memo1.Lines[33];
   delete(zeit,1,17);
   delete(zeit,9,15);
   delete(datum,1,8);
   delete(datum,9,15);
       jahr:='20'+datum[1]+datum[2];
        monat:=datum[4]+datum[5];
         tag:=datum[7]+datum[8];
    LabeledEdit1.text:=tag+'.'+monat+'.'+jahr;
    Edit2.Text:=zeit;
wobei das datum nicht weiterlaufen muss

marabu 28. Dez 2006 21:13

Re: String mit TTimer
 
Hallo,

der Timer wird nur zur Aktualisierung der Anzeige gebraucht, die ausgelesene Zeit des cell phone sollte in einer Variable dtRead vom Typ TDateTime gespeichert werden. Für die Berechnung eines eventuellen Versatzes wird beim Auslesen auch die lokale Zeit dtNow (:= Now) gespeichert. Im OnTimer-Event wird dann einfach der Anzeigewert neu berechnet:

Delphi-Quellcode:
ZeitPanel.Caption := TimeToStr(dtRead + Now - dtNow);
Freundliche Grüße

Gehstock 28. Dez 2006 21:45

Re: String mit TTimer
 
läuft aber mir fehlen da jetzt 2 stunden und 15 minuten also genau die zeit bis 0 Uhr
Edit
dtNow is mir grad nicht so klar
ausgabe erfolgt ja so
Zitat:

+CCLK: "06/12/28,22:04:30+04"
dann währe dtnow
Zitat:

22:04:30+04
wenn ich dich richtig verstehe

marabu 28. Dez 2006 22:38

Re: String mit TTimer
 
Hi,

der bei +CCLK zurückgegebene Wert muss von dir interpretiert und als dtRead gespeichert werden. dtNow bekommt den Wert Now zugewiesen, und zwar genau zu dem Zeitpunkt wenn dir CCLK geliefert wird. Der Ausdruck Now - dtNow liefert in OnTimer den Korrekturwert bei abweichenden Zeiten zwischen dem cell phone und dem PC.

Gute Nacht

Gehstock 28. Dez 2006 22:44

Re: String mit TTimer
 
Danke Habs selber hinbekommen den Code zeig ich jetzt nich is bestimmt n ziemliches kuddelmuddel


Also danke nochmal

Gehstock 29. Dez 2006 20:08

Re: String mit TTimer
 
Nee zu früh gefreut klappt doch nicht es läuft die aktuielle zeit durch

Delphi-Quellcode:
function TForm1.Info: Boolean;
var
zeit:string;
datum:string;
jahr:string;
monat:string;
tag:string;
zeit2:string;
stunde:string;
minute:string;
sekunde:string;
versatz:string;
begin
Progressbar1.Position:=10;
 Connect1.Tag := 1;
    StatusBar.Panels[0].text:='Verbunden mit '+ComPort.Text;
      Connect1.Caption := 'Trennen';
        s:= 'AT+CCLK?';
    SendCMD;
    Memo1.Lines.Add(Result1);
    zeit:=Memo1.Lines[33];
    datum:=Memo1.Lines[33];
    delete(zeit,1,17);
    delete(zeit,9,15);
    delete(zeit2,1,17);
    delete(zeit2,12,15);
    delete(datum,1,8);
    delete(datum,9,15);
    jahr:='20'+datum[1]+datum[2];
    monat:=datum[4]+datum[5];
    tag:=datum[7]+datum[8];
    LabeledEdit1.text:=tag+'.'+monat+'.'+jahr;
    dtread:=strtotime(Zeit);
    Stunde:=zeit[1]+zeit[2];
    minute:=zeit[4]+zeit[5];
    sekunde:=zeit[7]+zeit[8];
    versatz:=zeit[10]+zeit[11];
    zeit2:=stunde+':'+minute+':'+inttostr(strtoint(sekunde)+(strtoint(versatz)));
    dtnow:=strtotime(Zeit2);
    Progressbar1.Position:=100;
    memo1.lines.add(zeit2);
  end;
Delphi-Quellcode:
procedure TForm1.Timer3Timer(Sender: TObject);
begin
Edit2.Text := TimeToStr(dtRead + Now - dtNow);
end;

vieleicht könnte mir noch jemand nen denkanstoß geben

marabu 29. Dez 2006 21:03

Re: String mit TTimer
 
Hallo,

hier das wesentliche in Kürze:

Delphi-Quellcode:
type
  TDemoForm = class(TForm)
    Button: TButton;
    Edit: TEdit;
    Clock: TTimer;
    procedure ClockTimer(Sender: TObject);
    procedure ButtonClick(Sender: TObject);
  private
    dtStart: TDateTime;
    dtClock: TDateTime;
  end;

var
  DemoForm: TDemoForm;

implementation

{$R *.dfm}

procedure TDemoForm.ClockTimer(Sender: TObject);
begin
  Caption := TimeToStr(dtClock + Now - dtStart);
end;

procedure TDemoForm.ButtonClick(Sender: TObject);
var
  i: Integer;
begin
  dtStart := Now;
  i := Succ(Pos(',', Edit.Text));
  dtClock := StrToTime(Copy(Edit.Text, i, 8));
end;
Lass dich nicht dadurch verwirren, dass ich meine Hilfsvariablen dtRead und dtNow umbenannt habe.

Freundliche Grüße

Gehstock 29. Dez 2006 21:28

Re: String mit TTimer
 
ja jetzt gehts Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 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 by Thomas Breitkreuz