Autor Beitrag
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 480

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 11.04.03 23:42 
Ich hab mal wieder n Blackout mit meinen TIniFiles. Ich benutze die, um verschiedene Listen abzuspeichern.
Ich hatte eben n kleinen Fehler im Code (falsche Schleifenvariable), so dass ich während des Speichervorgangs einen Speicherzugriffsfehler hatte...

ausblenden Quelltext
1:
2:
3:
for i:=0 to personenliste.count do
   ini.WriteString('Namen','Person'+inttostr(i),
                (personenliste[j].Name);

Fehler war das [j], was eigentlich ein [i] sein sollte. Soweit alles klar.

Als ich dann in das Verzeichnis der Ini-Datei sah, waren da lauter Dateien mit Namen, die den Strings entsprachen, die eigentlich dadrinstehen sollten.
Also Person1=Otto, Person2=Paul usw.
kann mir einer erklären, wie und warum diese Dateien entstanden sind??

_________________
We are, we were and will not be.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 12.04.03 05:39 
Ich würde sagen deine Personenliste fängt mit dem Index 0 an. So un djetzt überleg mal von wo bis wo deine Schleife läuft. :wink:
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 480

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 12.04.03 09:45 
is mir schon klar, dass die schleife bis ganz durchläuft (j<count-1) oder direkt beim ersten mal abbricht. Problem ist: Ich wollte damit Daten in EINE Datei schreiben. (merke grade: das muss
ausblenden Quelltext
1:
 for i:=0 to personenliste.count-1					

heissen, das hab ich aber nur beim übertragen hierhin vergessen)

Durch diesen Anfängefehler mit dem j wurden die Informationen nicht in die Datei gepackt, sondern in das VERZEICHNIS, in dem die Ini reinsollte.
Prinzipiell sah die Dateiauflistung im Explorer so aus, wie eigentlich die Ini aussehen sollte.
Und DAS verstehe ich nicht.

_________________
We are, we were and will not be.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 12.04.03 09:53 
Wie erzeugst du denn das Objekt TIniFile?
ausblenden Quelltext
1:
ini := TIniFile.Create('c:\test.ini')					

Gibt nur eien Datei.

Zeig am besten mal den ganzen Code.
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 480

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 12.04.03 11:10 
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
sf:=tMeminifile.Create(Planspeicherndialog.FileName);
sf.Clear;
try
  sf.writeinteger('Anzahlen','Personen',pesonenliste.count);
  for i:=0 to personenliste.count-1 do
  begin
      sectionSTR:='person'+inttostr(i);
      sf.WriteString  (sectionSTR,'Name',personenliste[i].name);
      sf.WriteInteger(sectionSTR,'Groesse',personenliste[i].groesse);
      sf.WriteDate    (sectionSTR,'Geboren',personenliste[i].geburtstag);
      kannSTR:='';
      for j:=0 to (personenliste[i] as person).kannliste.count-1 do
              if Integer((personenliste[i] as person).kannliste.items[i])>0   <--- hier hatte ich den falschen Index gewählt, das zweite i muss ein j sein
              then kannSTR:=kannstr+'4'
              else kannSTR:=kannstr+'0';
      sf.writestring(sectionSTR,'Kannliste',kannSTR);
//...waren noch mehr anweisungen dieser art, aber prinzipiell wars das
   end;
finally
   sf.updatefile;
   sf.free;
end;


edit: Fehler eingebaut

_________________
We are, we were and will not be.