Entwickler-Ecke
Dateizugriff - Seltsames Verhalten von TMemini
Gausi - Fr 11.04.03 23:42
Titel: Seltsames Verhalten von TMemini
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...
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??
Delete - 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 - 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
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.
Delete - Sa 12.04.03 09:53
Wie erzeugst du denn das Objekt TIniFile?
Quelltext
1:
| ini := TIniFile.Create('c:\test.ini') |
Gibt nur eien Datei.
Zeig am besten mal den ganzen Code.
Gausi - Sa 12.04.03 11:10
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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!