DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 25 juil. 2004 à 12:10
Combien savent ici ce que reprèsente la décoration @X?
Pas grand monde a mon avis.
Pour faire ce que Arnotic n'a pas fait je vais vous le dire. Le @ est une decoration inscrite sur toutes les fonctons. Le 'X' represente le nombre de byte de la liste de parametres. Ca c'est le model des fonctions C de type __stdcall.
Parcequ'en plus pour les autres types de fonctions c'est encore pire que ca!
Ou est la facilité dans ce que tu proposes ?
Certes la constante peut servir par la suite, mais si le gars novice ne sait pas quoi faire du "@X" il se prendra plus la tete qu'autre chose a comprendre la syntaxe de décoration. Un simple extern "C" résoudra tout les problemes.
Et pour le (HINSTANCE) elle est ou l'astuce dans ce que t'as fait ?
Soit honnete avec toi meme. Dans ce genre de code si ce n'est pour faire plus pro, le CAST n'a rien a faire ici.
Cepandant ton code reste tout de meme un bon exemple.
Tout le monde n'a pas ton niveau, meme si je ne sais pas vraiment ce que tu vaut, mais essaye tant que possible de faire des codes simplifié au maximum tout en restant simple et compréhensible.
Ce ne sont pas des critiques de mauvaise fois que je te fais, mais de simple remarques concernant l'amelioration du code. Tu sais j'en ai tout autant que toi a apprendre dans le domaine de la programmation si ce n'est meme plus!
Comme je l'ai dis plus haut ton code reste un tres bon exemple malgré tout.
cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 2012 25 juil. 2004 à 10:22
Ce code a été validé pour Brunews avant post.
Les Goto si tu n'aimes pas ca ce n'est pas de ma faute.
Concernant les décorations je développe comme je le veux. Et si j'ai fais comme ce n'est pas pur hasard et en aucun cas ca complique le code si tu sais ce que les @X veulent dire.
Concernant la constante elle est déclarée et alors ? Ca complique en rien et si tu veux rajouter d'autres fonctions tu l'as déjà.
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 24 juil. 2004 à 23:39
T'aime bien avoir des lignes de codes inutiles ou t'as pas fait attention ?
1) Pourquoi déclarer hDLL de type HANDLE pour ensuite faire un cast avec un HINSTANCE ?
Déclare le directement en HINSTANCE.
2) Encore une chose inutile qui ne fait que compliquer le code.
Tu appelles la fonction avec la décoration crée par le compilo (_ChangeMyStruct@4). T'as juste a passé extern "C" a la fonction dans la DLL, au moins ca évite les problemes de décoration et sa rend le code plus compréhensible.
3) Tu créés une constante qui ne te sert qu'une seule fois(#define DLLTESTSTRUCT_API __declspec(dllexport))! Encore une ligne de plus qui ici est vraiment inutile!
4) Tu renvois tes condition avec des goto ce qui de la meme sorte t'obliges a ajouter des return pour terminer l'execution de la fonction. Tu peux tout simplement afficher tes MessageBox dans tes conditions.
Les goto rendent en plus le code moins lisible.
En gros heureusement qu'il n'y ait que quelques lignes de codes.
Tu as ajouter tout ce superflux pour paraitre plus pro ou tu as tout simplement fait ce code a l'arracher?
Comme le dis Brunews on est pas aux pièces.
Shell
cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 2012 20 juil. 2004 à 22:06
très intéressant. Moi je ne sais pas faire de DLL, c'est très Windosien. Alors jamais appris. MAis ca m'intéresse fortement. Où pourrais-je trouver des cours là dessus pour créer des DLL sous Visual C++ ???
Thx.
cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 2012 19 juil. 2004 à 22:31
Une personne dans le forum se demander comment on pouvait passer un strucutre dans une fonction (est particulièrement à une DLL) qui fait des choses à l'interiere de cette structure.
Mon exemple illustre donc le passage d'une structure grace à l'adresse mémoire de cette dernière c'est.
Certes ce n'est vraiment pas compliqué et c'est comme si tu travailler avec tous autres types.
Mais comme personne ne savait pas... un exemple vaut mieux que de long discours.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 19 juil. 2004 à 22:26
ah excuse moi, je croyais que tu avais fait une fonction
DLLTESTSTRUCT_API MyStruct __stdcall ChangeMyStruct() qui renvoie un structure
(DLLTESTSTRUCT_API m'a induit en erreur)
Mais dans ce cas je ne comprends pas vraiment l'interêt de ta source, enfin inutile de préciser que c'est avec une structure. Tout se passe comme si c'était n'importe qul type de variable.
Ou alors il y a un détail que je n'ai pas vu?
cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 2012 19 juil. 2004 à 22:22
Tu parles pour le déplacement avec pointeurs ?
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 19 juil. 2004 à 22:16
De toutes facons il était facile de se ramener à un cas connu en passant un pointeur de structure
25 juil. 2004 à 12:10
Pas grand monde a mon avis.
Pour faire ce que Arnotic n'a pas fait je vais vous le dire. Le @ est une decoration inscrite sur toutes les fonctons. Le 'X' represente le nombre de byte de la liste de parametres. Ca c'est le model des fonctions C de type __stdcall.
Parcequ'en plus pour les autres types de fonctions c'est encore pire que ca!
Ou est la facilité dans ce que tu proposes ?
Certes la constante peut servir par la suite, mais si le gars novice ne sait pas quoi faire du "@X" il se prendra plus la tete qu'autre chose a comprendre la syntaxe de décoration. Un simple extern "C" résoudra tout les problemes.
Et pour le (HINSTANCE) elle est ou l'astuce dans ce que t'as fait ?
Soit honnete avec toi meme. Dans ce genre de code si ce n'est pour faire plus pro, le CAST n'a rien a faire ici.
Cepandant ton code reste tout de meme un bon exemple.
Tout le monde n'a pas ton niveau, meme si je ne sais pas vraiment ce que tu vaut, mais essaye tant que possible de faire des codes simplifié au maximum tout en restant simple et compréhensible.
Ce ne sont pas des critiques de mauvaise fois que je te fais, mais de simple remarques concernant l'amelioration du code. Tu sais j'en ai tout autant que toi a apprendre dans le domaine de la programmation si ce n'est meme plus!
Comme je l'ai dis plus haut ton code reste un tres bon exemple malgré tout.
A++ et bonne continuation Arnaud.
Samir
PS: BruNews est ton approbateur de code ? :p
25 juil. 2004 à 12:04
25 juil. 2004 à 10:22
Les Goto si tu n'aimes pas ca ce n'est pas de ma faute.
Concernant les décorations je développe comme je le veux. Et si j'ai fais comme ce n'est pas pur hasard et en aucun cas ca complique le code si tu sais ce que les @X veulent dire.
Concernant la constante elle est déclarée et alors ? Ca complique en rien et si tu veux rajouter d'autres fonctions tu l'as déjà.
24 juil. 2004 à 23:39
1) Pourquoi déclarer hDLL de type HANDLE pour ensuite faire un cast avec un HINSTANCE ?
Déclare le directement en HINSTANCE.
2) Encore une chose inutile qui ne fait que compliquer le code.
Tu appelles la fonction avec la décoration crée par le compilo (_ChangeMyStruct@4). T'as juste a passé extern "C" a la fonction dans la DLL, au moins ca évite les problemes de décoration et sa rend le code plus compréhensible.
3) Tu créés une constante qui ne te sert qu'une seule fois(#define DLLTESTSTRUCT_API __declspec(dllexport))! Encore une ligne de plus qui ici est vraiment inutile!
4) Tu renvois tes condition avec des goto ce qui de la meme sorte t'obliges a ajouter des return pour terminer l'execution de la fonction. Tu peux tout simplement afficher tes MessageBox dans tes conditions.
Les goto rendent en plus le code moins lisible.
En gros heureusement qu'il n'y ait que quelques lignes de codes.
Tu as ajouter tout ce superflux pour paraitre plus pro ou tu as tout simplement fait ce code a l'arracher?
Comme le dis Brunews on est pas aux pièces.
Shell
20 juil. 2004 à 22:06
http://brunews.free.fr/brunews/download/JR4.zip
http://brunews.free.fr/brunews/download/CP5Sources.zip
http://brunews.free.fr/brunews/download/JR4Sources.zip
Et bien sur MSDN (http://msdn.microsoft.com)
20 juil. 2004 à 20:42
Thx.
19 juil. 2004 à 22:31
Mon exemple illustre donc le passage d'une structure grace à l'adresse mémoire de cette dernière c'est.
Certes ce n'est vraiment pas compliqué et c'est comme si tu travailler avec tous autres types.
Mais comme personne ne savait pas... un exemple vaut mieux que de long discours.
19 juil. 2004 à 22:26
DLLTESTSTRUCT_API MyStruct __stdcall ChangeMyStruct() qui renvoie un structure
(DLLTESTSTRUCT_API m'a induit en erreur)
Mais dans ce cas je ne comprends pas vraiment l'interêt de ta source, enfin inutile de préciser que c'est avec une structure. Tout se passe comme si c'était n'importe qul type de variable.
Ou alors il y a un détail que je n'ai pas vu?
19 juil. 2004 à 22:22
19 juil. 2004 à 22:16