maramice
Messages postés9Date d'inscriptionmercredi 26 février 2003StatutMembreDernière intervention 3 octobre 2006
-
22 sept. 2006 à 18:47
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
13 oct. 2006 à 22:24
Bonjour,j'ai retrouvé un programme que j'avais écrit (il y à + de 25 ans) en Basic et qui me permettait de sauver ou de charger des banques de données Midi pour un synthé Yamaha Electone HS dont je me sert toujours.
Je dispose de VB 6 mais je n'ai jamais mordu dans cette application faute de temps.
Maintenant retraité, je voudrais transposer les instructions en VB6 .Le listing des instructions tient sur 9 pages mais je n'arrive même plus à comprendre ma propre programmation...!
Puis-je envisager d'avoir un coup de main pour transposer le listing.Je peux le scanner.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013129 22 sept. 2006 à 19:20
Arf, notre but n'est pas de faire de la traduction BASIC->VB, mais d'aider sur des problèmes de programmation (en vb donc).
Le mieux, essaye de voir avec les sources existantes comme le préconise mortalino, et si tu trouve rien, d'essayer de traduire le prog BASIC (la syntaxe est très proche du vb6 !), et de nous demander lorsque tu n'arrive pas à faire quelque chose.
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 22 sept. 2006 à 19:21
Salut
En fait, il n'y a pas beaucoup de différence entre les instructions Basica / QuickBasic / QBasic et VB6.
Seuls la structure des instructions et les règles changent et, bien sûr, la partie affichage DOS qu'il faudra remodeler, mais c'est assez simple.
Par contre, tu auras peut-être du mal à t'adresser au port Midi.
Il faudrait faire des recherches dans ce sens.
Si tu as des questions sur un bout de code (pas les neuf pages d'un coup), pose ton problème dans ce forum en étant le plus précis possible.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Dolphin Boy
Messages postés630Date d'inscriptionvendredi 5 mai 2006StatutMembreDernière intervention17 février 2007 22 sept. 2006 à 20:13
Salut,
jack > OK avec toi en ce qui concerne les instructions de base style For.. Next, If Then Else,... mais pour le reste.... c'est sacrément différent.
Par exemple, le Basica c'était du séquentiel avec les horribles Goto et Gosub. Le vb6 c'est du procédural et évènementiel. Rien à voir. Et je ne parle pas des fonctions prédéfinies en vb6 et inconnues des précédents langages du style Basic.
maramice > il n'est jamais impossible de traduire un programme d'un langage vers un autre, même agé de + de 25 ans. La seule différence est à l'exécution : plus lente ou plus rapide suivant le langage d'origine et le langage d'arrivée.
Sinon, comme les copains, si tu as un prob sur un bout de code, tu le postes et on te le traduit avec explications s'il y a lieu. A toi d'adapter aux autres bouts de codes similaires. Je crois que tu en apprendras beaucoup plus ainsi que si on te traduit tout ton code d'un seul coup.
PS : Un synthé qui fonctionne encore bien après plus de 25 ans ? c'est du super bon matos. Je retiens la marque.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 22 sept. 2006 à 20:25
Je confirme les dires de Dolphin Boy, c'est pas impossible à traduire. Mon embauche, il y a 6 ans de cela, consistait à traduire 5 logiciels qui tournaient sur une centrale HPBasic et datant des années 74/75, en VB6 sous Windows NT4. Et comme toi, je n'avais à l'époque que les listings, la centrale était en service chez le client.
Et c'est un formidable apprentissage, à l'époque je ne connais que très peu VB (mais maitrisait QBasic et QuickBasic), j'ignorais l'existance des sites CodeS-SourceS. Je n'avais que le msdn comme aide. 5 logiciels livrés 8 mois après, toujours en fonctionnement à ce jour.
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
maramice
Messages postés9Date d'inscriptionmercredi 26 février 2003StatutMembreDernière intervention 3 octobre 2006 22 sept. 2006 à 21:13
Merci à tous pour les encouragements....Il faut que je retrouve un bouquin de programmation en basic pour me remémorer les instructions que j'ai pourtant écrit. Foutu mémoire !
Ce programme tournait sur un ATARI en Dos bien sur.
Je risque de solliciter votre(vos) aides dès les premières instructions....
PS :Pour Dolphin Boy, C'est un Orgue synthé 2 claviers et pédalier Modèle HS8
de Yamaha acheté en 85...(donc 22 ans & non pas + de 25).et qui à fait l'objet d'un changement de microproc..pour 200 F à l'époque(98).
Dolphin Boy
Messages postés630Date d'inscriptionvendredi 5 mai 2006StatutMembreDernière intervention17 février 2007 22 sept. 2006 à 22:51
maramice > tu me rappelles mes débuts sur Z80, Apple IIe, Amstrad et Commodore (jamais touché à Atari mais ça ne doit pas être très différent). Que c'est loin tout ça, j'étais un tout chti gamin à cette époque.
Pour commencer, poste-nous une ou deux instructions (ou un groupe d'instructions) qui te semble(nt) difficile(s) à comprendre/traduire. Si on peut, on te rajoutera les commentaires et on te donnera la traduction en VB6.
PS : pour le synthé, 22 ou 25 ans, c'est quand même un super bon matériel et 200F pour un upgrade ce n'est pas cher. Je déplore seulement que la qualité se soit dégradée en terme de qualité/prix. Va trouver un synthé aujourd'hui qui va durer plus de 20 ans sans y mettre une fortune !
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201849 23 sept. 2006 à 16:17
salut,
maramice -> en tant que Membre Club, CS te fourni un espace de stockage pour des images (700ko) accessible ici-même (fenêtre de réponse) : icône "Insert Image From Gallery"
++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
maramice
Messages postés9Date d'inscriptionmercredi 26 février 2003StatutMembreDernière intervention 3 octobre 2006 24 sept. 2006 à 10:15
Merci PCPT
Donc, ci-dessous,listing des instructions d'une procédure(se limiter à la procèdure Sauvegarde) .
Le plus délicat pour moi sera de trouver les codes de VB6 pour ouvrir et fermer les ports MIDI reliés à mon synthé.
A+
maramice[8D]
Dolphin Boy
Messages postés630Date d'inscriptionvendredi 5 mai 2006StatutMembreDernière intervention17 février 2007 26 sept. 2006 à 19:53
Désolé pour le temps de réponse.
Donc, c'est du GFA-Basic pour ATARI.
N'ayant jamais programmé avec ce langage, j'ai cherché sur le net et n'ai trouvé que CE LIEN en anglais qui explique les fonctions du GFA-Basic.
Après analyse de ta procédure, personnellement, je peux tout traduire sauf le principal malheureusement : l'accès (lecture/écriture) à l'interface Midi (ton instruction Inp(3) qui interroge l'interface Midi). Je n'ai pas d'interface Midi pour tester.
Par contre, clique LA et peut-être trouveras-tu ton bonheur. Par exemple un code qui fait la même chose que le tien mais en VB.
maramice
Messages postés9Date d'inscriptionmercredi 26 février 2003StatutMembreDernière intervention 3 octobre 2006 26 sept. 2006 à 21:49
Merci DOL...je ne me souvenais même plus que c'était du GFA mais c'est exact.
Bon j'avance doucement, mon interface avec les boutons de commandes est prète .Il me reste à rentrer
le code pour le dump des données Midi et le chargement.
J'ai tous les codes de procédure du synthé mais il faut effectivement que je retrouve l'identique du GFA pour "pomper".
les données.
Je reprendrai contact mais je pense que le lien que tu m'as indiqué doit me faire avancer.
lcv1212
Messages postés18Date d'inscriptionmercredi 6 septembre 2006StatutMembreDernière intervention16 octobre 2006 11 oct. 2006 à 21:30
Bonjour
j'ai aussi de vieux listing que j'aimerais convertir en vb6 surtous un en particulier j'ai fais des essaies mais jusqu'a maintenant sans vraiment de succes.
C'est un programe qui ecrit et lis sur le port parallel (16 entrees et 16 sorties) j'utilise input32.dll avec vb6 j'ai fais quelques test de sorties ca va mais en entrer ca marche moin bien.
si quelqu'un peut m'aider a traduire mon ancien prog en Qbasic ca m'aiderais.
J'ai de la difuculter a traduire les Gosub et les return??
les boucle ca va for next if then else c'est ok mais en vb6 c'est quoi gosub et return??rnd aussi
Dolphin Boy
Messages postés630Date d'inscriptionvendredi 5 mai 2006StatutMembreDernière intervention17 février 2007 11 oct. 2006 à 22:25
En vb6, le gosub de Qbasic peut être traduit comme un appel à une procédure.
Crée une procédure :
Sub TaProcédure()
...
End Sub
et dedans, tu coupe/colle le code qu'il y a entre l'étiquette (adresse) d'entrée de ton gosub et le return correspondant dans cette procédure.
ensuite, à la place du gosub ... tu codes call TaProcédure().
Pour le rnd, vois la msdn (l"aide de vb6) tu verras que ce n'est pas si différent à la syntaxe près.
lcv1212
Messages postés18Date d'inscriptionmercredi 6 septembre 2006StatutMembreDernière intervention16 octobre 2006 13 oct. 2006 à 18:28
Bonjour tous le monde,
J'essais de traduire un programe en Qbasic vers VB6. et je ne comprend pas.
lorsque j'utilise la commande Call mon programe ce compile bien mais ne repond pas comme je le voudrais.
j'ai besoin d'utiliser la commande gosub et la commande return.
lorsque j'utilise c'est dernieres commande Gosub et return a la compilation du programe j'obtien un message d'erreure qui dit Label not Define.
le CALL sert à appeler une procédure ou une fonction
ici on fera juste Call Test()
pour le return, il y a une manière je crois.... mais je ne sais plus comment...
le but étant pour l'utilisation d'une fonction qui retourne une valeur.
maintenant (vb6) il suffit d'attribuer la valeur à ta fonction
Private Sub Form_Load()
MsgBox GetChaine
End Sub
'
Function GetChaine()
GetChaine = "blabla"
End Function
lcv1212
Messages postés18Date d'inscriptionmercredi 6 septembre 2006StatutMembreDernière intervention16 octobre 2006 13 oct. 2006 à 19:53
Merci PCPT
Si je comprend bien je ne peut utilise la commande goto pour faire un saut dans un autre sub.
la commande goto a effet seulement dans le meme sub. elle ne peut etre effecter a un autre sub??
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201849 13 oct. 2006 à 20:01
c'est bien çà.
les labels ou étiquettes sont des noms uniques dans les sub (procédures) ou functions (fonctions).
2 sub peuvent avoir un même nom d'étiquette, mais pas 2 mêmes noms dans la même sub.
on évite d'ailleurs ces sauts au maximum, essentiellement pour une question de lisibilité.
si ton but est d'appeler un procédure puis de continuer la suite du code, çà sera
(dans la procédure1)
blabla tes actions....
call MaProcedure2
blabla la suite
et si tu dois quitter la sub actuelle après avoir appelé MaProcedure2 (donc ne pas executer le suite du code, ce qui est plus que rare), tu ajouteras (après l'appel de la sub2) exit sub ou exit function (selon si tu es dans l'un ou l'autre)
donne moi un exemple un peu plus concret et j'essayerai d'adapter, c'est pas forcément évident comme çà....
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
lcv1212
Messages postés18Date d'inscriptionmercredi 6 septembre 2006StatutMembreDernière intervention16 octobre 2006 13 oct. 2006 à 20:31
Merci de ton aide PCPT
C'est ca je dois sortir 2 fois de mes sub. autrefois avec la commande return c'etais simple.
par exemple:
Sub lop
T=1
A=1
B=16
V=A
D=1
CALL CONTO
V=B
D=2
CALL CONTO
V=B
D=2
CALL CONTO
A=A*2:IF A=256 THEN A=1
B=B*2:IFB=256 THEN B=1
FOR C=1 TO 1000:NEXT C
CALL LOP
END SUB
SUB BIT16
FOR A= 0TO 255:B=255 - A
V=A:D=1
CALL CONTO
V=B:D=2
CALL CONTO
D=3:CALL CONTI
V1=V
D=4:CALL CONTI
V2=V
VA=(INT(V1/8)+(INT(V2/8)*16)
LABEL1.CAPTION=VA
LABEL2.CAPTION=A:T=T+1
FOR C=1 TO 500:NEXT C
D=5:CALL CONTI
V1=V
D=6:CALL CONTI
V2=V
VA=(INTV1/8)+(INT(V1/8*16))
LABEL3.CAPTION=VA
LABEL4.CAPTION=B:T=T+1
FOR C=1 TO500:NEXT C
NEXT A
CALL BIT 16
SUB CONTI
OUT 958,(D+8)
FOR C = T TO O STEP -1
OUT 958,(D)
FOR C = T TO 0 STEP -1
V= INP(957)
FOR C = T TO 0 STEP -1
OUT 958,(D+8)
FOR C = T TO 0 STEP -1 NEXT C
OUT 958,(D)
FOR C = T TO 0 STEP -1:NEX C
CALL LOP <==== CA C'EST UN DES PROBLS
CALL BIT16 <==== " " " "
END SUB
SUB CONTO
OUT 956,(V)
FOR C= T TO 0 STEP -1:NEXT C
OUT 958,(D+8)
FOR C .......
OUT 958,(D)
FOR C .......
OUT 958,(D+8)
FOR C = T TO ........
OUT 958,(8)
FOR C = T TO 0 STEP-1:NEXT C
CALL LOP
CALL BIT 16
C'est ca mon probleme je dois retourne plusieures fois dans lop et bit16 avec differente valeur de D