Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Komisches Datum mit DateTime und INI-Datei (https://www.delphipraxis.net/42775-komisches-datum-mit-datetime-und-ini-datei.html)

TheMiller 23. Mär 2005 19:59

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...

Spurius 23. Mär 2005 20:13

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.

Binärbaum 23. Mär 2005 20:14

Re: Komisches Datum mit DateTime und INI-Datei
 
Zitat:

Zitat von Spurius
Das Problem liegt ja nicht an der DateTime Komponente, da das Datum ja richtig gespeichert wird, das Problem scheint bei der Umwandlung zu liegen.

Wie wandelst du das Datum denn um? Mit Delphi-Referenz durchsuchenDateToStr?

Spurius 23. Mär 2005 20:19

Re: Komisches Datum mit DateTime und INI-Datei
 
Ja, mit DateToStr().

Binärbaum 23. Mär 2005 20:22

Re: Komisches Datum mit DateTime und INI-Datei
 
Also ich hatte mit Delphi-Referenz durchsuchenDateToStr bis jetzt noch keine Probleme. Vielleicht wird vor der Umwandlung noch irgendwo auf das Datum zugegriffen und selbiges geändert?
Du könntest ja mal den entsprechenden Codeabschnitt posten.

Spurius 23. Mär 2005 20:28

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:
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;
Weiss nicht ob euch das was nützt, ist nicht sehr sauber programmiert.

TeronG 23. Mär 2005 20:33

Re: Komisches Datum mit DateTime und INI-Datei
 
Zitat:

Zitat von Spurius
Hallo,
Delphi-Quellcode:
Fangdatum := Ini.ReadDate(ActiveAngler + IntToStr(j), 'Fangdatum',0);
Ich glaube es liegt an der 0 hinten, ich weiss nur nicht was ich da sonst reinschreiben soll.

Ich hatte schon öfter mal (zu PE zeiten :mrgreen:) ein Datum in eine ini geschrieben und gelesen klappte bis dato immer recht anstandslos...

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]

Binärbaum 23. Mär 2005 20:42

Re: Komisches Datum mit DateTime und INI-Datei
 
Also beim Schreiben verwendest du
Delphi-Quellcode:
Ini.WriteString(Combobox1.Text + IntToStr(Fangzahl),'Datum', DateToStr(date1.Date));
und beim Lesen
Delphi-Quellcode:
Fangdatum := Ini.ReadString(ActiveAngler + IntToStr(j), 'Fangdatum','');
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.

MfG
Binärbaum

TeronG 23. Mär 2005 20:44

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]

Spurius 23. Mär 2005 20:56

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


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

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