![]() |
TDateTime/String frage beim zugriff
so, da isser wieder...hier erstmal der code (der eigentlich interessante):
Delphi-Quellcode:
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).
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; 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 |
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 |
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 |
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 |
Zitat:
Delphi-Quellcode:
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.
procedure TForm1.LbSpeedButton2Click(Sender: TObject);
var datei:TextFile; begin assignfile(datei,'info.txt'); rewrite(datei); writeln(datei,dauer); closefile(datei); end; gruss haegar |
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 |
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 |
Neeee!
setz doch einfach mal die Programmzeilen in den Thread wie du "bisher" in einen String wandelst. Gruß oki |
ganz einfach
Delphi-Quellcode:
:firejump:
var bisher:string;
ich behandel es zur zeit als string! nix umwandeln :chat: konnt doch net wissen das du sowas einfaches meinst gruss haegar |
Alles klar,
und wie bildest Du den Wert für besher? Gruß oki |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 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-2025 by Thomas Breitkreuz