Violation d'accès à l'adresse ... | Opérateur de pointeur incorrecte

EutcheX Messages postés 14 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 13 janvier 2007 - 18 sept. 2005 à 18:12
EutcheX Messages postés 14 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 13 janvier 2007 - 20 sept. 2005 à 12:54
Bonjour à tous, et d'avance merci pour les réponses que vous pourrez m'apporter ...



Voilà, je vous explique mon cas :

J'ai 3 sockets (TClientSocket)

Un premier se charge de se connecter au serveur pour récupérer l'adresse d'un autre serveur.

Une fois l'adresse récupérée, le premier socket est fermé, puis un deuxième socket se connecte à cette nouvelle adresse.

Tout en gardant le 2ème socket connecté, le troisième se connecte à un autre serveur, pour récupérer une autre information.



--- Jusque là, tout va bien.



Maintenant, je dois renvoyer cette nouvelle information au serveur sur lequel le deuxième socket est connecté.

Il m'affiche d'abord l'erreur 'Violation d\'accès à l\'adresse ...', puis 'Opérateur de pointeur incorrecte'. Voici la ligne :



cMain.Socket.SendText('USR ' + IntToStr(idS) + ' TWN S ' + Datas + CRLF); - CRLF étant égal à #13 + #10.

Maintenant, je retire 'cMain.' ; il envoi donc la ligne sur le 3ème socket, et là, aucune erreur!

Ensuite, je replace 'cMain.' et retire ' + CRLF' ; et là idem, ca fonctionne!

Le hic c' que j'ai besoin d'envoyer ' + CRLF', sinon le serveur ne me renvoie rien.



Si quelqu'un avait une idée :] ; elle serait la bienvenue!



Encore merci à ceux (ou celui) qui pourra éclaircir mes idées ...



Cordialement,

EutcheX.


Nous n'héritons pas de la Terre, mais l'empruntons à nos Enfants !

6 réponses

cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
18 sept. 2005 à 20:49
tu a tester

MaVarString='USR ' + IntToStr(idS) + ' TWN S ' + Datas + CRLF;
if cmain<>nil then
cMain.Socket.SendText(MaVarString)
else
Sendmessage('Le soket cMain n'existe pas/plu....');

Bon coding....

ManChesTer.
0
EutcheX Messages postés 14 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 13 janvier 2007
18 sept. 2005 à 21:36
Bonsoir ManChesTer,



Ca ne change rien ... ca veut donc dire que mon socket est toujours existant ...



Ca fait deux jours que je tourne en rond, je n'sais plus trop quoi faire ...



Si tu - ou quelqu'un d'autre? - avais une idée?



Merci encore.



Cordialement,

EutcheX.


Nous n'héritons pas de la Terre, mais l'empruntons à nos Enfants !
0
EutcheX Messages postés 14 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 13 janvier 2007
19 sept. 2005 à 12:30
Bonjour,



Une petite précision ... Je remplace Datas par 'test', et ca fonctionne
... Datas étant une chaîne comprenant plus de 255 caractères ... une
idée? Comment puis-je envoyer une chaîne longue (plus de 255 caratères)?



Merci pour vos réponses ...



Cordialement,

EutcheX.


Nous n'héritons pas de la Terre, mais l'empruntons à nos Enfants !
0
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
19 sept. 2005 à 21:43
l'envoie d'un buffer devrais résoudre ton probleme
Exemple :

var MaChaineLongue:pchar;

begin
MaVarString='USR ' + IntToStr(idS) + ' TWN S ' + Datas + CRLF;
GetMem(MaChaineLongue,Length(MaVarString));
StrCopy(MaChaineLongue,MaVarString);
cMain.Socket.SendBuf(MaChaineLongue,StrLen(MaChaineLongue));
FreeMem(MaChaineLongue);
end;

Bon Coding....

ManChesTer.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
EutcheX Messages postés 14 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 13 janvier 2007
20 sept. 2005 à 07:21
Bonjour ManChesTer,



Merci, le problème est résolu : plus de messages d'erreurs!



Par contre, autre soucis maintenant, le serveur ne me répond pas après
lui avois envoyé le buffer.. Tu sais d'où est-ce que ca pourrait venir?



Cordialement,

EutcheX.


Nous n'héritons pas de la Terre, mais l'empruntons à nos Enfants !
0
EutcheX Messages postés 14 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 13 janvier 2007
20 sept. 2005 à 12:54
Bonjour tout l'monde,



Ok ManChesTer ... le problème venait d'ailleur : les évènements
d'erreurs se déclanchaient lors de la réception de la réponse du
serveur ... J'ai corrigé et ca fonctionne. Merci de t'être penché sur
le problème.



Cordialement,

EutcheX.


Nous n'héritons pas de la Terre, mais l'empruntons à nos Enfants !
0
Rejoignez-nous