equivalent collection - Delphi/Pascal - Programmation
Marsh Posté le 08-11-2004 à 14:06:09
Tu peux utiliser une TStringList ou THashedStringList et ses propriétés Values, Names, etc., mais il faudra convertir toi-même les éléments en string.
C'est pour faire quoi ?
Marsh Posté le 08-11-2004 à 14:13:05
Jai besoin dacceder regulierement a des elements se trouvant dans un fichier, jaimerai eviter de louvrir et de le parser a chaque fois
le fichier est organise comme ceci
Code :
|
apres je voudrais pouvoir faire
Code :
|
et recuperer le path
Marsh Posté le 08-11-2004 à 15:39:03
utilise un fichier ini classique genre
DEF_PATH=c:\program files\...
et lis-le avec un TMemIniFile que tu ne crées qu'une seule fois au démarrage
si la syntaxe que tu as montée est obligatoire, je pense que la TStringList ou THashedStringList sera ce qu'il y a de plus facile comme équivalent des collections VB. La THashedStringList est plus rapide si tu as beaucoup d'éléments
val := Liste.Values['DEF_PATH'];
pour le T(Hashed)StringList
val := Ini.ReadString('paths', 'DEF_PATH', '');
pour le TMemIniFile
Marsh Posté le 08-11-2004 à 15:54:40
donc en fait je genere une string ( temps de concatenation de string enorme??) et je lassocie avec Liste.commatext puis je consulte ?
Marsh Posté le 08-11-2004 à 16:00:38
Je sais pas, ça dépend de la tronche qu'a ton fichier et comment tu le lis.
Soit t'ajoutes chaque chaîne via un Add, mais il faut que la clé et la valeur soient séparées par un =
Soit tu appelles Values['Clé'] := Valeur pour chaque ligne que tu lis, après avoir découpé la chaîne en deux.
C'est pour ça que je suggérais d'utiliser un TMemIniFile avec une structure de fichier INI si jamais le format de fichier n'est pas obligatoirement celui que tu as présenté...
Marsh Posté le 08-11-2004 à 18:57:00
Pour les fichiers ini au fait, comme on passe par les API Win, on est limités à 64 Ko non ?
Marsh Posté le 08-11-2004 à 18:58:15
Avec TIniFile ça passe par l'API Windows, donc limité à 64 Ko et très lent parce qu'ouverture du fichier à chaque appel.
Avec TMemIniFile pas de limite, c'est entièrement fait en Delphi avec des THashedStringList : tout le fichier est lu et mis en mémoire à la création. Mais du coup les écritures ne sont pas immédiates : le fichier est écrit lorsque l'on appelle UpdateFile.
Marsh Posté le 08-11-2004 à 10:32:39
je cherche lequivalent d'une collection vba en delphi c a dire un vecteur dans lequel on peut inserer des elements (integer,string,float) et y acceder par une clé de type string