Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TDateTime/String frage beim zugriff (https://www.delphipraxis.net/4293-tdatetime-string-frage-beim-zugriff.html)

Haegar 23. Apr 2003 10:38


TDateTime/String frage beim zugriff
 
so, da isser wieder...hier erstmal der code (der eigentlich interessante):
Delphi-Quellcode:
function TForm1.MyHoursBetween(ANow, AThen, ABefore: TDateTime): INT64;
begin
  Result := Trunc(24*Abs(AThen-ANow+ABefore));
end;

procedure TForm1.lbbtn_stoppClick(Sender: TObject);
begin
 timer.Enabled:=false;
 bisher:=dauer;
end;

procedure TForm1.timerTimer(Sender: TObject);
begin
 dauer := IntToStr(MyHoursBetween(Now,start,StrToTime(bisher)))
          +FormatDateTime('h "h" nn "min" ss "s"', Abs(start-Now));
 lbl_zeit.Caption:=dauer;
end;
so, das sollte der wichtige teil sein, das problem liegt in der varibalen bisher. wie ihr seht, muss ich ja auch den wert berücksichtigen den ich lade (bisher) den hab ich nu versucht einfach in die MyHoursBetween-Funktion einzubauen, naja gedacht getan...neues problem. wenn ich bisher als string behandle dann kommt im timer nach dem laden die fehlermeldung (z.B.) 46h 45min 12s is not a valid time...die kommt dann sekündlich (timer läuft weiter).
wenn ich nun bisher als TDateTime behandle, dann kommt (der code wurde natürlich verändert -> bisher:=StrToTime(dauer))
in diesem teil bei drücken auf stopp-button ne fehlermeldung die besagt, das der wert von dauer keine valid time ist, und dem zu folge net zugewiesen werden kann! :nerd:

was nun?
gruss haegar

oki 23. Apr 2003 11:55

Hi,

ganz einfach, du must deine Zeitangabe aus bisher in ein gültiges TDateTime-Format wandeln.

Aus 40h 30min 10sec wird 1Tag 16Stunden 30Minuten 10Sekunden.

Das wars schon.

Gruß oki

Haegar 23. Apr 2003 12:10

aha hab ich mir ja auch schon gedacht, nur wie mache ich das :wink:
scheint ja nicht so einfach mit StrTotime zu gehen!

gruss haegar

oki 23. Apr 2003 13:33

Hi,

sag mal wie du deinen Wert "bisher" bildest bevor du ihn ablegst um ihn dann wieder wie beschrieben einzulesen.

Du hast zwei Varianten.

1. Du legst den Wert schon im korrekten Format yy.mm.dd hh:mm:ss ab,

oder

2. Du merechnest vor der Verwendung "maluell" aus den angegebenen Stunden den komplementären Wert für yy.mm.dd. (also 24 Stunden = 1 Tag etc. etc.)

Gruß oki

Haegar 23. Apr 2003 13:47

Zitat:

Zitat von oki
sag mal wie du deinen Wert "bisher" bildest bevor du ihn ablegst um ihn dann wieder wie beschrieben einzulesen.

meinste das speichern??
Delphi-Quellcode:
procedure TForm1.LbSpeedButton2Click(Sender: TObject);
var datei:TextFile;
begin
 assignfile(datei,'info.txt');
 rewrite(datei);
 writeln(datei,dauer);
 closefile(datei);
end;
das mach ich ja so das laden is auch net anders, lese einfach den string aus der datei.....vorrausgesetzt ich behandle bisher als string, wie ich es nun mache.

gruss haegar

oki 23. Apr 2003 14:00

Ja klar,

wie du das in die Datei bekommst meinte ich nicht. Wie bildest du den wert besher und wandelst ihn in einen String zum schreiben in die datei?.

Gruß oki

Haegar 23. Apr 2003 14:04

tja also im formcreate wird er erstmal auf null gesetzt (bisher:='0') und wenn ich dann auf start drücke hat er auch nix dagegen, alles läuft wunderbar.
beim speichern (siehe oben) benutze ich ja bisher nicht, dazu nehm ich en wert von dauer!
bisher wird lediglich beim laden, stoppen beeinflusst! und beim laden is momentan eben das problem, das der string aus der datei nicht einfach mit StrToTime umzuwandeln is, damit es geht! weisste wie?

gruss haegar

oki 23. Apr 2003 14:16

Neeee!

setz doch einfach mal die Programmzeilen in den Thread wie du "bisher" in einen String wandelst.

Gruß oki

Haegar 23. Apr 2003 18:27

ganz einfach
Delphi-Quellcode:
var bisher:string;
:firejump:
ich behandel es zur zeit als string! nix umwandeln :chat:
konnt doch net wissen das du sowas einfaches meinst

gruss haegar

oki 24. Apr 2003 08:01

Alles klar,

und wie bildest Du den Wert für besher?

Gruß oki


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:39 Uhr.
Seite 1 von 2  1 2      

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