taz>

En fin de compte ça fait une semaine que j'essai a peu pres tout ce que je trouveDans VB tu vas sûrement devoir faire une série de copies à base de "faux" pokes :/
@DJESDjes a écrit :Oulà, tu as raison, je me mélange les pinceaux! Je corrige mes posts
Code : Tout sélectionner
Dim a$(10)
a$(0) = "Kcc 0"
Debug @a$()
Debug @a$(0)
Debug ""
Debug PeekL(@a$())
Debug PeekL(@a$(0))
Oui oui, et je lui avait deja expliqué tout ça.TazNormand a écrit :Pourquoi tu veux absolument passer par la mémoire pour échanger entre VB et PB ???
Il me semble que Dobro t'avais conseillé de passer par un/des fichier(s), ce qui me paraît aussi beaucoup plus simple.
Peux-tu me dire :
1° Quelles type de données doivent être échangées entre les 2 "basics" ?
2° En gros ce que fait le prog VB et que fait le prog PB ?
3° Pourquoi tu as exclu d'emblée le fichier "d'échange" ?
J'ai cru comprendre le côté "sensible" de tes développements, mais parfois, rien ne sert de réinventer la roue, ou de se prendre le chou inutilement
Code : Tout sélectionner
;--- Compilation en ASCII et en 32 bits, pas en Unicode ni en 64 bits
Dim a.s(3) ;Allocation mémoire 100-112
a.s(0) = "KCC1" ;Allocation mémoire 200-204, pokel(100, 200), pokes(200, 'KCC1')
a.s(1) = "KCC2" ;Allocation mémoire 300-304, pokel(104, 300), pokes(300, 'KCC2')
a.s(2) = "KCC3" ;Allocation mémoire 400-404, pokel(108, 400), pokes(400, 'KCC3')
a.s(3) = "KCC4" ;Allocation mémoire 600-604, pokel(112, 600), pokes(600, 'KCC4')
Debug @a() ;Résultat = 100
Debug a() ;Résultat = 100; PB renvoie l'adresse du tableau (et non pas l'adresse du premier élément du tableau de chaînes)si on ne spécifie pas d'élément
Debug @a(0) ;Résultat = 200 ; PB renvoie l'adresse de l'élément 0
Debug PeekL(@a()) ;Résultat = 200 ; PB renvoie le contenu de l'adresse 100
Debug PeekL(a()) ;Résultat = 200 ; PB renvoie le contenu de l'adresse 100
Debug PeekB(@a(0)) ;Résultat = 75 ; PB renvoie le contenu de l'adresse 200, soit le code ASCII de 'K'
Debug PeekL(@a(0)) ;Résultat = 826491723 ; soit le long trouvé à l'adresse 200, correspondant aux codes ASCII 'KCC1' à la suite
Debug PeekS(@a(0)) ;Résultat = 'KCC1' ; c'est mieux comme ça ;)
Code : Tout sélectionner
Mémoire
Adresse Contenu
100 200
104 300
108 400
112 600
(..)
200 'K'
201 'C'
202 'C
203 '1'
204 0
(..)
300 'K'
301 'C'
302 'C
303 '2'
304 0
(...)
400 'K'
401 'C'
402 'C
403 '3'
404 0
(...)
600 'K'
601 'C'
602 'C
603 '4'
604 0
(...)
J'ai du mal a comprendre comment ca peut etre le meme resultat, sans que ce soit la meme demandeDebug @a(0) ;Résultat = 200 ; PB renvoie l'adresse de l'élément 0
Debug PeekL(@a()) ;Résultat = 200 ; PB renvoie le contenu de l'adresse 100
Code : Tout sélectionner
Dim a.s(10)
a(0) = "Kcc 0"
Debug @a(0)
Debug PeekL(@a())
Quand tu comprends l'utilisation des pointeurs en C tu connais déjà 90% du CKwai chang caine a écrit :...Pour comprendre les finesse du C, faut connaitre un peu l'ASM...
Code : Tout sélectionner
; Tableau de structure string
Dim a.String(9)
; Tableau de string
Dim b.s(10)
kcc$="Kcc "
For i = 0 To 9
a(i)\s = kcc$+Str(i)
b(i) = kcc$+Str(i)
Next i
OpenConsole()
PrintN("Adresse de kcc$ : $00"+Hex(@kcc$))
PrintN("")
PrintN("Adresse de a() : $00"+Hex(@a()))
For i = 0 To 9
PrintN("---Adresse de a("+Str(i)+") : $00"+Hex(@a(i))+" - PeekS(PeekL($00"+Hex(@a(i))+")) = "+PeekS(PeekL(@a(i))))
Next i
PrintN("")
PrintN("Adresse de b() : $00"+Hex(@b()))
PrintN("Valeur adr @b() ($00"+Hex(@b())+") = $00"+Hex(PeekL(@b()))+" soit PeekL(@b())")
For i = 0 To 9
PrintN("---Adresse de b("+Str(i)+") : $00"+Hex(@b(i))+" - PeekS($00"+Hex(@b(i))+") = "+PeekS(@b(i)))
Next i
Input()
CloseConsole()
justement si, c'est sur le tableau simple "b" que l'on est pas obligé de passer par un PeekLKwai chang caine a écrit :...Mais en utilisant les structures, on est pas obligé de passer par PeekL pour avoir la valeur de la variables ???![]()
Direct "PeekS(@a(1))"...
Code : Tout sélectionner
PrintN(PeekS(PeekL(@b())))
Code : Tout sélectionner
PrintN(PeekS(PeekL(@b(0))))
Code : Tout sélectionner
PrintN(PeekS(PeekL(@b()+SizeOf(string))))