Transfert d'un progr écrit en Basic...en VB6

Signaler
Messages postés
9
Date d'inscription
mercredi 26 février 2003
Statut
Membre
Dernière intervention
3 octobre 2006
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
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.

Merci à tous.

 

maramice[8D]

25 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

pourquoi ne pas rechercher plutôt des sources déjà existantes sur ce site ?

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
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.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
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)
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

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.
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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 #
Messages postés
9
Date d'inscription
mercredi 26 février 2003
Statut
Membre
Dernière intervention
3 octobre 2006

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).

C'est du super bon.

maramice[8D]
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

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 !
Messages postés
9
Date d'inscription
mercredi 26 février 2003
Statut
Membre
Dernière intervention
3 octobre 2006

Suite à ta proposition Dolphin Boy ,j'ai scanné une procédure.comment la poster ? 
C'est un fichier Jpeg.

maramice[8D]
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
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
Messages postés
9
Date d'inscription
mercredi 26 février 2003
Statut
Membre
Dernière intervention
3 octobre 2006

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]
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

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.

Bonne prog
Messages postés
9
Date d'inscription
mercredi 26 février 2003
Statut
Membre
Dernière intervention
3 octobre 2006

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.

maramice[8D]
Messages postés
18
Date d'inscription
mercredi 6 septembre 2006
Statut
Membre
Dernière intervention
16 octobre 2006

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

Merci a l'avance

Sympa le site

lcv1212
[Insert_Emoticon%28%27/imgs2/smile_dissapprove.gif%27%29; ]
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

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.

Si je ne suis pas assez explicite, n'hésite pas. 
Messages postés
18
Date d'inscription
mercredi 6 septembre 2006
Statut
Membre
Dernière intervention
16 octobre 2006

Merci Dolphin Boy,
Alors par exemple

 sub XXXX
   
          Mon code

end sub
sub YYY

mon code
call xxxx
mon code
end sub
sub VXX
mon code

return xxxx
end sub

presentement j'ai essaye ca et j'ai pas beaucoup de succes

merci de ton aide

lcv1212
[Insert_Emoticon%28%27/imgs2/smile_dissapprove.gif%27%29; ]
Messages postés
18
Date d'inscription
mercredi 6 septembre 2006
Statut
Membre
Dernière intervention
16 octobre 2006

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. 

Notez que je n'utilise aucuns label dans ma form.

Merci de votre aide

lcv1212
[Insert_Emoticon%28%27/imgs2/smile_dissapprove.gif%27%29; ]
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
salut,
label c'est l'étiquette : le point ou aller (GOTO)

Sub Test()

    Dim i As Integer
    i =  5 '...
    
    GoTo MonLabel 'le GOTO "étiquette/label"
    
    i = 10 'ne
sera pas lu
    
MonLabel: 'rien...
    MsgBox i
End Sub

<small>Coloration
syntaxique automatique [AFCK] </small>
       

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

<small>Coloration
syntaxique automatique [AFCK]</small>
       

voilà, en principe tu devrais pouvoir adapter.

à noter que le GoSub n'existe plus.

++
PCPT  [AFCK]
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
Messages postés
18
Date d'inscription
mercredi 6 septembre 2006
Statut
Membre
Dernière intervention
16 octobre 2006

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??

sub blabla
code
gosub xxx

yyy:
code
gosub xxx2
code
end sub

sub blo
code
xxx:
code

lcv1212
[Insert_Emoticon%28%27/imgs2/smile_dissapprove.gif%27%29; ]
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
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
Messages postés
18
Date d'inscription
mercredi 6 septembre 2006
Statut
Membre
Dernière intervention
16 octobre 2006

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

Merci pour ton support

lcv1212
[Insert_Emoticon%28%27/imgs2/smile_dissapprove.gif%27%29; ]