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 Ini Readsection begrenzt? (https://www.delphipraxis.net/138268-ini-readsection-begrenzt.html)

WInfo 6. Aug 2009 14:09

Re: Ini Readsection begrenzt?
 
Zitat:

Zitat von TeronG
bissel OT:
Zitat:

Zitat von HeikoAdams
...Daher wohl das Limit von 64 KB.

Naja. Ich glaube mal nicht, dass das Limit deswegen absichtlich eingebaut wurde. :P
Aber evtl. wurde es deswegen noch nie beseitigt/berichtigt. :gruebel:

Hatte ja damals auch dicke ausgereicht, bis alle Programme damit anfingen allen möglichen Schrott in die .INI zu schreiben. Dann wurde es halt recht eng und M$ hat dann das Update (Registry) auf dem Markt gebracht, welches noch einiges mehr an Daten ermöglicht. Was leider auch nicht so glücklich war...

gogl1985 6. Aug 2009 14:19

Re: Ini Readsection begrenzt?
 
Vielen Dank, also mit TMemIniFile funktioniert es!

Ist nur die Frage wieviel Speicher TMemIniFile unterstützt.

Uwe Raabe 6. Aug 2009 14:22

Re: Ini Readsection begrenzt?
 
Zitat:

Zitat von gogl1985
Ist nur die Frage wieviel Speicher TMemIniFile unterstützt.

Die Ini-Datei kann bis 2GB groß werden - theoretisch...

Luckie 7. Aug 2009 00:20

Re: Ini Readsection begrenzt?
 
Zitat:

Zitat von himitsu
Zitat:

Zitat von HeikoAdams
Daher wohl das Limit von 64 KB.

das Limit stammt wohl eher daher, daß nur ein Speicher von 64 KB reserviert wird (eine Speicherseite von Windows).
da wird die INI dann reingeladen, die Änderung vorgenommen und alles neu gespeichert.

Ich hatte bisher immer 8 KB im Kopf.

Zitat:

Zitat von WInfo
Hatte ja damals auch dicke ausgereicht, bis alle Programme damit anfingen allen möglichen Schrott in die .INI zu schreiben. Dann wurde es halt recht eng und M$ hat dann das Update (Registry) auf dem Markt gebracht, welches noch einiges mehr an Daten ermöglicht. Was leider auch nicht so glücklich war...

Das war wohl nur ein Grund von vielen. Viel wichtiger wahr wohl, dass man in der Registry Daten strukturierter ablegen kann.

Trotzdem halte ich es nicht für gut Ini-Dateien als Protokolldateien einzusetzen, dafür sind sie einfach nicht gedacht.

himitsu 7. Aug 2009 01:26

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.

Maik81ftl 5. Apr 2011 20:24

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]);

rollstuhlfahrer 5. Apr 2011 22:38

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:
Format('%s', [String1])
hat keine andere Wirkung als die Variable selber.

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

himitsu 9. Apr 2011 07:32

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)

Maik81ftl 9. Apr 2011 08:58

AW: Ini Readsection begrenzt?
 
Zitat:

Zitat von rollstuhlfahrer (Beitrag 1093322)
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:
Format('%s', [String1])
hat keine andere Wirkung als die Variable selber.

Ähmmm in der File, welche in der TStringlist2 liegen befinden sich Mehrere Zeilen. *mal anmerk*

Zitat:

Zitat von rollstuhlfahrer (Beitrag 1093322)
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.

Die TStringlisten sind einzig und allein in der klasse definiert. Das mit dem Speicherleak hat sich schon lange erledigt.

Zitat:

Zitat von rollstuhlfahrer (Beitrag 1093322)
Außerdem muss man eine Variable vor einer FOR-Schleife nicht initialisieren. Das kontert Delphi nur mit einer Warnung auf eine überflüssige Zuweisung.

Was das angeht, ist das noch ein Überbleibsel aus der Fehlersuche unter verwendung einer Repeat Until- Schleife.
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:

Zitat von himitsu (Beitrag 1094042)
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)

Ähmmm Siehst du diese Befehlszeile???
Delphi-Quellcode:
fStringList2:= TStringList.Create;
was in der File drinne steht???

Code:
[[UserList]]
UserList1=Maxim Mustermann
UserList2=Maik Geßner
da ich aber den fehler schon gefunden habe spielt das nun mehr oder weniger keine rolle mehr...

Sir Rufo 9. Apr 2011 09:06

AW: Ini Readsection begrenzt?
 
Zitat:

Zitat von Maik81ftl (Beitrag 1094052)
Zitat:

Zitat von himitsu (Beitrag 1094042)
Was heißt "Verschluckt"?
Ist fStringList danach noch leer? (und wurde fStringList auch irgendwo erstellt? )

Ähmmm Siehst du diese Befehlszeile???
Delphi-Quellcode:
fStringList2:= TStringList.Create;

ja und? Ist bei FreePascal fStringList2 das gleiche wie fStringList?
Seltsam, da bleib ich doch bei Delphi ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:21 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-2025 by Thomas Breitkreuz