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

DeltaFX 459 Messages postés lundi 19 avril 2004Date d'inscription 8 avril 2009 Dernière intervention - 16 févr. 2006 à 19:19 - Dernière réponse : DeltaFX 459 Messages postés lundi 19 avril 2004Date d'inscription 8 avril 2009 Dernière intervention
- 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 

8 réponses

Répondre au sujet
Emandhal 199 Messages postés dimanche 2 mars 2003Date d'inscription 10 octobre 2006 Dernière intervention - 17 févr. 2006 à 18:25
+3
Utile
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...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Emandhal
Cirec 4217 Messages postés vendredi 23 juillet 2004Date d'inscription 3 avril 2018 Dernière intervention - 17 févr. 2006 à 02:51
0
Utile
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
DeltaFX 459 Messages postés lundi 19 avril 2004Date d'inscription 8 avril 2009 Dernière intervention - 17 févr. 2006 à 10:04
0
Utile
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
vaughan 207 Messages postés mardi 6 août 2002Date d'inscription 29 octobre 2008 Dernière intervention - 17 févr. 2006 à 10:51
0
Utile
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
DeltaFX 459 Messages postés lundi 19 avril 2004Date d'inscription 8 avril 2009 Dernière intervention - 17 févr. 2006 à 16:06
0
Utile
Je pourrais aussi faire mes fichier ini en XML...
Commenter la réponse de DeltaFX
Emandhal 199 Messages postés dimanche 2 mars 2003Date d'inscription 10 octobre 2006 Dernière intervention - 17 févr. 2006 à 18:27
0
Utile
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
Emandhal 199 Messages postés dimanche 2 mars 2003Date d'inscription 10 octobre 2006 Dernière intervention - 17 févr. 2006 à 18:28
0
Utile
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
DeltaFX 459 Messages postés lundi 19 avril 2004Date d'inscription 8 avril 2009 Dernière intervention - 17 févr. 2006 à 20:54
0
Utile
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.