Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi INI wird abgeschnitten unter 98 (https://www.delphipraxis.net/111030-ini-wird-abgeschnitten-unter-98-a.html)

moelski 28. Mär 2008 09:38


INI wird abgeschnitten unter 98
 
Moin !

Wir haben bei unserer Anwendung ein komisches Problem. Und zwar wird die INI abgeschnitten. Das passiert z.B. hier:
Delphi-Quellcode:
    DeviceINI := TINIFile.Create(INIFile);
    DeviceINI.WriteBool('Gerät', 'Used', ListView1.Items[_i].Checked);
    DeviceINI.UpdateFile;
    DeviceINI.Free;
Da wird dann nach der Zeile alles abgekappt.

Hat jemand eine Idee was dieses Problem verursachen kann? Weil unter >= 2k geht es stressfrei. :gruebel:

taaktaak 28. Mär 2008 09:45

Re: INI wird abgeschnitten unter 98
 
Moin, Moin,
obwohl ich es mir eigentlich nicht so recht vorstellen kann: Ist das "Free" vielleicht schneller als "UpdateFile"?

moelski 28. Mär 2008 09:49

Re: INI wird abgeschnitten unter 98
 
Moin !

Hmm, aber müsste nicht erst das Update zuende laufen und dann das Free kommen?
Das würde ja bedeuten das Update als selbstständiger Thread laufen müsste :gruebel:

taaktaak 28. Mär 2008 09:51

Re: INI wird abgeschnitten unter 98
 
Na ja, wie gesagt, wäre schon seltsam, aber etwas anderes fällt mir als mögliche Ursache dazu nicht ein :?

wido 28. Mär 2008 10:01

Re: INI wird abgeschnitten unter 98
 
Wie groß ist die INI Datei? Bei 9x existiert glaube ich ein 64kb Limit.

moelski 28. Mär 2008 10:04

Re: INI wird abgeschnitten unter 98
 
Die größe INI die wir haben ist 45kb.

Und die um die es hier gerade geht ist nur 7k

wido 28. Mär 2008 10:15

Re: INI wird abgeschnitten unter 98
 
Ich hoffe INIFile ist ein Absoluter Dateiname? Wie sieht die INI nach dem Truncaten aus? Steht da dann ausschließlich der Bool Wert drin oder stehen dort bis zum Boolwert noch alte Daten drin, aber ab dort dann nichts mehr?

DelphiKlaus 28. Mär 2008 10:17

Re: INI wird abgeschnitten unter 98
 
Hallo,

ich hab UpdateFile beim Ändern von Ini-Dateien noch nie benutzt. Sollte auch ohne funktionieren. Ich würd das einfach mal ausprobieren.

MfG

Klaus

moelski 28. Mär 2008 10:18

Re: INI wird abgeschnitten unter 98
 
Moin !

Dateiname ist komplett mit Pfad.

Nach dem abschneiden steht alles drin bis zu dem Boolwert. Und ab dann is leer.
Das passiert aber nicht nur bei einem Boolwert. Auch bei einem String passiert das gleiche.

Updatefile ...
Hatten wir vorher nicht drin. Ging auch nicht.

Klaus01 28. Mär 2008 10:20

Re: INI wird abgeschnitten unter 98
 
Hallo,

passiert das gleiche wenn Du anstelle von TIniFile TMemIniFile nimmst?

Grüße
Klaus

moelski 28. Mär 2008 10:24

Re: INI wird abgeschnitten unter 98
 
Moin Klaus,

das mit TMemIni muss ich erst testen.
Kann ich noch nicht sagen.

Werde ich gleich mal probieren.

wido 28. Mär 2008 10:26

Re: INI wird abgeschnitten unter 98
 
Hm ... das artet bei mir jetzt bissi in Raten aus. Haben die Win9x Profile APIs evtl. Probleme mit Umlauten? Ansonsten bliebe immer noch die Möglichkeit auf eine alternative INI File Komponente zu setzen, die dann auch gleich die Größenlimitierung von 64kb entfernt. Als durchaus brauchbar hat sich da IniFiles32 erwiesen von Stephan Schneider:

http://www.torry.net/authorsmore.php?id=528

moelski 29. Mär 2008 09:05

Re: INI wird abgeschnitten unter 98
 
So ebdlich den Test gemacht ...

Wenn ich TMemIniFile nutze bleibt alles heile. Alles geht.

Kann sich da nun jemand einen Reim drauf machen ?? Ich gerade nicht :shock: :gruebel:

SirThornberry 29. Mär 2008 09:46

Re: INI wird abgeschnitten unter 98
 
TIniFile nutzt die Windowsfunktionen. Wenn dein Windows da eine beschränkung drin hat oder mit Umlauten nicht klar kommt etc. kann sowas passieren. TMemIniFile setzt glaub ich nicht so auf die Windowsfunktionen auf und ist damit nicht an die Windowsgrenzen gebunden.

Popov 29. Mär 2008 10:16

Re: INI wird abgeschnitten unter 98
 
Also die Ini kommt mit Umlauten klar, das habe ich schon mehrmals getestet. Was ich weiß, daß unter 98 die Dateigröße auf 64 kB beschränkt war. Ob es bei XP immer noch so ist weiß ich nicht. Sollte man mal überprüfen. Außerdem ist die maximale Zeilenlänge bei Ini 1024 Zeichen. War zumindest unter 98 so. Alles darüber war weg.

Eines kann man sich sicher sein, Free wird nicht ausgeführt bevor die Zeile davor ausgeführt wurde.

Wenn eine INI abgeschnitten wurde, dann gibt es nur zwei Möglichkeiten:

- die Routine wurde vorher verlassen

- es schlich sich ein Null rein

Ich tippe auf das Zweite.

Untersuche die Datei mal mit einem Hexeditor. Prüfe ob dazwischen, bzw. nach dem Eintrage eine Null im Text ist. Der Text selbst kann länger sein, aber ein Editor wird bei Null Schluß machen.

WS1976 29. Mär 2008 11:10

Re: INI wird abgeschnitten unter 98
 
Hallo,

alle diese Vermutungen sind falsch. Win98 kann maximal 64k Ini Dateigrösse verwalten. Danach wir alles abgeschnitten. Dies geschieht völlig unkoordiniert und völlig wahrlos. Es können Zwischenstücke fehlen oder auch ganze Teile. Sicher kann man nur bis zu einer Grösse von ca 40k sein.
Dass kleinere Dateien auch schon abgeschnitten werden liegt daran, dass temporär die 64k überschritten werden. Wie das funktioniert und wie das passiert entzieht sich meiner Kenntnis.
Bei uns (Elster Group) gab es jede Menge Experimente dazu, die dann dazu geführt haben, dass unsere Programme für Win98 gesperrt wurden.

Grüsse
Rainer


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:23 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