taz>
LES TABLEAUX :-(
Re: LES TABLEAUX :-(
Dans VB tu vas sûrement devoir faire une série de copies à base de "faux" pokes :/
taz>
je suis sûr que kcc range ses slips tout seul! sinon lui dire dans l'armoire, ça peut signifier aussi "dans le premier tiroir", donc @a(0) <=> @a() pour peu qu'il ne s'agisse pas d'un tableau de chaînes
taz>
- Kwai chang caine
- Messages : 6992
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: LES TABLEAUX :-(
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 :/
Mais on a vite fait le tour RtlMoveMemory, lstrcpy, lstrlen et voila toute la puissance de VB en trois mots
Poke et PEEK n'existe pas, et les seuls faux poke et peek que j'ai trouvé etaient a base de RtlMoveMemory.
J'ose meme pas demander sur un forum VB, j'vais encore me faire jeter, a cause de PB
Et meme "gougle" il retourne rien d'autre que ces 3 fonctions
Alors j'en ai tellement marre que je me suis dit je vais faire "queque" chose qui veut pas FRED
Puisque j'ai ma DLL, je vais mapper la fonction PEEKS de FRED...
Et ben hihihi !!!! j'y arrive paaaaaaaaas hihihi !!!! depuis 4 heures que j'essaye, ne vous trompez pas..c'est pas drole...c'est les nerfs
A cause je pense cette fois du BSTR
- TazNormand
- Messages : 1297
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Re: LES TABLEAUX :-(
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
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
- Kwai chang caine
- Messages : 6992
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: LES TABLEAUX :-(
@DJESDjes a écrit :Oulà, tu as raison, je me mélange les pinceaux! Je corrige mes posts
Bah en fait j'ai presque tout compris sauf cette histoire de @a(0) et @a()
FLAITH m'a expliqué que en structure @a(0) = @a() et que c'etait normal...bon admettons
Mais quand le tableau est "Normal" @a(0) est different de @a() comme je te l'ai montré sur le code d'avant.
Quand on fait un PeekL(@a()) ou s'apperçois qu'il est egal à @a(0)
C'est un truc de dingue
Code : Tout sélectionner
Dim a$(10)
a$(0) = "Kcc 0"
Debug @a$()
Debug @a$(0)
Debug ""
Debug PeekL(@a$())
Debug PeekL(@a$(0))Mais personne il aime dessiner et me poser les PEEKL dans mon dessin a moi, puisse que tu m'as dit qu'il etait juste pour les @A(x)
Ou lisent ces PEEK et PEEK et colegrammes

- Kwai chang caine
- Messages : 6992
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: LES TABLEAUX :-(
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
Donc je vais le refaire rien que pour toi que j'aime bien
ATTENTION !! comme je l'ai deja expliqué X fois....je vais faire court
3° Pourquoi tu as exclu d'emblée le fichier "d'échange" ?
1/ Pour les fichiers a mon boulot on a l'UAC a fond, et je ne suis jamais sur de pouvoir creer un fichier meme ou est le programme principal, car il faut que je demande l'autorisation pour l'instal
2/ En plus j'aime pas les fichiers pour ce genre d'utilisation
En fait passer une variable, c'est assez simple, alors j'ai du mal a comprendre que ce soit si "impossible" pour un tableau qui est X variable, ni plus ni moins
3/ Et troisieme raison, ce ne sont pas des fichiers que je passe mais des variables donc je trouve pas ça vraiment approprié, plus un peu du domaine de la bidouille, que de la vraie prog
DJES m'a donné un lien sur les filemapping, mais encore la c'est plutot pour les fichiers
Quand aux PIPES..apparement c'est plus pour les données pas trop longues.
Y'a encore la mémoire partagée, je crois
Et je crois aussi que les MUTEX, dont je connais que le nom, ont un raport avec ça aussi
1° Quelles type de données doivent être échangées entre les 2 "basics" ?
Comme je te l'ai dit.. "juste" un tableau de string "tout bete".
Mais comme le dit le soldat...la gestion de ces "choses" n'est pas de tout repos
Remarque c'est un bon exercice pour la gestion des memoires et tout le toutim
2° En gros ce que fait le prog VB et que fait le prog PB ?
C'est aussi "tout simple"...ça fait un mois que je le dit
1/ j'ai un tableau dans VB, je veux pouvoir, le modifier, l'agrandir, le retrecir dans la DLL et le retourner a VB.
Et ceci autant de fois que je le desire, come si il etait dans VB tout le temps quoi
2/ Ou bien mais si j'arrive a faire la une, la 2/ pourra se faire aussi.
J'ai rien dans VB, je demande "la liste des slips a KCC" (Pour reprendre un exemple que j'ai bien compris
Voila, j'ai au moins 10 codes differents, passage par bloc memoire, par pointeurs, par prototype, retour aussi par X methodes, les callbacks avec IDLE, et meme l'ASM avec XOMBIE
Je les remercie tous au passage
MAis y'a toujours un "MIASME" qui fait que j'echange mes larmes de bonheur du debut par celles de la tristesse quand je me rend compte que je suis dans un cul de sac
Encore hier, je suis arrivé a faire ce que je voulais ...mais avec cette satané RTLMOVEMEMORY, car il n'y a qu'elle avec VB pour lire dans la memoire,
1/ j'envoie bien le tableau par pointeur, grace au code de SROD je lis le tableau VB avec la structure *strptr.INTEGER (Ca ça marche
2/ Je copie le tableau dans la DLL comme ça, j'abandonne le tableau VB
3/ Je modifie le tableau DLL, comme si de rien etait, redim, dim et ce qui s'en suit ...
4/ Et c'est le retour le probleme...si je renvoie l'adresse du tableau de la DLL
Quand je fais un rtlmovememory, ce cake il enleve les pointeurs du tableau de la DLL pour les mettre dans le nouveau tableau de retour dans VB.
ET quand je veux reenvoyer un second tableau...la DLL est perdue car les pointeur de son tableau de transfert ont été déplacé la fois d'avant
Et la ...j'ai soit des hieroglyphes...soit un plantage et fermeture du RAD de VB
Re: LES TABLEAUX :-(
Je ne sais pas si ça te parler plus comme ça... :/
On imagine que l'allocation mémoire a pu se faire à des adresses fixes (100, etc.)
On imagine que l'allocation mémoire a pu se faire à des adresses fixes (100, etc.)
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
(...)
- Kwai chang caine
- Messages : 6992
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: LES TABLEAUX :-(
Merci mille fois DJES de ta patience.
Parfois j'ose meme plus dire su j'ai compris ou pas parce que j'ai peur pour la santé mentale de celui qui se tue a m'expliquer
Bon alors, j'ai relu ton POST au moins 10 fois plus qu'un billet de loto si j'avais eu les 7 numeros
Mais alors c'est pas facile pour moi, mais pas du tout
En fin de compte je crois que ça coince au niveau de ces deux lignes
J'ai donc modifié mon dessin...parce que dans la tete de KCC, y'a pas comme dans les votres des racines carrés, des #{@, des 3241354451313131....y'a des dessins
C'est peut etre pour ça que je comprend pas les math.....faudrais me perler en JPG ou BMP
Alors dis moi si j'approche :

Parfois j'ose meme plus dire su j'ai compris ou pas parce que j'ai peur pour la santé mentale de celui qui se tue a m'expliquer
Bon alors, j'ai relu ton POST au moins 10 fois plus qu'un billet de loto si j'avais eu les 7 numeros
Mais alors c'est pas facile pour moi, mais pas du tout
En fin de compte je crois que ça coince au niveau de ces deux lignes
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
J'ai donc modifié mon dessin...parce que dans la tete de KCC, y'a pas comme dans les votres des racines carrés, des #{@, des 3241354451313131....y'a des dessins
C'est peut etre pour ça que je comprend pas les math.....faudrais me perler en JPG ou BMP
Alors dis moi si j'approche :

Re: LES TABLEAUX :-(
Oui, ça me semble bon. Je ne vois pas ce que tu ne comprends pas, c'est tout simplement deux façons d'avoir l'information. Et il y en a d'autres.
En fait, je crois qu'il te manque quelques petites bases toutes bêtes. Tu as déjà vu un source PB transformé en assembleur?
En fait, je crois qu'il te manque quelques petites bases toutes bêtes. Tu as déjà vu un source PB transformé en assembleur?
- Kwai chang caine
- Messages : 6992
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: LES TABLEAUX :-(
Oulala !!!!!
J'ai deja mis trois jour pour oser vous deranger dans la rubrique ASM
L'assembleur c'est comme ma femme j'l'adore..mais j'la comprend pas du tout
Mon copain programmeur que j'ai croisé a paris, m'a dit la meme chose.
Pour comprendre les finesse du C, faut connaitre un peu l'ASM
Mais KCC il en est meme pas a la premiere lettre de l'alphabet en 4 ans
Alors le C......
Y'a rien a faire, j'ai avaler 10 boulettes de pain, mais l'arrette elle est toujours resté coincée
J'en reviens toujours pas que ca donne les memes resultats
Mais je desespere pas....parce que des fois ça fait tilt....en cherchant sur autre chose.
J'ai une bonne nouvelle pour moi, et peut etre pour vous, par l'autruchement parce que j'arretterais peut etre de vous casser les tchaicowskis.
Je crois que j'ai trouvé une methode plus courte....avec RTLMOVEMEMORY
Ca a l'air de marcher, mais j'me mefie, car y'a un mois, mon code que j'utilisais de partout, je croyais deja que ça marchait.....et padaboum
Je vais continuer les essais
J'ai deja mis trois jour pour oser vous deranger dans la rubrique ASM
L'assembleur c'est comme ma femme j'l'adore..mais j'la comprend pas du tout
Mon copain programmeur que j'ai croisé a paris, m'a dit la meme chose.
Pour comprendre les finesse du C, faut connaitre un peu l'ASM
Mais KCC il en est meme pas a la premiere lettre de l'alphabet en 4 ans
Alors le C......
Y'a rien a faire, j'ai avaler 10 boulettes de pain, mais l'arrette elle est toujours resté coincée
J'en reviens toujours pas que ca donne les memes resultats
Code : Tout sélectionner
Dim a.s(10)
a(0) = "Kcc 0"
Debug @a(0)
Debug PeekL(@a()) J'ai une bonne nouvelle pour moi, et peut etre pour vous, par l'autruchement parce que j'arretterais peut etre de vous casser les tchaicowskis.
Je crois que j'ai trouvé une methode plus courte....avec RTLMOVEMEMORY
Ca a l'air de marcher, mais j'me mefie, car y'a un mois, mon code que j'utilisais de partout, je croyais deja que ça marchait.....et padaboum
Je vais continuer les essais
- Kwai chang caine
- Messages : 6992
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: LES TABLEAUX :-(
Est ce que un de vous a VB et se sentirait de verifier si je fou pas le wai dans mes memoires ???
Et si je peux compter sur ce code pour appliquer tous mees programmes dessus.
Car je crois que j'ai enfin trouvé un truc qui me va
Tout est la :
http://www.purebasic.fr/french/viewtopi ... 01#p104301
Car apparement ça a l'air de marcher..et quand ça marche ..c'est pas normal pour KCC
Et si je peux compter sur ce code pour appliquer tous mees programmes dessus.
Car je crois que j'ai enfin trouvé un truc qui me va
Tout est la :
http://www.purebasic.fr/french/viewtopi ... 01#p104301
Car apparement ça a l'air de marcher..et quand ça marche ..c'est pas normal pour KCC
Dernière modification par Kwai chang caine le mer. 07/oct./2009 16:46, modifié 1 fois.
Re: LES TABLEAUX :-(
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...
- Kwai chang caine
- Messages : 6992
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: LES TABLEAUX :-(
Bon ça me rassure.....parce que je voulais deja passer par le C...
Car c'est pas de tres evident de mettre son slip apres son pantalon
Car c'est pas de tres evident de mettre son slip apres son pantalon
Re: LES TABLEAUX :-(
Un petit code qui va te montrer la différence entre tableau "simple" et tableau de structures

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()- Kwai chang caine
- Messages : 6992
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: LES TABLEAUX :-(
Ouahhhh dis donc !!!
Merci beaucoup de cet exemple FLAITH
Je sais pas si j'ai compris quelque chose..ou plutot si j'ai compris ce qu'il fallait
Mais en utilisant les structures, on est pas obligé de passer par PeekL pour avoir la valeur de la variables ???
Direct "PeekS(@a(1))"
Si c'est ça c'est super cool
Apparement VB gere ses variables comme ça, puisque l'entrée des pointeurs dans ma procedure se fait par *StrPtr.INTEGER.
Ou alors j'ai encore dit une grosse connerie
Merci beaucoup de cet exemple FLAITH
Je sais pas si j'ai compris quelque chose..ou plutot si j'ai compris ce qu'il fallait
Mais en utilisant les structures, on est pas obligé de passer par PeekL pour avoir la valeur de la variables ???
Direct "PeekS(@a(1))"
Si c'est ça c'est super cool
Apparement VB gere ses variables comme ça, puisque l'entrée des pointeurs dans ma procedure se fait par *StrPtr.INTEGER.
Ou alors j'ai encore dit une grosse connerie
Re: LES TABLEAUX :-(
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))"...
Par contre, c'est fort, essaye de faire
Code : Tout sélectionner
PrintN(PeekS(PeekL(@b())))essaye donc
Code : Tout sélectionner
PrintN(PeekS(PeekL(@b(0))))pour avoir la valeur suivante de ton tableau "simple" il faudra donc faire :
Code : Tout sélectionner
PrintN(PeekS(PeekL(@b()+SizeOf(string))))