Lire un tableau dans un ini ? [Résolu]

Messages postés
459
Date d'inscription
lundi 19 avril 2004
Dernière intervention
8 avril 2009
- - Dernière réponse : DeltaFX
Messages postés
459
Date d'inscription
lundi 19 avril 2004
Dernière intervention
8 avril 2009
- 17 févr. 2006 à 20:54
Existe t'il un moyen de lire et d'ecrire une clef du genre

[MaSection]
MaClef=1,8,4800,1,1

Plutot que de stocker autant de lignes que de valeurs ?
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
199
Date d'inscription
dimanche 2 mars 2003
Dernière intervention
10 octobre 2006
3
Merci
Personnellement j'aurais donné la String renvoyée par le ini à un TStringList.CommaText :
aStringList.CommaText := ini.ReadString(aSection, aKey, '');
Et après suffit de faire :
SetLength(MonArray, aStringList.Count);
Puis une tite boucle...
For z := 0 to aStringList.Count-1 do
MonArray[z] := IntToStr(aStringList[z]);

et... ah bah c'est fini ^^

Tout problème a sa solution... Mais en général, c'est jamais la bonne...

Merci Emandhal 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de Emandhal
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
0
Merci
Salut,
la seule solution à ma conaissance c'est d'utiliser un String pour l'écrire et de te faire une fonction pour la lire à nouveau.

J'avais fait un truc similaire pour lire et écrire les valeurs d'un TRect en une ligne dans un fichier Ini:

Function RectToStr(Value : TRect) : String;
Const Mask = '%d, %d, %d, %d';
Begin
With Value do
Result : = Format(Mask, [Left, Top, Right, Bottom]);
End;

Function StrToRect(Separateur, Str: String): TRect;
Var TmpStr : String;
Begin
TmpStr := EmptyStr;
If ((Str <> EmptyStr) And (Separateur <> EmptyStr)) And (Pos(Separateur, Str) > 0) Then
Begin
TmpStr : = Copy(Str, 1, Pos(Separateur, Str) - 1);
Result.Left := StrToIntDef(TmpStr, 0);
Str := Copy(Str, Pos(Separateur, Str) + 1, High(Integer));
If Pos(Separateur, Str) > 0 Then
Begin
TmpStr : = Copy(Str, 1, Pos(Separateur, Str) - 1);
Result.Top := StrToIntDef(TmpStr, 0);
Str := Copy(Str, Pos(Separateur, Str) + 1, High(Integer));
End ;
If Pos(Separateur, Str) > 0 Then
Begin
TmpStr : = Copy(Str, 1, Pos(Separateur, Str) - 1);
Result.Right := StrToIntDef(TmpStr, 0);
Str := Copy(Str, Pos(Separateur, Str) + 1, High(Integer));
End ;
Result.Bottom : = StrToIntDef(Str, 0);
End;
End;

ce n'est qu'un exemple on peut faire mieux surtout réduire le code mais bon c'est plus cher
et en suite le reste est simple

@+
Cirec
Commenter la réponse de Cirec
Messages postés
459
Date d'inscription
lundi 19 avril 2004
Dernière intervention
8 avril 2009
0
Merci
Ah ben voila, je le sentais vieindre, le coup du faut passer par un string, Ouinnnnnn.......

Bah, je vais m'écrire un StrToArray basésur ton exemple, Cirec.

C'est dans ce genre de cas que des capacités Cobol-like seraient bien venues dans delphi.

Merci.
Commenter la réponse de DeltaFX
Messages postés
207
Date d'inscription
mardi 6 août 2002
Dernière intervention
29 octobre 2008
0
Merci
Polémique !!! Ce pauvre delphi !!!

Comme tu pourrais si bien le faire tu n'as qu'a créer un TIniFileArray héritant de TIniFile et créer une méthode ReadArray et le tour est joué.
En plus tu envois ta source à Borland (enfin il essai de vendre leurs IDE) et nous petits développeurs on réccupère le TIniFileArray

Merci à toi !!!

vaughan
Commenter la réponse de vaughan
Messages postés
459
Date d'inscription
lundi 19 avril 2004
Dernière intervention
8 avril 2009
0
Merci
Je pourrais aussi faire mes fichier ini en XML...
Commenter la réponse de DeltaFX
Messages postés
199
Date d'inscription
dimanche 2 mars 2003
Dernière intervention
10 octobre 2006
0
Merci
Pour écrire... même chose mais à l'envers...

et puis cette méthode permet d'avoir des Array de taille différents sans que la transformation pose de problèmes.

Tout problème a sa solution... Mais en général, c'est jamais la bonne...
Commenter la réponse de Emandhal
Messages postés
199
Date d'inscription
dimanche 2 mars 2003
Dernière intervention
10 octobre 2006
0
Merci
oops désolé, je m'a trompouillé ^^'

For z := 0 to aStringList.Count-1 do
MonArray[z] := StrToInt(aStringList[z]);

Tout problème a sa solution... Mais en général, c'est jamais la bonne...
Commenter la réponse de Emandhal
Messages postés
459
Date d'inscription
lundi 19 avril 2004
Dernière intervention
8 avril 2009
0
Merci
C'est cool ca, ca me permet en plus de savoir combien d'élément on été lu, donc de vérifier l'intégrité du ini dans une certaine mesure.
Commenter la réponse de DeltaFX

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.