Probleme appeller procedure...

Probleme appeller procedure... - C#/.NET managed - Programmation

Marsh Posté le 02-04-2005 à 14:34:02    

Bonjour, j'ai 2 forms. Dans la cadre s'un tchat, j'etablie une connection avec la form1. Si je veut envoyer des données a pertir d'un RichTextBox de cette form en apellant ma procedure d'envoie de données y'a pas de pb... mais si je veut faire la mm manipulation sur l'autre form et bah ca marche plus...
 

Code :
  1. Public Sub Send(ByVal Data As [String])
  2.         buffer = Encoding.UTF8.GetBytes(Data)
  3.         sckclient.BeginSend(buffer, 0, buffer.Length, SocketFlags.None, AddressOf SendCallback, sckserver)
  4.     End Sub


Quand ca marche sckserver ne vaut pas nothing, par contre dans le 2eme cas il vaut "nothing"
 
En gros je suis obliger d'appeller ma procedure a partir de la form1 pour que ca marche masi moi je voudrais l'appeller avec la form2 ....
 
Je comprends pas ...
 
merci


Message édité par fdiedler le 02-04-2005 à 14:35:14
Reply

Marsh Posté le 02-04-2005 à 14:34:02   

Reply

Marsh Posté le 02-04-2005 à 16:07:26    

c'est pas du C#

Reply

Marsh Posté le 02-04-2005 à 18:37:07    

c'est du VB.NET et alors ?

Reply

Marsh Posté le 05-04-2005 à 14:38:48    

Taz a écrit :

c'est pas du C#


C'est du VB.NET, donc ça entre dans la cat .NET Managed ;)

Reply

Marsh Posté le 05-04-2005 à 20:30:35    

fdiedler a écrit :

Bonjour, j'ai 2 forms. Dans la cadre s'un tchat, j'etablie une connection avec la form1. Si je veut envoyer des données a pertir d'un RichTextBox de cette form en apellant ma procedure d'envoie de données y'a pas de pb... mais si je veut faire la mm manipulation sur l'autre form et bah ca marche plus...
 

Code :
  1. Public Sub Send(ByVal Data As [String])
  2.         buffer = Encoding.UTF8.GetBytes(Data)
  3.         sckclient.BeginSend(buffer, 0, buffer.Length, SocketFlags.None, AddressOf SendCallback, sckserver)
  4.     End Sub


Quand ca marche sckserver ne vaut pas nothing, par contre dans le 2eme cas il vaut "nothing"
 
En gros je suis obliger d'appeller ma procedure a partir de la form1 pour que ca marche masi moi je voudrais l'appeller avec la form2 ....
 
Je comprends pas ...
 
merci


 
sckclient vaut nothing tu veux dire ?
 
Je ne fais pas de VB.NET mais il me semble que le problème est classique : tu tentes d'accéder à partir de la form2 à sckclient qui est défini private dans la form1, ce que tu n'as évidemment pas le droit de faire.
 
Tu as donc deux solutions :
- changer la déclaration de sckclient dans le source de la form1 et la passer en public, ou mieux, un truc équivalent à internal en C# (doit y avoir une propriété pour modifier l'accès, je sais pas si VB.NET montre le code généré automatiquement) ;
- écrire une procédure publique dans la form1 qui va se charger de faire le boulot.
 
A mon avis la deuxième solution est bien meilleure/propre. La form contient l'objet, il n'y a donc qu'elle qui devrait pouvoir le manipuler de façon directe.


Message édité par sielfried le 05-04-2005 à 20:31:00

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 05-04-2005 à 21:57:37    

internal en çaidiaise = Friend en VaiBai
 
Sinon on considère qu'il ne faut effectivement jamais de variables membres directement publique. Par contre pour les internal, pas de probs, vu que c'est notre propre Assembly, et qu'on considère qu'on est seul maître à bord et que l'on sait ce que l'on fait :)


Message édité par FlorentG le 05-04-2005 à 21:57:48
Reply

Marsh Posté le 06-04-2005 à 09:13:28    

Merci a tous pour vos aides...
Je ne connais pas l'Internal mais j'ai declarer en Pubic dans un module et ca marche ( Public dans la class ne marchais pas non plus )
A++

Reply

Marsh Posté le 06-04-2005 à 10:26:14    

Oula :heink: Un peu dangereux de déclarer des variables Publiques ;)

Reply

Marsh Posté le 06-04-2005 à 11:52:48    

pourquoi ??
Sinon tu peux m'expliquer comment faire autrement ?
Merci

Reply

Marsh Posté le 06-04-2005 à 11:54:26    

Faut la mettre en privée, et utiliser une propriété publique readonly

Reply

Marsh Posté le 06-04-2005 à 11:54:26   

Reply

Marsh Posté le 06-04-2005 à 12:03:35    

Et je met la propriété en privé dans ma class ou dans mon module ? et pour la propriété ReadOnly ?

Reply

Marsh Posté le 06-04-2005 à 12:04:22    

Non, la variable en privée, et la propriété en public readonly

Reply

Marsh Posté le 06-04-2005 à 12:08:30    

ok merci je vais voir ca.

Reply

Marsh Posté le 06-04-2005 à 12:28:55    

ok


Message édité par fdiedler le 06-04-2005 à 12:29:53
Reply

Marsh Posté le 06-04-2005 à 12:32:20    

Dim bufferFichier(bytesRead) As Byte
 Call envoie.tested(bufferFichier)


Donc selon ces deux lignes que t'as mis, tu créer un tableau de Byte vide, qu'ensuite tu balances à la fonction tested :D Faudrait penser à remplir le tableau, hein ;)

Reply

Marsh Posté le 06-04-2005 à 12:32:36    

Gné ? C'est quoi la fluctuation ?

Reply

Marsh Posté le 06-04-2005 à 13:58:59    

FlorentG a écrit :

Gné ? C'est quoi la fluctuation ?


J'ai pas compris... lol
Sinon pour le tableau bah comment on fait pour le remplir ??  
Je pensait que on le remplissait avec la procedure que j'ai appeller...
Merci
 
PS: pourquoi tu m'a repondu dans ce topic ? lol
 
Repond plutot la : http://forum.hardware.fr/hardwaref [...] 7375-1.htm
 
Merci beaucoup pour ton aide
 
florent

Reply

Marsh Posté le 06-04-2005 à 14:00:36    

ok

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed