![]() |
Ini Readsection begrenzt?
Hallo,
ich habe folgendes Problem:
Delphi-Quellcode:
Die Ini-Datei:
Ini:=TIniFile.Create('C:\liste.ini');
Ini.ReadSection('04.08.2009', Listbox1.items); Ini.Free; [04.08.2009] .... .... .... und weitere 200 Zeilen Strings In der Listbox wird allerdings nur bis Zeile 100 ausgegeben, die restlichen >100 fehlen - warum? Nachtrag: Wenn ich oberhalb der 100. Zeile Zeichen entferne, wird es entsprechend Länger ausgelesen. Das Problem tritt auf, sobald es mehr als 16580 Zeichen sind. |
Re: Ini Readsection begrenzt?
Ich weiss zwar nicht genau, was Du mit der Ini-Datei vor hast, aber ich vermute, das Du mit einer XML-Datei oder Datenbank besser bedient bist. Zumal AFAIR die maximale Größe von Ini-Datein auf 64 K(?)B begrenzt ist.
|
Re: Ini Readsection begrenzt?
Die Ini Datei dient als Protokoll. Die Dateigröße sollte kein Problem darstellen, da ich auch schon mehrere MegaByte als Größe einer Datei hatte und es funktionierte super. Das Problem scheint die Zeichenberenzung einer Section an irgendeiner Stelle zu sein.
Vielleicht kann ReadSection nur begrenzt lesen oder Listbox nur begrenzt aufnehmen? |
Re: Ini Readsection begrenzt?
Welche Delphi-Version und welches Betriebssystem verwendest du?
|
Re: Ini Readsection begrenzt?
Es handelt sich um Delphi 5 Professional und Windows XP SP3
|
Re: Ini Readsection begrenzt?
Zitat:
![]() Wenn du nur was mitloggen möchtest könntest du ja auch ne .txt Datei nehmen. (AppendStringToFile) Oder du versuchst mal BigINIFile. |
Re: Ini Readsection begrenzt?
Zitat:
|
Re: Ini Readsection begrenzt?
Zitat:
![]() |
Re: Ini Readsection begrenzt?
bissel OT:
Zitat:
Aber evtl. wurde es deswegen noch nie beseitigt/berichtigt. :gruebel: Und es ist ja auch "alte Technologie". (aber fein und einfach für kleine Configs) |
Re: Ini Readsection begrenzt?
Zitat:
da wird die INI dann reingeladen, die Änderung vorgenommen und alles neu gespeichert. |
Re: Ini Readsection begrenzt?
Zitat:
|
Re: Ini Readsection begrenzt?
Vielen Dank, also mit TMemIniFile funktioniert es!
Ist nur die Frage wieviel Speicher TMemIniFile unterstützt. |
Re: Ini Readsection begrenzt?
Zitat:
|
Re: Ini Readsection begrenzt?
Zitat:
Zitat:
Trotzdem halte ich es nicht für gut Ini-Dateien als Protokolldateien einzusetzen, dafür sind sie einfach nicht gedacht. |
Re: Ini Readsection begrenzt?
das, was Windows intern verwaltet könnten 8 KB sein (oder 4 bzw. 16 KB weis es grad auch nicht),
aber das was Windows weiterreicht, ist an 64 KB-Grenzen ($0001xxxx) ausgerichtet. |
AW: Ini Readsection begrenzt?
Habe da auch mal eine Frage, ich verwende in dem sinne keine wirkliche ini-Datei, allerdings die Systematik dieser Datei.
Wenn ich nun Werte auslese werden bei mir ebendfalls alle einträge "Verschluckt" an der Größe kann es auf jedenfall nicht liegen, da ich in diesem programm schon mit einer File von 1,0 KB erfolgreich daten innerhal des Programmes verwalte. Die datei, welche ich verwalte hat selbst eine Größe von 62 Byte. Hier der entsprechende Code für die verwaltung
Delphi-Quellcode:
function TUser.GetUserList: TStringlist;
var s, _s: String; Count: Byte; begin fStringList2:= TStringList.Create; Count:= 0; fFilename:= Format('%s%s', [fPath, fExt2+'.'+fList]); if FileExists(fFilename) then begin // Userliste Laden fStringlist2.LoadFromFile(fFileName); with TIniFile.Create(fFilename) do try S:= Format('%s', [fList]); ReadSection(s, fStringList); { for Count:= 1 to fStringList2.Count do begin _S:= ReadString(s, fList+intToStr(Count), ' '); fStringList.Add(_S); end; } finally Free; end; end; TempS:= IntToStr(fStringList.Count); Result:= fStringList; end;
Delphi-Quellcode:
S:= Format('[%s]', [fList]);
Delphi-Quellcode:
S:= Format('%s', [fList]);
|
AW: Ini Readsection begrenzt?
Den übermäßigen Gebrauch von Format brauchst du gar nicht. Um 2 Strings aneinander zu pappen kann man auch ganz einfach machen: String1 + String2. (Nur so als Hinweis). Und ein
Delphi-Quellcode:
hat keine andere Wirkung als die Variable selber.
Format('%s', [String1])
Zu dem anderen Teil aus deinem Code: Du verwendest mehr oder weniger 2 Stringlisten, die irgendwo als globale Variablen vorliegen. Das finde ich höchst fraglich, da du eine der beiden auch noch als Rückgabewert deiner Funktion verwendest. Was ich nicht verstehe ist, warum du eine StringList aufmachst, dort den gesamten Inhalt reinlädst und diese dann als Memory-Leak frei rumlaufen lässt. -> Erst mal aufräumen. Außerdem muss man eine Variable vor einer FOR-Schleife nicht initialisieren. Das kontert Delphi nur mit einer Warnung auf eine überflüssige Zuweisung. Bernhard |
AW: Ini Readsection begrenzt?
Was heißt "Verschluckt"?
Ist fStringList danach noch leer? (und wurde fStringList auch irgendwo erstellt? ) Wie sieht deine "es ist keiner, aber sieht fast wie eine INI-Datei aus"-Datei denn aus? (also was ist da drin) |
AW: Ini Readsection begrenzt?
Zitat:
Zitat:
Zitat:
und wenn du dir mein Profil richtig anschauen würdest, würdest du sehen, das ich kein geld aufgeben muß, um Pascal-Programme zu schreiben Zitat:
Delphi-Quellcode:
was in der File drinne steht???
fStringList2:= TStringList.Create;
Code:
da ich aber den fehler schon gefunden habe spielt das nun mehr oder weniger keine rolle mehr...
[[UserList]]
UserList1=Maxim Mustermann UserList2=Maik Geßner |
AW: Ini Readsection begrenzt?
Zitat:
Seltsam, da bleib ich doch bei Delphi ;) |
AW: Ini Readsection begrenzt?
Zitat:
wie sich schon daher erkennen lässt, verwende ich in dem Sinne eine die TStringlist, wie diese auch in einem(r) TMemo, TComboBox, und co zu einsatz kommen. |
AW: Ini Readsection begrenzt?
Zitat:
|
AW: Ini Readsection begrenzt?
Zitat:
Delphi-Quellcode:
erzeugt. also von daher hab ich auch schon meine erfahrungen machen müßen.
fStringList:= TStringList.Create;
|
AW: Ini Readsection begrenzt?
Und was ist mit fStringlist2? Die wird jedesmal neu erzeugt, wenn GetUserList aufgerufen wird, die alte Instanz verbleibt im Speicher und kann nicht mehr freigegeben wurde, weil die Variable ja nun auf die neue Instanz zeigt. Deshalb auch die Hinweise auf Speicherlecks.
|
AW: Ini Readsection begrenzt?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:19 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-2025 by Thomas Breitkreuz