Récup des sections .ini [Résolu]

perou2040 9 Messages postés mercredi 6 octobre 2004Date d'inscription 11 mai 2006 Dernière intervention - 10 mai 2006 à 16:24 - Dernière réponse : perou2040 9 Messages postés mercredi 6 octobre 2004Date d'inscription 11 mai 2006 Dernière intervention
- 12 mai 2006 à 09:08
re

j'ai avancé ds le programme et un autre probleme se pose, l'incompatibilité d string et Tstring.
je souhaiterais récupérer toutes les sections d'un .ini dans un tableau où chaque ligne du tableau comporte une section.j'ai essayé de contourner en mettant les section ds une liste puis ds un tableau mais ca ne marche pa.
voici mon code qui ne marche pa, si vous voyez ou je dois modifier:
merci d'avance



var
section : array[0..10] of string;
i:integer;


begin
LangIni.ReadSections(ListBox1.Items);

for i:=1 to 6
do begin

section[i]:=ListBox1.Items.DelimitedText;

end;
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 10 mai 2006 à 16:52
3
Merci
type
TStringArray = array of string;

var
SectionsTable: TStringArray;

function GetSections(var ASecTable: TStringArray) : integer;
var SectionsList : TStringList;

i : integer;

begin
// si l'objet LangIni n'est pas créé, on quitte la methode
// et on renvois "-1"
if not assigned(LangIni) then begin
result := -1;
exit;
end;
// on crée l'objet SectionsList
SectionsList := TStringList.Create;
// on recupere les sections
LangIni.ReadSections(SectionsList);
// on definit la taille du tableau par rapport aux nombres de sections
SetLength(ASecTable, SectionsList.count);
// si il y a des sections
if SectionsList.count <> 0 then
// on remplis la table
for i := 0 to high(ASecTable) do
ASecTable[i] := SectionsList.Strings[i];
// enfin, on libre l'objet SectionsList
SectionsList.free;
// et on renvois le nombre d'enregistrements du tableau
Result := Length(ASecTable);
end;

// on l'utiliseras comme cela :

var CountSections, N : integer;
begin
CountSections := GetSections(SectionsTable);
if CountSections = -1 then
... erreur LangIni pas disponible ...

if CountSections = 0 then
... pas de sections trouvées

if CountSections > 0 then
for N := 0 to CountSections do
.... SectionsTable[N];

Merci f0xi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de f0xi
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 10 mai 2006 à 19:22
0
Merci
Dis, perou2040, pourquoi veux-tu "transvaser" le contenu du TStrings dans un array of string alors qu'il est bien plus facile et souple d'utiliser un TStrings ??

Si tu ne te plantes pas ......
tu ne pousseras jamais
Commenter la réponse de florenth
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 10 mai 2006 à 19:24
0
Merci
NBqui ne sert à rien :
f0xi le test de if SectionsList.count <> 0 then n'est pas nécessaire puique ce sera fait en interne par le code généré pour la boucle 'for'.

Voila c'est tout mais en même temps, je vous avait prévenu

Si tu ne te plantes pas ......
tu ne pousseras jamais
Commenter la réponse de florenth
perou2040 9 Messages postés mercredi 6 octobre 2004Date d'inscription 11 mai 2006 Dernière intervention - 11 mai 2006 à 09:44
0
Merci
en fait je voispa trop la différence entre Tstring et string...

merci pr le bou de code, il y a quelque problem de compilation (normal...), je v essayé de faire fonctionner ca et je vous tiens au jus


a+
Commenter la réponse de perou2040
elguevel 735 Messages postés jeudi 19 décembre 2002Date d'inscription 22 novembre 2016 Dernière intervention - 11 mai 2006 à 09:58
0
Merci
Ah çà n'a rien avoir : un TString si tu veux pour faire simple c'est une liste de String :-)
Commenter la réponse de elguevel
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 11 mai 2006 à 15:13
0
Merci
Et pour completer elguevel, TStrings ou TStringList correspond à un array of string sauf que c'est plus complet et beaucup plus simple à gérer.
Fais un tour dans l'aide de Delphi car tout y est expliqué.

Et valide une réponse si elle te convient.

Si tu ne te plantes pas ......
tu ne pousseras jamais
Commenter la réponse de florenth
perou2040 9 Messages postés mercredi 6 octobre 2004Date d'inscription 11 mai 2006 Dernière intervention - 11 mai 2006 à 15:41
0
Merci
tinkiet je v en valider de la réponse.quand le code tournera.car de vue il devrait marcher. et merci de m'avoir expliqué les nuances de strings.
pour l'instant je crois que l'erreur est simple mais je me cass la tete depuis quelque heures (é oui je débute).

bon a la compilation il me di pr la déclaration de la fonction :
- "Identificateur non déclaré : 'TStringDynArray'"
-Expression attendu(e) mais 'ARRAY' trouvé(e)
-Le paramètre par défaut 'ASecTable' doit être par valeur ou const

ensuite j'ai un "type incompatible" qui doit venir a mon avis du "SectionsList.count"

si vous pensez savoir ou est cette erreur faite moi signe.merci

je laiss le début du code sinon ensuite c le meme qu'en haut:

unit principale;
interface
uses
...
type
TForm1 = class(TForm)
TStringDynArray : array of string;

function GetSections(var ASecTable : TStringDynArray) : integer;

...


function TForm1.GetSections(var ASecTable: TStringDynArray):integer;
var ...

begin
...
end;


GEII Bx1 (............)
Commenter la réponse de perou2040
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 11 mai 2006 à 16:52
0
Merci
C'est normal: il faut que tu déclares le type TStrinDynArray avant ou après la déclaration de la fiche (en tout cas avant celle de la fonction ^^)
Là, dans ton code, tu le déclares dedans, c'est pour cela que ça ne marche pas.
Et, en plus, tu ne déclares pas un type, mais une variable dans la classe TForm ...
Bref, le cours sur les types est à revoir.

Pour te donner la réponse, ça doit ressembler à ça (partie interfcace seulement) :
<hr size= "2" width="100%"> unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TStringDynArray = array of string; // déclaration ici et comme ça !!!

TForm1 = class (TForm)
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;

function GetSections(var ASecTable: TStringDynArray) : integer;

var
Form1: TForm1;
<hr size ="2" width="100%">++

Si tu ne te plantes pas ......
tu ne pousseras jamais
Commenter la réponse de florenth
perou2040 9 Messages postés mercredi 6 octobre 2004Date d'inscription 11 mai 2006 Dernière intervention - 12 mai 2006 à 09:08
0
Merci
ahhhhhhhh!!!! delphi de *¤!"~°! c'est ce que j'avais fait au départ... j'en reviens pas, c'est mon delphi qui plante parfois, et parfois il n'y a pas d'erreur mais il ne compile pas...c'est galère...

merci beaucoup florenth,génial.

je poursuis le développement du programme

A+

Amaroots pr vous servir
Commenter la réponse de perou2040

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.