Autor Beitrag
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 04.07.04 13:16 
Hallo!

Ich habe seit einiger Zeit ein Problem mit einem Programm, welches seine Daten in einem DataSet verwaltet und als XML speichert. Erst einmal die Routinen zum Speichern und Laden:

Daten laden:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure mainform.TWinForm_Load(sender: System.Object; e: System.EventArgs);
var rk : RegistryKey;
    execPath : String;
    myRow : Datarow;
begin
  rk := Registry.CurrentUser;
  rk := rk.OpenSubKey('Software\Microsoft\Windows\CurrentVersion\Run\', true);
  cb_autostart.checked := not (rk.GetValue(GUID) = nil);

  execPath := Path.GetDirectoryName(Application.ExecutablePath);
  if System.IO.File.Exists(execPath+'\data.xml'then
    DataSet1.ReadXml(execPath+'\data.xml');

  buildMenu;
end;


Daten schreiben:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure mainform.TWinForm_Closing(sender: System.Object; e: System.ComponentModel.CancelEventArgs);
Var execPath : String;
begin
  execPath := Path.GetDirectoryName(Application.ExecutablePath);
  DataSet1.WriteXml(execPath+'\data.xml');
end;


Nun zum Problem:
Das Programm startet beim Systemstart mit und wird auch erst wieder beendet, wenn das System heruntergefahren wird.

Von Zeit zu Zeit (völlig unverhersagbar) startet das Programm mit der Meldung, es könnte den Root-Node nicht finden. Schaue ich mir die zuvor gespeicherte Datendatei an, wundert mich das nicht: sie ist leer! :shock:
Ich sehe kein System darin, wann das passiert. Es kann Tage gut gehen und dann taucht das Problem wieder auf.

Wer hat eine Idee? (Mathias?)

MfG
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 04.07.04 14:12 
TUFKAPL hat folgendes geschrieben:
(Mathias?)

*schulterzuck und "tss" mach* Muss ich gucken, solange ich D8 noch habe ... (Falls du mich überhaupt gemeint hast)


Zuletzt bearbeitet von MathiasSimmack am Sa 07.08.04 19:21, insgesamt 1-mal bearbeitet
Christian S. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 04.07.04 15:26 
Wenn irgendwo das Kürzel "XML" vorkommt, bist mit "Mathias" immer Du gemeint ;-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 04.07.04 17:07 
Okay, das werde ich mir merken. ;) Aber du könntest mir mal erklären, wie man so ein DataSet richtig benutzt? Ich bin nicht so firm in der Geschichte. Also, was speicherst du damit? Und wie genau?
Christian S. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 04.07.04 17:24 
Hallo!

Ansich ist so ein DataSet eine feine Sache, weil es fast alles von selbst macht. Im Grunde ist es eine kleine Datenbank mit verschiedenen Tabellen. Du kannst verschiedene Komponenten auf Deiner Form an verschiedene Tabellen binden (DataBindings) und somit Inhalte in den Tabellen verändern. Sobald der Inhalt der Komponente (also z.B. ein Edit-Feld) geändert wird, dann wird diese Änderung in die Datenbank übernommen, ohne dass der Programmierer etwas machen muss. Das Hinzufügen neuer Zeilen in eine Tabelle geht ähnlich einfach, wenn auch nicht ganz so. ;-)

Das DataSet hält also während der Laufzeit alle Daten. Das einzige, was gemacht werden muss, ist, beim Programmstart die Daten aus einer XML-Datei zu laden und sie am Ende wieder zu speichern. Eine XML-Datei sähe dann z.B. so aus:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
<?xml version="1.0" standalone="yes" ?> 
<NewDataSet>
  <Tabelle1>
    <NameVonSpalte1>InhaltSpalte1</NameVonSpalte1> 
    <NameVonSpalte2>InhaltSpalte2</NameVonSpalte2> 
  </Tabelle1>
  <Tabelle1>
    <NameVonSpalte1>NochEinInhaltSpalte1</NameVonSpalte1> 
    <NameVonSpalte2>NachEinInhaltSpalte2</NameVonSpalte2>
  </Tabelle1>
  <Tabelle2>
    <NameVonSpalte1>InhaltSpalte1</NameVonSpalte1> 
    <NameVonSpalte2>InhaltSpalte2</NameVonSpalte2> 
  </Tabelle2>
  <Tabelle2>
    <NameVonSpalte1>NochEinInhaltSpalte1</NameVonSpalte1> 
    <NameVonSpalte2>NachEinInhaltSpalte2</NameVonSpalte2>
  </Tabelle2>
</NewDataSet>


Hilft das ein wenig?

MfG
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Christian S. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 06.08.04 12:40 
Seit ich mein neues Notebook mit XP Home habe, ist der Fehler nicht mehr aufgetreten. Scheint also kein Problem im Programm gewesen zu sein.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".