Sizeof(struct x) et AnsiString [Borland] - C++ - Programmation
Marsh Posté le 04-12-2003 à 23:47:30
oulla tu est trop technique pour moi la, tu peux développer si tu un peu de temps ???
Marsh Posté le 04-12-2003 à 23:49:32
ben des fonctions membres pour générer une représentation binaire (sous forme de char[]) de ton instance et une autre pour faire le processus inverse. pour que ton serveur s'y retrouve dans ses trains de bits, il te faut aussi définir un protocole
Marsh Posté le 04-12-2003 à 23:57:34
moi je pensais a un truc comme ca sinon, c'est pas possible?
Code :
|
t'en pense quoi, si je fait ca pour chaque chaine, sachant que ta solution me parait un peu plus complexe et que mon binome va encore me faire chier parceque faut encore changer quelquechose(sachant que c'est pas lui qui code le soir jusque 1h du mat )
Marsh Posté le 05-12-2003 à 00:01:44
ben oui, c'est ce genre de chose, mais faut beauciup, beaucoup peaufiner. et au lieu d'int, utilise des unsigned. pas la peine de buffer intermédiaire pour l'envoi à priori
Marsh Posté le 05-12-2003 à 00:03:32
oki merci beaucoup je vais creuser de ce coté, en éspérant de pas oublier d'aller dormir, deja que jai oublié de bouffer pff jsuis trop mauvais en code mais je nerdize deja
Marsh Posté le 06-12-2003 à 21:49:04
Tu envoie que 4 bytes parce que ta struct ne fais que 4 bytes. En fait l'int plus les AnsiString font en tous 12 octets mais il doit avoir envie d'envoie que 4 octets pour une autres raison. En tous cas si tu veux qu'il envoie tous il suffit que tu lui donne la taille exacte de la struct en mémoire à savoir :
Code :
|
Ensuite pour recupérer ca tu ne peux pas utiliser un char ù sinon tu ne pourra pas l'avoir en structure et recuperer tes informations correctement. Donc tu fais :
Code :
|
Je pense que ca dois donner ca en partant du bout de code que tu as donné.
Tu peux continuer à utiliser les AnsiString ton problème viens tu fais que ton server ne sais pas du tous combien d'octets y'a dans les Strings vu qu'il ne les connais pas. Donc il faut bien que tu envoie d'abord la taille de ta structure comme je l'ai fait plus haut et ensuite tu envoie t'as structure avec la bonne taille.
Voila en esperant que tu comprendra ca que je veux dire. Sinon je reste dispo sur MSN
A+, Mikael
Marsh Posté le 06-12-2003 à 22:20:00
je connais pas les prototype, mais je doute que les cast soient nécessaires
par contre ça
(struct message *) buffer
vous m'appelez le jour où ça marche
Marsh Posté le 06-12-2003 à 22:22:22
oups Socket->ReceiveBuf((struct message *) &buffer, length);
les cast sont pas forcement necessaire mais c'est toujours mieux quand on les met...
Marsh Posté le 06-12-2003 à 22:24:51
Shinjuku83 a écrit : les cast sont pas forcement necessaire mais c'est toujours mieux quand on les met... |
ta gueule
Marsh Posté le 06-12-2003 à 22:26:19
struct message buf;
struct message *buffer;
buffer = &buf;
Socket->ReceiveBuf((struct message *) buffer, length);
Allo Taz ? je crois que (struct message *) buffer ca marche
Marsh Posté le 06-12-2003 à 22:27:19
ReplyMarsh Posté le 06-12-2003 à 22:28:00
ta gueule
comme si &buf pouvait être autre chose qu'un struct message *
ta gueule
Marsh Posté le 06-12-2003 à 22:29:47
lol tu me fais bien marrer toi allez ferme la un peu toi aussi tu fais un peu gamin je trouve...
Marsh Posté le 06-12-2003 à 22:49:52
Code :
|
faut aller jusqu'au bout de vos conneries les mecs
des cahuètes pour ce lui qui me fait la version C++
Marsh Posté le 06-12-2003 à 22:56:32
c'est vrai qu'il faut de tous pour faire un monde.... meme des tres con des fois.
Bon d'une part tu aimes pas les casts c'est ton droit mais moi j'ai appris dans mon ecole qu'il faut en mettre la ou c'est necessaire alors si je veux en mettre la ou je veux j'en met et puis c'ets tous c'est pas obliger de venir me taper sur le systeme comme un gros boulet. Bon c'est vrai que t'en ai un et que ta mere t'as border un peu trop pres du mur, mais bon faut pas non plus faire chier le monde a cause de ca maintenant, y'a des cordes pour ce genre de probleme ou meme la noyade.
Je t'ai rien fait et rien dit sur ta facon de coder alors tu me lache et tu retourne jouer au lego !
Marsh Posté le 06-12-2003 à 23:03:41
j'en ai vraiment ma claque de ce forum. surtout que les cat C et C++ sont vides. Ça me gave de recommencer les présentations et les mêmes discussions. Si vos profs ont dit ça, je peux rien faire, je suis vraiment trop cons. Mais je vais m'en souvenir pour la prochaine fois que vous, les petits mariolles, vous aurez un problème de programmation.
edit : d'un autre côté, c'est un peu toujours la même chose. Quand je pose des questions, le prof en a jamais parlé, quand je donne des réponses, le prof a dit le contraire
Marsh Posté le 06-12-2003 à 23:52:05
Citation : ta mere t'as border un peu trop pres du mur |
C'est pas plutôt bercé ?
Oui, Taz devrait prendre des cours de communication. Mais pour le C++ il en a moins besoin. Méfies-toi des cours (de prog) de tes profs. La programmation demande bcp de pratique et surtout une perpétuelle remise au gout du jour. Bcp de profs (et programmeurs en général) ne font pas cet effort et se dépatouillent avec les bases qu'ils ont acquises y'a 10 ans. Mais tout évolue, y compris les langages. D'autant plus que c'est rarement les profs qui font les TP de prog. Y'a des profs pour qui la prog est une passion et une spécialité, ils ont leur petite réputations. Pour les autres, sur souvent l'aspect le + chiant de leur boulot.
Ce qui est sûr, c'est que si tu dois rendre un TP, et que le prof dit de caster, il faut le faire si tu veux une bonne note.
Citation : Ça me gave de recommencer les présentations et les mêmes discussions. |
Prend le code qui revient le + souvent et fout-le sur ton site, avec 2/3 explications.
Citation : j'en ai vraiment ma claque de ce forum. surtout que les cat C et C++ sont vides. |
Faut croire que ces langages ne sont plus utilisés...
Aller, je vais faire un peu de C#
Marsh Posté le 07-12-2003 à 12:21:52
Je comprend bien ton discours. Mais ce que je veux faire comprendre c'est que moi je suis venu ici simplement dans le but d'aider un ami dans un projet. Et puis on viens me souler la tete parce que j'ai fais un cast ! Je reve quoi je vous demande pas de me critiquer et je vous demande pas d'aider sur le code que j'ai mis, j'ai toujours mis des cast dans mes prog et j'ai jamais eu de problème. Bien sur si des gens s'amuse à en mettre tellement que ca fais bugger leur prog c'est leur soucis moi j'ai jamais eu de probs avec mes casts donc je continue à en mettre comme le demande les profs dans mon ecole.
Et en plus je comprend mieux quand je relis mon code.
Après si vous douter de la façon de coder de mes prof vous pouvez toujours discuter avec eux, nous on a deja essayer c'est pas facile !
Alors laisser moi aider mon potes tranquillement et laisser moi mettre mes casts la ou je veux. Tu dis que la prog demande bcp de pratique alors que tu ne me connais meme pas et tu ne sais meme pas depuis combien de temps je programme. Tu ne sais meme pas depuis quand j'utilise un ordinateur. Et encore mieux tu ne sais meme pas l'age que j'ai...
Alors respecter un peu les autres et arreter de venir critiquer n'importe quel code de n'importe qui d'autant que je suis jamais venu vous faire chier avec des codes qui bugger a cause d'un cast.
Voila sur ce je vous laisse dans votre monde décasté
Marsh Posté le 07-12-2003 à 14:09:27
le truc c'est que certain ont beaucoup plus d'expérience et de connaissances que d'autres, alors quand ils prennent la peine de faire une remarque, un avertissement, de donner un bout de code, c'est que ça leur semble important. Maintenant si vous vous en foutez ...
Marsh Posté le 07-12-2003 à 15:47:11
Et qu'es ce qui te fais dire que tu as plus d'experience que moi dans la prog ?
Marsh Posté le 07-12-2003 à 16:44:09
Citation : Après si vous douter de la façon de coder de mes prof vous pouvez toujours discuter avec eux, nous on a deja essayer c'est pas facile ! |
La dessus laisse-moi te donner un bon conseil issu de mon expérience scolaire : un élève ne peut pas avoir raison.
Citation : Tu dis que la prog demande bcp de pratique alors que tu ne me connais meme pas et tu ne sais meme pas depuis combien de temps je programme. Tu ne sais meme pas depuis quand j'utilise un ordinateur. Et encore mieux tu ne sais meme pas l'age que j'ai... |
Je pensais pas à toi, ni à quelqu'un en général. Seulement, bien programmer requiert de régulièrement se tenir au courant des nouveautés, de changer ses habitudes, etc... Généralement, les profs s'y sont mis à un moment donné, puis ne codant plus que des trucs pour eux ils se sont déconnectéq. De toutes facons pour moi c'est simple ; pour bien programmer il faut avoir bosé en entreprise. Y'a biensûr des profs qui programment bien. A chaque fois perso, ils ont bossés un petit bout de temps avant de devenir enseignants. En revanche il y a des profs qui n'ont jamais quitté leur université. Je vois pas comment ils peuvent bien programmer, et en général, ils programment pas. Je te l'ai dit, un prof généralment programme pour coder son algo qu'il a mis 5 ans à développer, et c'est la partie la plus chiante de son boulot. Alors il se fait pas chier avec les const, à apprendre les string, les ref, ... Maitenant tu a peut être beaucoup de chance et c'est un Jésus du C++ qui te fait les TP. Moi souvent ça a été le Thésard du coin qu'on a chopé pour cette tâche ingrate. Il était à ta place y'a 2 ou 3, alors c'est random...
Maintenant Taz fais une remarque à propos de ton code. Comme toujours, c'est pas de manière élégante. La première fois ca surprend, ca vexe. Apres, on y fait plus gaffe. Le C++ est son petit bébé et il aime pas qu'on le maltraite
Il: faut accepter l'idée que tu puisse faire mieux, sinon tu progressera jamais. C'est justement cette mentalité chez pas mal de profs que j'essayais de dénoncer. "Ca fait 10 que je fais comme ça, et ça mrche". Oui, il y a bcp de manières d'écrire un code qui marche. Mais certaines sont meilleurs que d'autres, même si toutes compilent et s'exécutent sans pblm.
Mais moi j'ai rien contre toi, ni même contre les profs. J'ai fini par accepter et comprendre cela. Bcp sont moyennement doués en prog (Taz dirait sûrement nuls mais pas moi quand même) mais ils sont brillants dans un autre domaine. Y'en a quand même quelques uns je me demande comment ils sont arrivés là, mais c'est une minorité tout de même.
Et puis te vexe pas. De toutes façons ton code ne sera jamais parfait, il déplaira toujours à quelqu'un, qui aurait mieux fait ceci ou cela. Moi j'ai rien contre toi, j'ai pas voulu t'offenser, au contraire.
Marsh Posté le 07-12-2003 à 18:21:53
Je sais que t'as pas voulu m'offenser et je le comprend et je le prend pas mal. Le truc c'est que, à la limite mon cats n'est pas du tous utile, ce que je veux faire comprend c'est que j'ai repondu à ce post dans le sens d'aider quelqu'un et pas qu'on me fasse un cours sur les cast c'est tous !
Ensuite pour un malheureux petit cast on en fait tous un drame j'en met pas non plus toutes les lignes j'en met quand je sais que plus tard je vais relire la ligne et que ca va m'aider de mettre ce cast pour me rapeller ce que la ligne fait exactement.
C'est pas en mettant un cast tous les 3 prog que je vais mettre en danger important ma facon de coder.
Enfin bref, je prefere arreter la parce que, et ce que je veux vous faire comprendre, se post n'a pas pour but de discuter des cast. Si vous voulez faire une discution philosophique sur les cast faite un autre post comme ca on pourra faire comme dans tous les debat y'aura un groupe contre un groupe pour et puis 2 ou 3 gars vont changer d'avis dans chaque groupe et on sera toujours au meme point.
PS : je porte une grande confiance à mon prof de prog qui fait partie de la communauté Linux et de ce fait code vraiment bien en C.
Marsh Posté le 07-12-2003 à 18:24:52
allez, rammasse la craie parterre
Marsh Posté le 07-12-2003 à 18:45:14
@Shinjuku83: peut importe ton age, depuis combien de temps tu prog.
Si tu fais un truc mauvais même si ca marche, il reste toujours mauvais.
Exemple bidon :
on suppose un mec qui ne connait rien à la construction de maison.
tu lui dit construit ue maison. et il te sort un truc qui ressemble à une maison.C'est une maison ok mais les normes de sécurité sont pas respecté car il savait même pas qu'il en fallait.Pourtant c'est bien une maison mais j'y habiterai jamais.
Mais bon c'est pas parceque ca marche que c'est bon.
Ton prog peut marché 1000 fois et planter à la 1001fois. (cf windows)
Le but d'un programme n'est pas de faire plaisir au compilo ou au prof, le but c'est d'avoir un programme correct de A à Z.
Marsh Posté le 07-12-2003 à 18:46:54
Citation : voici Luc, et Luc, pour plus d'incompréhension |
Marsh Posté le 07-12-2003 à 18:51:58
Citation : |
c'est une histoire de norme ca. Ou elle est la norme qui dit qu'on doit pas mettre de cast dans un prog en C ?
Et puis si effectivement cette norme existe pourkoi on continue à l'apprendre et à l'utiliser ? Et surtout pourkoi l'avoir crée ? Parce que les trucs qui servent à rien c'est toujours utilise de les créer ?
Marsh Posté le 07-12-2003 à 18:57:32
dans les manuels de référence de C.
tu relis le sujet, tu ouvres les yeux, et tu vois que le seul truc qui empêche ce genre de conneries, c'est les gens comme toi, aggripés à leur folklore, « le professeur a raison ».
Citation : ces casts étaient obligatoires en pré-ANSI, donc autant dire que ici, tout le monde a appris le C après la norme ANSI, qui est d'ailleurs arrivait vite après la création du C du fait de la prolifération des dialectes. |
Marsh Posté le 07-12-2003 à 19:00:57
d'ailleurs on parle de C ici. si on fait du C++, la syntaxe des cast est suffisemment lourde pour y réfléchier à deux fois avant de caster
Marsh Posté le 07-12-2003 à 19:06:02
Citation : |
ben voila moi j'utilise les 20%
Marsh Posté le 07-12-2003 à 19:07:49
je vais pas te faire l'insulte de citer encore une fois tes bouts de code
Marsh Posté le 07-12-2003 à 19:17:04
Mais fait ce que tu veux je m'en tape completement de toutes facon tu peux dire ce que tu veux je continuerais a faire comme j'ai envie c'est pas toi qui va m'en empecher d'autant plus que les cast de mes codes au dessus on est pas obliger de les recopier c'est juste pour etre plus clair dans l'explication au moins
Marsh Posté le 07-12-2003 à 19:58:17
Shinjuku83 a écrit : Mais fait ce que tu veux je m'en tape completement de toutes facon tu peux dire ce que tu veux je continuerais a faire comme j'ai envie c'est pas toi qui va m'en empecher d'autant plus que les cast de mes codes au dessus on est pas obliger de les recopier c'est juste pour etre plus clair dans l'explication au moins |
tiens si je construisais moi même ma maison
Marsh Posté le 07-12-2003 à 20:04:20
Shinjuku83 a écrit : Mais fait ce que tu veux je m'en tape completement de toutes facon tu peux dire ce que tu veux je continuerais a faire comme j'ai envie c'est pas toi qui va m'en empecher d'autant plus que les cast de mes codes au dessus on est pas obliger de les recopier c'est juste pour etre plus clair dans l'explication au moins |
ne viens pas demander conseil, et ne conseilles personne alors.
levez la main ceux qui ont plus d'expérience que Shinjuku83 pour ne pas écrire
Code :
|
Marsh Posté le 07-12-2003 à 20:07:54
Citation : |
je comprend pourkoi maintenant...
Marsh Posté le 04-12-2003 à 23:30:15
bon je réalise une petite appli de chat.
j'ai mon serv et mon client qui communiquent.
ils s'envoient une structure de type :
le problème c'est que le serveur ne lit pas plus de 4 bytes en réception d'après ce que j'ai pu tester pour débug.
A mon avis c'est les AnsiString qui foirent car du coup j'arrive seulement a afficher Msg.Action;
Ca semble plutot logique car d'après ce que j'ai compris, les AnsiString sont des chaines de char dynamique et donc en récéption, le serveur ne sait pas comment séparer les caractères des 2 AnsiString.
Faut il que j'envoie les champs séparément ou bien faut il que je repense ma structure avec des char* ???
merci d'avance car je galère, j'ai ma connec ss 98 et borland ss xp c d'un pratique
Message édité par jeoff le 04-12-2003 à 23:30:50