ericamiens
Messages postés18Date d'inscriptionmardi 28 janvier 2003StatutMembreDernière intervention 9 septembre 2004
-
23 mai 2003 à 14:51
ericamiens
Messages postés18Date d'inscriptionmardi 28 janvier 2003StatutMembreDerniè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.
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 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".
ericamiens
Messages postés18Date d'inscriptionmardi 28 janvier 2003StatutMembreDerniè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