![]() |
TDate/TDateTime in Filestream speichern
Hi,
ich möchte die Datumsangaben in 2 Datepickern in eine Datei speichern. Einmal ein Datum, einmal eine Uhrzeit. Nur wie geht das? :oops: Wenn ich versuche das wie einen String, einen Integer Wert oder eine Boolean Variable zu speichern, sagt er mir es wäre eine Variable erforderlich. Irgendwo hier im Forum hab ich dann gesehen, dass es jemand als String gespeichert hat. Also hab ich versucht es per DateToStr bzw. DateTimeToStr zu speichern. Aber beim einlesen bekomme ich dann einen Error bei StrToDate. Jemand eine Idee? Danke schonmal :) |
Re: TDate/TDateTime in Filestream speichern
Moin Michael,
Zitat:
;-) Zeig' uns doch mal, wie Du die Daten schreibst/liest. |
Re: TDate/TDateTime in Filestream speichern
Hi,
wenn eine Variable erforderlich ist, dann benutz doch eine Variable ;-)
Delphi-Quellcode:
PS: Warum als Integer speichern? Benutz doch den richtigen Datentyp TDateTime (=Double) ;)
var
F : TFileStream; myDate : TDateTime; begin F := TFileStream.Create('C:\test.dat',fmCreate); myDate := DateTimePicker1.Date; F.Write(myDate, SizeOf(myDate)); F.Free; end; Gruß Stephan |
Re: TDate/TDateTime in Filestream speichern
danke für die Antowrten, ich habs jetzt so probiert:
Schreiben
Delphi-Quellcode:
soweit alles ok
var
date:TDate; time:TDateTime; begin ... ... //Alarm//// //Alarm ein? Stream.Write(Notizen[i].chkAlarm, SizeOf(Notizen[i].chkAlarm)); //Sound ein? Stream.Write(Notizen[i].chkAlarmSound, SizeOf(Notizen[i].chkAlarmSound)); //Date1 date:=Notizen[i].DateTimePicker1.date; Stream.Write(date, SizeOf(date)); //Date2 Uhrzeit time:=Notizen[i].DateTimePicker2.Time; Stream.Write(time, SizeOf(time)); ... end; Lesen:
Delphi-Quellcode:
Jo und beim Lesen bekomme ich eine Ungültige Gleitkomma Operation. Warum auch immer -_-
var
date:TDate; time:TDateTime; begin ... ... //Alarm//// //Alarm ein? Stream.Read(bool, SizeOf(bool)); Notizen[i].chkAlarm.Checked:=bool; //Sound ein? Stream.Read(bool, SizeOf(bool)); Notizen[i].chkAlarmSound.Checked:=bool; //Date1 Stream.read(date, SizeOf(date)); Notizen[i].DateTimePicker1.date:=date; //Date2 Uhrzeit beep; //<<-- hier wird der Fehler Ungültige Gleitkommaoperation angezeigt. Gemeint ist wohl der vorherige Befehl Stream.read(time, SizeOf(time)); Notizen[i].DateTimePicker2.Time:=time; ... end; Ich bitte um Hilfe ;) |
Re: TDate/TDateTime in Filestream speichern
Du speicherst chkAlarm, was eine Komponente ist und liest nur die Property .Checked. Kurz: Du solltest auch die nur .Chekced speichern.
Warum nimmst du keine Ini-Files daher? Die sind für so etwas ausgelegt und wesentlich einfacher zu bedienen! |
Re: TDate/TDateTime in Filestream speichern
Zitat:
Eigentlich wollte ich auch nur die Eigenschaft .checked speichern, habs entweder vergessen oder mich verschrieben. Naja jetzt funktionierts jedenfalls, auch wenn ich wieder eine Zwischenvariable benutzen musste. Ini Files wären perfekt dafür, ich hatte nur keine Lust mein Programm durch die 32kb Grenze einzuschränken. vielen dank auf jeden Fall :) |
Re: TDate/TDateTime in Filestream speichern
war das nicht eine 64KB-Grenze (und die "nur" under Win9X/ME)?
und 64KB sind schon recht viel sollten eigentlich (in den meisten Fällen) ausreichend sein. Das mit der Zwischenvariable: tja, leider ist das ja ein Property und dort kann man nur Lesen und schreiben, also kann man es zum Auslesen nicht an einen Var-Parameter übergeben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 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