Problème d'écriture dans un .INI

ericamiens
Messages postés
18
Date d'inscription
mardi 28 janvier 2003
Statut
Membre
Dernière intervention
9 septembre 2004
- 23 mai 2003 à 14:51
ericamiens
Messages postés
18
Date d'inscription
mardi 28 janvier 2003
Statut
Membre
Dernière intervention
9 septembre 2004
- 26 mai 2003 à 08:07
bonjour,
lors d'écritures massives (beaucoup d'écritures de 'petites' chaînes) dans un .INI, j'ai le message
'Ne peut écrite dans '+le nom du fichier.
j'utilise delphi 3 sous win 98.
j'ai regardé le code 'IniFiles.pas' et j'ai vu que le WriteString() fait appel à WritePrivateProfileString().
je pense que cela vient de la taille du .INI : juste avant de 'planter', la taille est de
64 Ko...
y aurait-il des limites ? dues à delphi 3 ?
j'ai pourtant des .INI plus gros sur mon disque dur. mais ils ne sont peut-être pas écrits/lus par les mêmes méthodes...
important : je vide le cache après chaque écriture : Update() n'existant pas en delphi 3, je fais : WritePrivateProfileString(NIL, NIL, NIL, PChar(INI.FileName)) (comme le fait l'update : vu dans le source de delphi 5).

bref, si je peux dépasser la limite des 64 Ko, je continue avec l'objet TIniFile, sinon de passe à l'objet TRegistry bien que je trouve cela moins pratique (risque de corruptions, copie vers un autre poste problèmatique, ... ). c'est pour cela que je vous demande de l'aide : peut-on franchir la barrière des 64 Ko ?

merci d'avance pour vos réponses et bonne fin de journée.

Eric

2 réponses

cs_Delphiprog
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
9 janvier 2013
31
24 mai 2003 à 00:57
La limite des fichiers .ini est effectivement de 64 Ko.
Cette limitation n'est pas dûe à Delphi mais à Windows lui même.
Si les sections (au sens des fichiers .ini) ne sont pas une nécessité absolue et si tu ne stockes que des chaînes de caractères, tu peux utiliser un TStringList. En utilisant les propriétés Names ou Values, tu peux retrouver très rapidement l'un par rapport à l'autre. En prime, tu t'affranchis de cette barrière fatidique des 64 Ko. Et pour la sauvegarde comme pour le chargement en mémoire, il n'y a pas plus facile d'utilisation. Pour chaque ligne, il suffit de respecter le format "name=value".

Ou alors, fractionner en plusieurs fichiers ini.
May Delphi be with you
0
ericamiens
Messages postés
18
Date d'inscription
mardi 28 janvier 2003
Statut
Membre
Dernière intervention
9 septembre 2004

26 mai 2003 à 08:07
Merci bien, je me doutais de cette limite...
j'ai (ce week-end) écrit un composant qui permet de s'affranchir de cette limite : les propriétés/méthodes sont les mêmes que celles du TIniFile (pour avoir moins de chose à ré-écrire).
je vais le tester et l'utiliser.
merci encore et bonne semaine
Eric
0