![]() |
Komisches Datum mit DateTime und INI-Datei
Hallo,
ich leser mit Ini.ReadDate ein DAtum aus einer INI-Datei, was auch korrekt da drinsteht. Wenn ich es dann mit DateToStr() in einen String umwandel, bekomme ich aus 21.03.2005 -->> 30.12.1899. Und das stimmt jetzt nicht wirklich, könnt ihr mir weiterhelfen? Gruß Spurius |
Re: Komisches Datum mit DateTime und INI-Datei
Hi Spurius...
Ein bissel Source wäre für die Lösung deiner Sorgen hilfreich :zwinker: Gruß Frank |
Re: Komisches Datum mit DateTime und INI-Datei
klingt ganz danach als wenn du ein "leeres" Datum herausbekommst.
mal ne andere frage: wenn du es eh in einen string beim Auslesen umwandelst, warum speicherst du es dann nicht gleich als String? |
Re: Komisches Datum mit DateTime und INI-Datei
Hallo,
Delphi-Quellcode:
Ich glaube es liegt an der 0 hinten, ich weiss nur nicht was ich da sonst reinschreiben soll.
Fangdatum := Ini.ReadDate(ActiveAngler + IntToStr(j), 'Fangdatum',0);
|
Re: Komisches Datum mit DateTime und INI-Datei
Statt der 0 könnte man was mit Encodedate machen:
Delphi-Quellcode:
MfG
Fangdatum := Ini.ReadDate(ActiveAngler + IntToStr(j), 'Fangdatum', EncodeDate(2005, 3, 23));
Binärbaum |
Re: Komisches Datum mit DateTime und INI-Datei
Zitat:
der letze Parameter beim Ini.Readxx ist der Defaultwert. Dieser wird verwendet wenn der Eintrag den man aus der Ini lesen möchte nicht vorhanden ist. |
Re: Komisches Datum mit DateTime und INI-Datei
Hi,
das Problem hatte ich auch. Versuche mal im DateTimePicker das Datum auszuwählen, auch wenn es schon auf dem heutigen bzw korrekt eingestellt ist. Scheint ein Bug in der Komponente zu sein. Habe meine Programme so eingestellt, dass das Programm erst weiter geht, wenn das DatumsPopup aufgemacht und (vonmiraus) das gleich Datum neu angeklickt wird. Dann funzt es bei mir |
Re: Komisches Datum mit DateTime und INI-Datei
das ist aber nicht gerade userfreundlich oder?
wie wärs denn mit datetimpicker.date= now() oder sowas in der richtung? bzw ein anderes datum ansetzen. |
Re: Komisches Datum mit DateTime und INI-Datei
Das funzt auch nicht immer. Ich musste es immer per Hand neu auswählen. Dann ging alles Prima.
|
Re: Komisches Datum mit DateTime und INI-Datei
Das Problem liegt ja nicht an der DateTime Komponente, da das Datum ja richtig gespeichert wird, das Problem scheint bei der Umwandlung zu liegen.
|
Re: Komisches Datum mit DateTime und INI-Datei
Ich kann nur sagen, dass ich nicht in einer ini, sondern in einer MySQL-Datenbank auf einem Linux-Rechner gespeichert habe und das Ergebnis war das gleiche...
|
Re: Komisches Datum mit DateTime und INI-Datei
Hallo,
also wenn ich das Datum gleich in einen String umwandel, steht das Datum wieder korrekt in der Ini-Datei, beim auslesen wird allerdings ein leerer Wert zurückgegeben. |
Re: Komisches Datum mit DateTime und INI-Datei
Zitat:
![]() |
Re: Komisches Datum mit DateTime und INI-Datei
Ja, mit DateToStr().
|
Re: Komisches Datum mit DateTime und INI-Datei
Also ich hatte mit
![]() Du könntest ja mal den entsprechenden Codeabschnitt posten. |
Re: Komisches Datum mit DateTime und INI-Datei
Hallo,
das ganze soll eine Fischfangverwaltungssoftware werden, wir fahren morgen los nach Norwegen: Schreiben:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var Ini: TInifile; Fangzahl: Integer; Test: String; begin Ini := TInifile.Create(ExtractFilePath(ParamStr(0)) +'angeln.ini'); Fangzahl := Ini.ReadInteger(Combobox1.Text, 'Fangzahl',0); Test := FileListBox1.Directory + FileListBox1.FileName; Ini.WriteString(Combobox1.Text + IntToStr(Fangzahl),'Fischart',combobox2.Text); Ini.WriteString(Combobox1.Text + IntToStr(Fangzahl),'Fischgewicht',Edit1.Text); Ini.WriteString(Combobox1.Text + IntToStr(Fangzahl),'Fischlaenge',Edit2.Text); Ini.WriteString(Combobox1.Text + IntToStr(Fangzahl),'Datum', DateToStr(date1.Date)); // <-- DA Ini.WriteInteger(Combobox1.Text, 'Fangzahl', Fangzahl + 1); Ini.WriteString(Combobox1.Text + IntToStr(Fangzahl),'Bildpfad',Test); Combobox1.Clear; Combobox2.Clear; Edit1.Text := ''; Edit2.Text := ''; Date1.DateTime := Date1.Date; Combobox_fill; end; Lesen:
Delphi-Quellcode:
Weiss nicht ob euch das was nützt, ist nicht sehr sauber programmiert.
procedure tform1.make_tree;
var Ini: TInifile; Node1, Node2, Node3: TTreeNode; i,j,k,l, Angleranzahl, Anglerfischanzahl: Integer; Fangdatum, Name, Fischart, Anglerfischart, ActiveAngler, Fischgewicht, Fischlaenge, Bildpfad: String; deci: Boolean; begin Ini := TInifile.Create(ExtractFilePath(ParamStr(0)) + 'angeln.ini'); Angleranzahl := Ini.ReadInteger('Einstellungen', 'Angleranzahl',0); For i := 0 to Angleranzahl - 1 do begin Name := Ini.ReadString('Angler', 'Angler' + IntToStr(i), ''); node1 := TreeView1.Items.Add(nil, Name); ActiveAngler := Ini.ReadString('Angler','Angler' + IntToStr(i),''); Anglerfischanzahl := Ini.ReadInteger(ActiveAngler, 'Fangzahl', 0); For j := 0 to Anglerfischanzahl - 1 do begin Bildpfad := Ini.ReadString(ActiveAngler + IntToStr(j), 'Bildpfad', ''); Anglerfischart := Ini.ReadString(ActiveAngler + IntToStr(j), 'Fischart', ''); Fischgewicht := Ini.ReadString(ActiveAngler + IntToStr(j), 'Fischgewicht',''); Fangdatum := Ini.ReadString(ActiveAngler + IntToStr(j), 'Fangdatum',''); // <--DA Fischlaenge := Ini.ReadString(ActiveAngler + IntToStr(j), 'Fischlaenge',''); node1 := TreeView1.Items.AddChild(node1, anglerfischart); Treeview1.Items.AddChild(node1, Fischgewicht); Treeview1.Items.AddChild(node1, Fischlaenge); Treeview1.Items.AddChild(node1, Fangdatum); Treeview1.Items.AddChild(node1, Bildpfad); node1 := node1.Parent; end; end; end; |
Re: Komisches Datum mit DateTime und INI-Datei
Zitat:
Ist denn Fangdatum Global bzw. wandelst du Fangdatum in der Gleichen Function/procedure um? denn 30.12.1899 hört sich ziemlich nach "0" an :gruebel: Wirf uns doch mal evtl bissl mer Source in die Runde ^^ [EDIT] :oops: sorry hab die 2te seite übersehen :oops: :wall: [/edit] |
Re: Komisches Datum mit DateTime und INI-Datei
Also beim Schreiben verwendest du
Delphi-Quellcode:
und beim Lesen
Ini.WriteString(Combobox1.Text + IntToStr(Fangzahl),'Datum', DateToStr(date1.Date));
Delphi-Quellcode:
Es wird also immer der Default-Wert zurückgegeben, da 'Fangdatum' und 'Datum' zwei unterschiedliche Strings sind. Es wird also immer ein wert für Datum geschrieben, aber versucht, Fangdatum zu lesen. Da letzterer aber logischerweise nicht in die Ini geschrieben wurde, wird dir immer der default-Wert, bei dir also 0, oder halt der 31.12.1899, zurückgegeben.
Fangdatum := Ini.ReadString(ActiveAngler + IntToStr(j), 'Fangdatum','');
MfG Binärbaum |
Re: Komisches Datum mit DateTime und INI-Datei
Ini.WriteString(Combobox1.Text + IntToStr(Fangzahl),'Datum', DateToStr(date1.Date)); // <-- DA
Fangdatum := Ini.ReadString(ActiveAngler + IntToStr(j), 'Fangdatum',''); // <--DA Mir ist jetzt auf die schnelle (du musst ja bald weg :zwinker:) nur das aufgefallen ... [EDIT]Jetzt schreib ich eh schon so wenig und bin doch wieder zu langsam :roll: [/EDIT] |
Re: Komisches Datum mit DateTime und INI-Datei
Hallo,
sry dass ich so lang genervt habe, ihr habt den Fehler gefunden, ich habe Datum in Fangdatum umgeändert, jetzt geht es. Also vielen, vielen Dank! Gruß Spurius |
Re: Komisches Datum mit DateTime und INI-Datei
Zitat:
und viel Spaß in Norwegen :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 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