Gambas France BETA


Pas de compte ? Incription

écriture sur fichier

1
AuteurMessages
brett#1 Posté le 7/11/2010 à 09:20:00
Bonjour à tous,

Je suis nouveau sur le forum.
Habitué à programmer en VB et débutant avec la Crevette bleue je pêche sur un problème certainement simple.
Il est important pour moi de progresser dans le libre.

Je n'arrive pas à transcrire la méthode d'écriture dans un fichier par VB en Gambas2.
Les instructions seek put n'éxistent à priori pas en Gambas....
Je précise que la doc "OPEN" de Gambas ne donne pas d'exemple concrêt de code pour écrire.


1
PUBLIC SUB Form_Open()DIM file AS FileDIM sLine AS Stringfile = OPEN "/home/utilisateur/Capture.txt" FOR CREATEfile = OPEN "/home/utilisateur/Capture.txt" FOR OUTPUT 'MaxSize = Eof(1) ' Lit la taille du fichier en octets. a = Lof(file)CLOSE fileEND SUB


Que me manque t 'il dans ce code pour écrire par exemple "salut" dans le fichier précité puis le fermer; la
variable "a" me sert juste à vérifier la taille du fichier créé ?
dois je utiliser un autre type de variable pour "file" ?

Comment faire ?
Merci à vous, ceci me fera gagner un temps précieux :bounce:
Prokopy#2 Posté le 7/11/2010 à 12:04:00
Kinder PinguiSalut et bienvenue brett,

Ouvrir un fichier en Gambas est très différent de le faire en VB.

Déjà, on crée la variable de type file. Ensuite, il faut utiliser l'instruction OPEN, mais qu'une seule fois, sinon ça fait ramer ton disque pour rien :

1
DIM fichier AS File fichier = OPEN User.Home &/ "fichier_test.txt" FOR WRITE CREATE


Il faut ici utiliser WRITE CREATE, étant donné que tu veux seulement écrire dans ton fichier. Ça te permet ici d'économiser un OPEN.

Ensuite, on utilise PRINT pour mettre notre ligne de texte dans le fichier.

1
PRINT #fichier, "Salut !"


En réalité, PRINT n'est pas là pour afficher une expression dans la console, mais pour l'afficher dans un flux. Ici, on lui a spécifié le fichier en paramètre, ce qui fait qu'il va aller écrire dedans. Par défaut, si il n'a pas de flux en paramètre, il prend la sortie standard, à savoir la console.

Ensuite, on ferme le flux avec CLOSE.
Voici le code résumé :

1
PUBLIC SUB Form_Open() DIM fichier AS File fichier = OPEN User.Home &/ "fichier_test.txt" FOR WRITE CREATE PRINT #fichier, "Vive Gambas!" CLOSE #fichier END


De plus, comme tu peux le constater, on n'utilise pas END SUB en Gambas (ça n'existe pas). On utilise END tout court.

Tu as regardé la doc, c'est bien (un bon réflexe), mais il existe d'autres endroits pour apprendre un peu Gambas quand tu ne trouves pas sur la doc. ;)

J'ai écrit ici un tuto qui apprend (vite fait) les bases du langage, il sera complété plus tard.
Il y a également un wiki fait par la communauté qui contient plein de tutos intéressants.

En espérant que ça t'aide. :)
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
brett#3 Posté le 7/11/2010 à 12:48:00
En effet des similitudes, Gambas n'est pas un clone de VB.

Ce genre d'aide m'apportera beaucoup, pour mes projets à venir.
Je suis loin d'être un pro, mais une fois que l'on commence à coder
on a envie d'avancer.

Merci Prokopy

En passant, le forum est esthétique,simple, réactif dans son utilisation, très bon travail.

@ bientôt :)
manu#4 Posté le 7/11/2010 à 18:51:00
Avec Gambas ca roule !Bonjour et bienvenue Brett,

Je crois que Prokopy à tout dit... une bonne recrue celui là ;) :)

Bon, c’était juste un petit bienvenu que je voulais te souhaiter... :)

Et amuses toi bien avec Gambas :)
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
brett#5 Posté le 7/11/2010 à 21:11:00
Ouais super... Merci Manu, en effet cet aide me permet de dialoguer avec une carte microcontrolée (68HC11 Motorola).
Je rapatrie les données qui correspondent à un capteur barométrique via Sport (port-série) dont le contenu historique de 10jours est écrit dans le fameux fichier :P
J'utilise open office ensuite qui m'interprète ce fichier et produit les courbes dont j'ai besoin.

voili-voilou je pense bien réaliser des tas de projets avec ce soft.

super :bounce:

@+
manu#6 Posté le 7/11/2010 à 21:21:00
Avec Gambas ca roule !Brett,

Ton projet m'interesse, peux tu m'en dire plus, que mesure tu et pourquoi. Comment recuperes tu les données ? As tu réaliser un soft du même genre sous VB ?
Sache aussi que tu peut faire des graphiques avec Gambas grâce au composant gb.chart, et que sur ce forum nous avons deux spécialistes en les personnes de Gambix, créateur de gb.chart et de prokopy qui travail sur une nouvelle mouture ! ;)
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
brett#7 Posté le 8/11/2010 à 10:50:00
Manu,

C'est un baromètre avec un capteur piezzo-résistif. La pression athmosphérique est numérisée par un microcontrôleur Motorola qui place toutes les heures un échantillon de mesure dans une mémoire EEPROM. L'interface dialogue par un port série sur la carte. Ce baromètre a été créé et programmé en 2000 par mes soins (j'y ai passé beaucoup de temps mais ceci m'a permis de comprendre les systèmes informatiques hard/soft rapidement par la pratique). (Les connaissances passées en électronique m'ont bien aidées pour la conception de ce prototype),

Sur le PC lorsque je lance la communication via le port-série le programme écris le caractère « = » ,quand le baromètre reçoit celui-ci il m'envoie les pressions sur 10 jours (256 échantillons de 8bits) en un paquet de données à la file. Il suffit de placer ce buffer dans un fichier texte pour l'interpréter et en faire des courbes par exemple.

Le programme en Gambas fonctionnel à présent remplace avantageusement celui qui était en .exe
auparavant.
Le port série est un peu ancien mais cela fonctionne bien pour cette petite application.
Pour le moment c'est un programme Python qui lance le .gambas puis le fichier OpenOffice
pour l'intégration.

La suite sera certainement comme tu me le conseille, l'inclusion des courbes directement dans le programme, mais là je sent que cela va être chaud car les courbes dont j'ai besoin sont un peu complexes. (dérivées,moyennes,tendances). beaucoup de temps en perspective.
Merci pour les bons conseils.
Tu sais tout à présent. :roll:
1