Précédent   Forum du club des développeurs et IT Pro > Autres langages > Autres langages > Basic
Basic Forum d'entraide sur la programmation en langage Basic
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 24/04/2009, 10h13   #1
gmcc34
Invité régulier
 
Inscription : avril 2009
Messages : 15
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 15
Points : 5
Points : 5
Par défaut [FBide] Recherche dans un carnet d'adresses

Bonjour à toutes & à tous,

1 - Je ne sais pas trop si je suis dans la bonne section mais apparemment, il n'y a point de section "Basic"

2 - J'explique le but de mon post, je commence à peine ce langage de programmation (Basic) avec un logiciel gratuit "FBide" & voici mon problème :

Je tente de créer un logiciel de carnet d'adresses pour m'entraîner donc tout va bien, je sais :

- Créer un contact dans un fichier
- Supprimer ce même fichier
- Afficher tout les contacts, mais pas les rechercher.

Je m'explique si je crée 500 contacts, je ne sais que les afficher TOUS, ce qui n'est pas tres pratique...

Ce que je cherche c'est une commande qui me permets en tapant le nom d'un contact, d'afficher sa fiche...

Voila, j'espere avoir été clair
Si ce n'est pas le cas, veuillez m'en excuser & n'hésitez pas a me poser des questions.

Merci.
gmcc34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2009, 10h31   #2
sisqo60
Membre Expert
 
Avatar de sisqo60
 
Homme
Consultant informatique
Inscription : février 2006
Messages : 731
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : février 2006
Messages : 731
Points : 1 150
Points : 1 150
salut

ici c'est le forum c#.
le forum basic est ici : http://www.developpez.net/forums/f50...angages/basic/ (EDIT: déplacé)

pour répondre à ta question, as-tu essayé de créer une base de données, et un schéma de base de données correspondant à ton applicatif ? ce sera largement plus rapide au niveau execution.

Mais pour rechercher tes contacts, il va te falloir charger tous tes fichiers en mémoire (ou analyser séquentiellement un par un tes fichiers) ensuite comparer avec ta recherche et l'afficher.

j'espère t'avoir un peu aidé ou orienté...
__________________
Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

N'oubliez pas de avant de
Pas de question techniques par MP, c'est contre la philosophie du forum
sisqo60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2009, 11h33   #3
gmcc34
Invité régulier
 
Inscription : avril 2009
Messages : 15
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 15
Points : 5
Points : 5
Merci d'avoir déplacé mon sujet & de la réponse rapide.

Alors en fait la base de données est crée, ce qui me manque en fait & que je ne trouve pas, c'est les lignes de commandes pour rechercher dans cette fameuse base

Merci.
gmcc34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2009, 12h34   #4
sisqo60
Membre Expert
 
Avatar de sisqo60
 
Homme
Consultant informatique
Inscription : février 2006
Messages : 731
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : février 2006
Messages : 731
Points : 1 150
Points : 1 150
là il va falloir faire des recherches sur le sql...
__________________
Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

N'oubliez pas de avant de
Pas de question techniques par MP, c'est contre la philosophie du forum
sisqo60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2009, 14h01   #5
gmcc34
Invité régulier
 
Inscription : avril 2009
Messages : 15
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 15
Points : 5
Points : 5
Ok, merci.

J'oriente donc mes recherches vers le Sql

Bon Week-End
gmcc34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2009, 17h02   #6
plegat
Expert Confirmé Sénior
 
Jean-Michel BORLOT
Fabricant et casseur d'avions
Inscription : avril 2004
Messages : 3 216
Détails du profil
Informations personnelles :
Nom : Jean-Michel BORLOT
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Fabricant et casseur d'avions
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2004
Messages : 3 216
Points : 5 379
Points : 5 379
Salut,

Citation:
Envoyé par gmcc34 Voir le message
J'oriente donc mes recherches vers le Sql
hopopopop, du calme...

A te lire, j'ai l'impression que tu ne sais pas trop ce que c'est que le sql, et que donc ta base de données ne doit pas être basée là-dessus... me trompe-je?

Le cas échéant, ce serait bien de nous expliquer à quoi elle ressemble... sinon, je n'ai rien dit!
__________________
"Errare humanum est, sed perseverare diabolicum"

Ma page sur DVP.com
plegat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2009, 19h29   #7
gmcc34
Invité régulier
 
Inscription : avril 2009
Messages : 15
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 15
Points : 5
Points : 5
Comme dis dans mon premier post, je débute vraiment en programmation, j'ai juste quelque base en informatique.

Je sais ce qu'est le sql, mais je ne le maîtrise pas

En fait mon fichier contient deux champ :

- le premier "Nom", uniquement du texte
- le deuxième "N° de téléphone", uniquement des chiffres.

Exemple :

"Toto" 06060606
"Tata" 06070707

Voila ca je sais faire.

Mon but étant de pouvoir en tapant : "Toto" n'afficher QUE les donnes de "Toto" soit "06060606".

Et ce qui me manque c'est "la commande" comme print/cls/input/etc...

Je tient à préciser que ce programme ne sert qu'à m'aider à comprendre le fonctionnement du langage BASIC & m'entraîner.

Merci.
gmcc34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2009, 20h40   #8
plegat
Expert Confirmé Sénior
 
Jean-Michel BORLOT
Fabricant et casseur d'avions
Inscription : avril 2004
Messages : 3 216
Détails du profil
Informations personnelles :
Nom : Jean-Michel BORLOT
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Fabricant et casseur d'avions
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2004
Messages : 3 216
Points : 5 379
Points : 5 379
Bon, au vu de ta réponse, je présume que tu n'utilises pas de base de données Sql donc. Quand tu parles de fichier, c'est un fichier texte, c'est ça? (essaye d'être précis dans tes réponses, au vu de toutes les technos possibles, ça élaguera les réponses adéquates )

Citation:
Envoyé par gmcc34 Voir le message
Et ce qui me manque c'est "la commande" comme print/cls/input/etc...
éh éh, ça, je crois que tu ne vas pas l'avoir cette commande magique. A moins que ta version de basic ne l'aie. D'ailleurs ça serait bien de savoir avec quoi tu travailles exactement.

Sinon, il va te falloir programmer ça toi-même. Donc un peu de réflexion, un petit algo, et ça devrait aller. Genre une petite boucle qui parcourt tous les éléments, et qui s'arrête dès qu'elle tombe sur le bon nom.
__________________
"Errare humanum est, sed perseverare diabolicum"

Ma page sur DVP.com
plegat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2009, 10h26   #9
gmcc34
Invité régulier
 
Inscription : avril 2009
Messages : 15
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 15
Points : 5
Points : 5
Citation:
Envoyé par plegat Voir le message
Bon, au vu de ta réponse, je présume que tu n'utilises pas de base de données Sql donc.
Citation:
Envoyé par gmcc34 Voir le message
Comme dis dans mon premier post, je débute vraiment en programmation, j'ai juste quelque base en informatique.

Je sais ce qu'est le sql, mais je ne le maîtrise pas
Non, non, je n'utilise pas de base de données Sql

Citation:
Envoyé par plegat Voir le message
Quand tu parles de fichier, c'est un fichier texte, c'est ça? (essaye d'être précis dans tes réponses, au vu de toutes les technos possibles, ça élaguera les réponses adéquates )
Oui, c'est un fichier ".txt", qui se présente ainsi :

TOTO 1223
TATA 4432

Citation:
Envoyé par plegat Voir le message
D'ailleurs ça serait bien de savoir avec quoi tu travailles exactement.
Citation:
Envoyé par gmcc34 Voir le message
2 - J'explique le but de mon post, je commence à peine ce langage de programmation (Basic) avec un logiciel gratuit "FBide"
Citation:
Envoyé par plegat Voir le message
Sinon, il va te falloir programmer ça toi-même. Donc un peu de réflexion, un petit algo, et ça devrait aller. Genre une petite boucle qui parcourt tous les éléments, et qui s'arrête dès qu'elle tombe sur le bon nom.
Parfait, merci beaucoup pour vos réponses, mais un algo, où même une boucle je ne maîtrise pas encore Sauriez vous ou trouver un tuto qui explique cette technique ?

P.s. :
Merci vraiment à vous de prendre le temps de me répondre aussi vite & aussi précisément.
gmcc34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2009, 18h21   #10
gmcc34
Invité régulier
 
Inscription : avril 2009
Messages : 15
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 15
Points : 5
Points : 5
Grosse avancée, TRES grosse avancée !!!

Alors, suite à vos posts qui m'ont été d'une aide précieuse, j'ai donc tenté de faire cet "algo", qui est -presque- une franche réussite.

Je m'explique : mon fichier (au format .txt) se présente donc toujours ainsi :

TOTO 123
TATA 456
TITI 789

J'ai donc réussi à faire ceci :
Code :
1
2
3
4
5
6
500 CLS : PRINT "RECHERCHE DE CONTACT"
510 INPUT "QUEL EST LE NOM "; NOM$
520 OPEN "CARNET.TXT" FOR INPUT AS #1
530 LINE INPUT #1, LIGNE$
540 IF NOM$=LIGNE$ THEN PRINT LIGNE$ : SLEEP
550 CLOSE #1 : GOTO 500
Ce qui me permets de taper le nom d'un contact & si ce contact est le premier de la ligne d'afficher son nom mais UNIQUEMENT le premier de la liste

Je me demande donc ou je pourrais bien placer la fonction (loop ? eof ?) qui me permettras de lire TOUT les contacts, pas uniquement le premier....

Voilà. Encore merci à vous tous pour vos précieux conseils.

P.s. : Excusez ma manière de programmer qui peut paraître mauvaise à vos yeux aguerris mais je ne "pratique" le BASIC que depuis 8 jours...
gmcc34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2009, 19h25   #11
plegat
Expert Confirmé Sénior
 
Jean-Michel BORLOT
Fabricant et casseur d'avions
Inscription : avril 2004
Messages : 3 216
Détails du profil
Informations personnelles :
Nom : Jean-Michel BORLOT
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Fabricant et casseur d'avions
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2004
Messages : 3 216
Points : 5 379
Points : 5 379
Citation:
Envoyé par gmcc34 Voir le message
Je me demande donc ou je pourrais bien placer la fonction (loop ? eof ?) qui me permettras de lire TOUT les contacts, pas uniquement le premier....
Il te faut repérer les lignes (de code) qui devront être répétées pour les autres lignes (du carnet d'adresse).
En l'occurence, les lignes 530 et 540 là. Il va donc falloir les mettre dans une boucle, sans doute une boucle while (je ne connais pas FreeBasic donc je te laisse faire le tour des possibilités). La condition d'arrêt sera donnée par eof, qui indiquera la fin du fichier.

En gros, ça devrait donner un truc du style:

Code :
1
2
3
4
5
 
Do While Eof(1) = 0
    LINE INPUT #1, LIGNE$
    IF NOM$=LIGNE$ THEN PRINT LIGNE$ : SLEEP
Loop
A tester bien évidemment, et ne pas hurler si ça ne fonctionne pas!

Si tu maitrises l'anglais, n'hésite pas à aller faire un tour sur les forums FreeBasic
__________________
"Errare humanum est, sed perseverare diabolicum"

Ma page sur DVP.com
plegat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2009, 08h11   #12
gmcc34
Invité régulier
 
Inscription : avril 2009
Messages : 15
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 15
Points : 5
Points : 5
Citation:
Envoyé par plegat Voir le message
Il te faut repérer les lignes (de code) qui devront être répétées pour les autres lignes (du carnet d'adresse).
En l'occurence, les lignes 530 et 540 là. Il va donc falloir les mettre dans une boucle, sans doute une boucle while (je ne connais pas FreeBasic donc je te laisse faire le tour des possibilités). La condition d'arrêt sera donnée par eof, qui indiquera la fin du fichier.

En gros, ça devrait donner un truc du style:

Code :
1
2
3
4
5
 
Do While Eof(1) = 0
    LINE INPUT #1, LIGNE$
    IF NOM$=LIGNE$ THEN PRINT LIGNE$ : SLEEP
Loop
Ok, je comprends merci beaucoup, je teste de suite

Citation:
Envoyé par plegat Voir le message
A tester bien évidemment, et ne pas hurler si ça ne fonctionne pas!
Quoi ??? Que dites vous ??? Cela risque de ne pas marcher ?!?!? Quelque chose réalisé sur votre temps libre & gratuit qui ne fonctionnerais pas ??? Tout simplement honteux !

P.s. : Je blague

Citation:
Envoyé par plegat Voir le message
Si tu maitrises l'anglais, n'hésite pas à aller faire un tour sur les forums FreeBasic
Merci pour le lien, je ne connaissais pas j'y fais un tour de suite & je revient pour hurler , euh non, pour vous tenir au courant des avancées.

A bientôt.
gmcc34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2009, 08h39   #13
gmcc34
Invité régulier
 
Inscription : avril 2009
Messages : 15
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 15
Points : 5
Points : 5
FINI !!!! YOUPI !!!! YEEEEAHHHH !!!!

Ok, je sais, je sais ce n'est pas grand chose mais bon ca fait plaisir

Alors voici la "solution" :

Code :
1
2
3
4
5
6
7
500 CLS : PRINT "RECHERCHE DE CONTACT"
510 INPUT "QUEL EST LE NOM "; NOM$
520 OPEN "CARNET.TXT" FOR INPUT AS #1
530 LINE INPUT #1, LIGNE$
540 IF NOM$=LIGNE$ GOTO 545 ELSE GOTO 530
545 PRINT LIGNE$ : SLEEP
550 CLOSE #1 : GOTO 500
C'est pô bô ca ??

Merci à toutes & à tous de votre aide si précieuse, du temps que vous avez passez à m'aider ainsi que de vos réponses clairs & précises même pour un débutant comme moi

P.s. : Si ce code vous semble "moche", n'hésitez pas à m'expliquer ce qui vous choque

Merci encore & bonne journée !!!
gmcc34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2009, 12h49   #14
plegat
Expert Confirmé Sénior
 
Jean-Michel BORLOT
Fabricant et casseur d'avions
Inscription : avril 2004
Messages : 3 216
Détails du profil
Informations personnelles :
Nom : Jean-Michel BORLOT
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Fabricant et casseur d'avions
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2004
Messages : 3 216
Points : 5 379
Points : 5 379
Citation:
Envoyé par gmcc34 Voir le message
P.s. : Si ce code vous semble "moche", n'hésitez pas à m'expliquer ce qui vous choque
Il n'est pas moche, c'est juste du basic!
Je taquine... mais c'est vrai que le basic "de base" fait écrire du code pas beau souvent...

Seul soucis avec ton code... que se passe-t-il si on rentre un nom qui n'est pas dans le carnet?
Disons que ça, c'est le niveau suivant quand tu programmes. Faire du code "robuste" comme on dit, c'est à dire qui ne déclenchera pas une erreur (et pour tester ça, il faut se changer en utilisateur de base qui ne connait rien au programme et va donc faire des bêtises!)

Mais bon, ça viendra au fur et à mesure, avec l'expérience. Commence déjà par maitriser les principales instructions du langage en faisant des petits programmes simples.
__________________
"Errare humanum est, sed perseverare diabolicum"

Ma page sur DVP.com
plegat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2009, 13h56   #15
gmcc34
Invité régulier
 
Inscription : avril 2009
Messages : 15
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 15
Points : 5
Points : 5
Citation:
Il n'est pas moche, c'est juste du basic!
Rooooh

Citation:
Seul soucis avec ton code... que se passe-t-il si on rentre un nom qui n'est pas dans le carnet?
J'ai testé & ça coince, donc je solutionne le problème par cet ligne de code :

Code :
IF je suis le seul à utiliser le programme, pas de problème ELSE tant pis
Non, je blague en tout cas, dès que l'amélioration sera faite, je le mets en ligne promis

Merci encore à vous tous !!!! & bonne journée.

Edit le 29/04/09 à 14h16 :

C'est mieux ? Même si ca reste du BASIC

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
500 CLS : PRINT "RECHERCHE DE CONTACT"
501 PRINT ""
502 PRINT "Pour revenir au menu taper 1"
503 PRINT ""
510 INPUT "QUEL EST LE NOM "; NOM$
511 PRINT ""
512 IF NOM$="1" GOTO 10
520 OPEN "CARNET.TXT" FOR INPUT AS #1
521 DO UNTIL EOF(1)
530 LINE INPUT #1, LIGNE$
540 IF NOM$=LIGNE$ GOTO 545
541 LOOP
545 PRINT LIGNE$ : SLEEP 2000
550 CLOSE #1 : GOTO 500
Maintenant plus de soucis
gmcc34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h54.


 
 
 
 
Partenaires

Hébergement Web