equivalent collection

equivalent collection - Delphi/Pascal - Programmation

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

Reply

Marsh Posté le 08-11-2004 à 10:32:39   

Reply

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 ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

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 :
  1. "DEF_PATH","C:\program files\xxxx"
  2. "REFER_DB","c:\xxxxxx"


 
apres je voudrais pouvoir faire  

Code :
  1. foo:=list['DEF_PATH']

et recuperer le path


Message édité par red faction le 08-11-2004 à 14:13:19
Reply

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


Message édité par antp le 08-11-2004 à 15:41:31

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

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 ?

Reply

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é...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

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 ?

Reply

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.


Message édité par antp le 08-11-2004 à 18:58:37

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed