[R] Selection ini

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Lems
Niveau 2
Niveau 2
Messages : 19
Enregistré le : mer. 13 févr. 2008 15:24
Status : Hors ligne

[R] Selection ini

#1

Message par Lems »

Bonjour,

Je vous fait part de mon petit souci, je me met peux à peux à Autoit. J'utilisais jusqu'alors Excel et le VBA mais le manque de possibilités et le cloisonnement m'ont poussé à en sortir.
Je cherche donc à exploiter ce petit bijoux. Mon premier chantier sera surement de créer un logiciel permettant de gérer ma médiathèque. Il faut donc pouvoir inscrire des informations dans un fichier puis les retrouver facilement.

L'utilisation d'un fichier ini me semblait bonne mais je ne parviens pas à utiliser la fonction pour retrouver ce que j'y ai mis.
Ma question doit être trop basique pour avoir été posé, je n'ai pas trouvé de sujet y faisant référence.

Pour tester j'ai créer :

Code : Tout sélectionner

$frap=InputBox("Rentre le texte de ton choix","","")
IniWrite("C:\Nouveau dossier\la.ini", "section29", "Repère", $frap)
$retour = IniReadSection("C:\Nouveau dossier\la.ini","section29")
MsgBox(0,"Ton message était :", $retour)
Le texte que j'ai entré dans la boite est bien dans le fichier mais je ne parviens pas à le récupérer.
Je ne parviens pas à savoir si le souci vient de mon utilisation du fichier ini ou de la commande.

Mes questions sont donc :

1/ Comment fonctionne le système de section des fichiers ini ?
2/ A quoi correspondent les clefs ?
3/ La commande que j'utilise pour appeler est elle la bonne ?
4/ Un fichier ini a il un capacité maximum ?

Merci de m'avoir lu.
Les cons osent tout ! C'est d'ailleurs à ça qu'on les reconnait ;)
Avatar du membre
eln
Niveau 6
Niveau 6
Messages : 202
Enregistré le : sam. 28 juil. 2007 12:54
Status : Hors ligne

Re: [..] Selection ini

#2

Message par eln »

Bonjour

Je n'ai pas réponse à tout. Tu n'as pas de résultat car $retour est un tableau.

The number of elements returned will be in $result[0][0]. If an @error occurs, no array is created.

donc si tu veux ton résultat :

Code : Tout sélectionner

MsgBox(0, "Ton message était :", $retour[1][1])
et

Code : Tout sélectionner

MsgBox(0, "Ton message était :", $retour[1][0])
renvoie Repère
Un fichier ini a il un capacité maximum ?
Only the first 32767 chars are taken in account in an section due to Win9x compatibility.
donc oui je pense au moins pour la fonction IniReadSection.
Débutant, pas taper !
Avatar du membre
arrkhan
Niveau 8
Niveau 8
Messages : 528
Enregistré le : sam. 17 nov. 2007 03:30
Status : Hors ligne

Re: [..] Selection ini

#3

Message par arrkhan »

quelque chose comme ca pourrait probablement t'aider

Code : Tout sélectionner

$frap=InputBox("Rentre le texte de ton choix","","")
$frap2=InputBox("et un autre texte","","")
DirCreate(@HomeDrive & "\Nouveau dossier")
IniWrite(@HomeDrive & "\Nouveau dossier\la.ini", "section29", "Repère", $frap)
IniWrite(@HomeDrive & "\Nouveau dossier\la.ini", "section29", "Repère2", $frap2)
$retour = IniReadSection(@HomeDrive & "\Nouveau dossier\la.ini","section29")
If @error Then 
    MsgBox(4096, "Erreur", "Probablement pas de fichier ini.")
Else
    For $i = 1 To $retour[0][0]
        MsgBox(0, "Ton message était :", "Key: " & $retour[$i][0] & @CRLF & "Value: " & $retour[$i][1])
    Next
EndIf
 
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Selection ini

#4

Message par Tlem »

Bonsoir.

Si je peut me permettre, je pense que la gestion d'une médiathèque en utilisant un fichier INI risque fort de montrer ses limites très rapidement (Cela dit, ça dépend du nombre d'information à gérer).

Un fichier INI n'est pas réellement prévu pour stocker une masse d'information.
Cela dit, vous pouvez contourner le problème, en utilisant une gestion de plusieurs fichiers INI, mais quitte à ce casser la tête pour la réalisation d'un script, autant le faire bien.

En ce qui me concerne, je pense que l'utilisation d'un fichier XML, ou d'une base de donnée classique devrait être plus raisonnable.

Voici quelques liens traitant des bases de données :
http://www.autoitscript.com/forum/index ... opic=40397
http://www.autoitscript.com/forum/index ... opic=57555
http://www.autoitscript.com/forum/index ... ntry230946
http://www.autoitscript.com/forum/index ... opic=17099
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Lems
Niveau 2
Niveau 2
Messages : 19
Enregistré le : mer. 13 févr. 2008 15:24
Status : Hors ligne

Re: [..] Selection ini

#5

Message par Lems »

Bonjour et merci tout le monde pour vos réponses :)


J'ai un gros souci rapport à la déclaration de variables sous Autoit. J'ai saisi qu'une variable crée peut être soit locale (si elle est dans une fonction elle y reste) soit globale(fixe quel que soit l'endroit du programme) mais pas vraiment le reste. Je ne vois jamais dans vos scriptes de définition de la dimension des variables et pourtant ça fonctionne ... :roll:
Par exemple si je veux obtenir une variable qui soit un entier, je peux la créer comment ??? :?
Comment se structure une variable par défaut ?

Merci pour l'exemple arrkhan, j'ai beaucoup réfléchi dessus.
Si j'ai bien saisi ce que tu voulais me faire comprendre c'est que $retour contient l'adresse du fichier et la section au même titre que l'on aurait une armoire et un livre. Ensuite pour accéder à mes données, je dois choisir le chapitre qui m'intéresse dans le livre : La clé. Je ne peux pas lire l'armoire entière (le fichier ini) mais au maximum un livre complet (une section). C'est bien ça ?
Si j'utilise Iniread, je me borne encore plus puisque je dois présélectionner ma clé. Corrigez moi si je me trompe. Ce qui est contenu dans ma variable $retour est en fait l'adresse de mon fichier ini ?

A quoi correspond chaque case et comment se structure une variable par défaut ? Dans mon cas j'ai un tableau à cause de la structure du fichier ini ?

Autre problème, je croyais que pour accéder à un fichier, il fallait au préalable l'avoir ouvert or ici, on peut inscrire et lire sans pour autant l'avoir ouvert que ce soit en lecture ou en écriture :shock: . La commande le fait toute seule ou j'ai mal saisi la gestion des fichiers ?


Pardon pour toutes mes questions mais je suis comme certains enfants de 5 ans, temps que j'ai un pourquoi à poser je le pose sinon je ne comprend pas. :|
Les cons osent tout ! C'est d'ailleurs à ça qu'on les reconnait ;)
Avatar du membre
Lems
Niveau 2
Niveau 2
Messages : 19
Enregistré le : mer. 13 févr. 2008 15:24
Status : Hors ligne

Re: [..] Selection ini

#6

Message par Lems »

Re bonjour,

Pour répondre à Tlem :
Tlem a écrit : En ce qui me concerne, je pense que l'utilisation d'un fichier XML, ou d'une base de donnée classique devrait être plus raisonnable.
C'est très certainement vrai mais je n'ai aucune idée de ce que peux être un fichier XML ou un fichier DB. Même si j'en ai un concept abstrait grâce aux liens que vous m'avez donnés, je ne connais pas leur structure. Connaitriez vous un livre basé sur le principe de "Autoit pour les nuls" à m'indiquer pour rattraper mon retard sur les notions de base ? J'aimerai comprendre les formats et structures de base tels que les txt les ini ou les XML.

Autre petite question, quel est le langage utilisé par autoit ? La question m'enterre dans mon statut de débutant mais vaut mieux toucher le fond pour remonter que se laisser couler lentement. La seule information que j'ai trouvée c'est "Un langage simple d'utilisation et adaptable" ...


Merci
Les cons osent tout ! C'est d'ailleurs à ça qu'on les reconnait ;)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Selection ini

#7

Message par Tlem »

Bonsoir Lems, je vais essayez de répondre à vos questions du mieux de mes connaissances.
Lems a écrit :Je ne vois jamais dans vos scriptes de définition de la dimension des variables et pourtant ça fonctionne ...
Il n'y à pas besoin de définir les variables (Du moins pas tout le temps).
La variable stocke la valeur qu'on lui donne sans avoir besoin de savoir si c'est une chaîne, un entier ou autre chose.

La convention, est de déclarer la variable en début de script en utilisant Dim, Global, Local ou enfin Const.
Vous pouvez vous passer des déclarations en début de script,
si vous n'utilisez pas ceci : AutoItSetOption("MustDeclareVars", 1)
si vous ne faite pas ceci : $i = $i + 1 ou
si vous ne n'utilisez pas un tableau.

Dim, Global, Local ont pratiquement la même fonction.
Mais lorsque vous déclarez une constante (Const) celle si ne peut changer en cour de script.
Lems a écrit :Par exemple si je veux obtenir une variable qui soit un entier, je peux la créer comment ???
Il vous faudra utiliser la fonction INT comme ceci :

Code : Tout sélectionner

$Res = Int($MyVar)
Vous aurez donc $Res égal à l'entier de la variable $MyVar.
Lems a écrit :Comment se structure une variable par défaut ?
Je ne comprend pas la question !

Lems a écrit :Autre problème, je croyais que pour accéder à un fichier, il fallait au préalable l'avoir ouvert or ici, on peut inscrire et lire sans pour autant l'avoir ouvert que ce soit en lecture ou en écriture :shock: . La commande le fait toute seule ou j'ai mal saisi la gestion des fichiers ?
Certaines fonctions, incluent dans leurs code la partie ouverture/fermeture du fichier, il n'est donc pas nécessaire de s'en occupé.


En ce qui concerne le livre "Autoit pour les nuls", il n'a pas encore été rédigé (Déjà il faudrais que la documentation soit traduite en Français, et là c'est du boulot ...
Il faut donc prendre son courage à deux mains, et parcourir les nombreux messages de ce forum et de l'ancien, ainsi que ceux du forum Anglais, en quête de l'information qui vous manque.
Lems a écrit :quel est le langage utilisé par autoit ?
La seule information que j'ai trouvée c'est "Un langage simple d'utilisation et adaptable" ...
AutoIt est développé à la base en C++, mais ce n'est pas réellement un langage de programmation, c'est au même titre que VBS un langage scripté.

Ce qu'il faut comprendre, lorsque l'on veut utiliser AutoIt, c'est que une partie des commandes utilisées sont des fonctions intégrée à l'interpréteur (AutoIt.exe), et que d'autre sont des fonctions externes appelées aussi 'Include'.

Un 'Include' est un bout de script (Tout comme les codes que vous voyez un peu partout sur le forum) qui contient une ou plusieurs fonctions, et qui peuvent être appelées à partir de votre script (Regarder ce qu'il y à dans les fichiers du dossier Include du programme AutoIt).

L'utilité d'une fonction, est d'utiliser un code déjà fait pour une action bien spécifique sans avoir besoin de ce retaper les 20 ou 100 lignes de code, à chaque fois que l'on à besoin d'effectuer cette action.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Lems
Niveau 2
Niveau 2
Messages : 19
Enregistré le : mer. 13 févr. 2008 15:24
Status : Hors ligne

Re: [..] Selection ini

#8

Message par Lems »

Merci beaucoup Tlem. Je pense avoir eu les réponse à mes questions. 8)
Les cons osent tout ! C'est d'ailleurs à ça qu'on les reconnait ;)
Répondre