Indice hors de limite ?

lolishe Messages postés 17 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 3 juin 2006 - 1 juin 2006 à 22:33
lolishe Messages postés 17 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 3 juin 2006 - 3 juin 2006 à 23:42
Bonsoir,
j'utilise le composant TSocket, et j'ai un problème (avec?) lorsque je veux renvoyer au client qui m'envoie une chaine de caracteres, ce qu'il vient de m'envoyer ( donc sa chaine de caracteres ^^ )
mais quand j´envoie un message ( client ) au serveur il le reçoit mais met de suite après comme erreur :
http://www.fightersonline.info/indice.PNG' target='_blank'>http://www.fightersonline.info/indice.PNG

Pourquoi et comment corriger ce genre d'erreur ? (je pense pas que le code soit nécessaire, juste que google m'a sortit des résultats sur cette erreur mais pas à ce numéro-là ni sur les sockets ..
merci beaucoup d'avance à celui ou celle qui me répondra !
cordialement !  

16 réponses

Utilisateur anonyme
1 juin 2006 à 22:37
Rajoute Connections[0] : je te le redis un serveur peut répondre à plusieurs clients. Si tu lui dis pas lequel (ici '0' c'est à dire le premier c'est à dire l'unique dans ton cas de figure), il peut pas envoyer le message.
0
Utilisateur anonyme
1 juin 2006 à 22:39
Une simple recherche avec ca : "delphi+server+sendtext" t'aurais donné la réponse (seconde URL). C'est important de chercher (la réponse figurait aussi deja sur CS)
0
lolishe Messages postés 17 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 3 juin 2006
1 juin 2006 à 22:44
merci, déjà y a plus d'erreurs mais ça n'envoie rien :s enfin je reçois rien en tout cas!
0
Utilisateur anonyme
1 juin 2006 à 22:44
Passe ton code
0

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

Posez votre question
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
1 juin 2006 à 22:45
Delphi ?

generalement c'est une erreur qui se produit lorsqu'on essaye d'acceder a un indice d'un tableau en dehors de l'interval de ce tableaux qu'ils soit dynamique, statique...

je pense donc que quelque part dans le programme il doit y'avoir une ligne de ce genre :

Tableau[N+1] (peut aller au dela de l'indice le plus haut)
ou encore
Tableau[N-1] (peut aller en deca de l'indice le plus bas)
ou encore
Tableau[index] (peut aller n'importe ou avec une valeur d'index erronée ou non initialisée.)

il y'a en delphi un moyen simple de verifié l'interval d'un tableau :

if (Index >= Low(Tableau)) and (Index <= High(Tableau)) then ...

ou sur les type liste (TStrings, TList ect...) :

if (Index >= 0) and (Index <= List.Count-1) then ...

a partir de la on peu facilement ecrire des controls permettant la sortie d'une procedure en cas d'indice erroné.
on utiliserat la plupart du temps une fonction a retour booléen :

function UpdateValue(var Tableau : TTypeTableau; const index : integer; const Value : TypeValue) : boolean;
begin
  result :=
(index < low(Tableau) or (index > high(Tableau)
;
  if not result then exit;
  Tableau[index] := value;
end;
  
0
lolishe Messages postés 17 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 3 juin 2006
1 juin 2006 à 22:46
Ah ! GG pour google, je recherche jamais avec les "+" ça m'a lair efficace .
0
lolishe Messages postés 17 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 3 juin 2006
1 juin 2006 à 22:47
Le code du client ?  
0
Utilisateur anonyme
1 juin 2006 à 22:48
les 2 : client+serveur
0
lolishe Messages postés 17 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 3 juin 2006
1 juin 2006 à 22:52
Code source client ( darkbasic ) :

sync on : set window on : disable escapekey

NetworkInitialize

NetworkConnect "127.0.0.1","2000"

message$="teste" : networksenddata message$

do

recu$ = NetworkGetData()

Print recu$

if escapekey()=1

NetworkCloseConnection

end

endif

sync : loop

Partie de reception/envoie du string, code source serveur ( delphi ) :

procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
Edit2.Text:=Socket.ReceiveText;
serversocket1.Socket.Connections[0].sendtext(edit2.text);
end;
0
lolishe Messages postés 17 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 3 juin 2006
1 juin 2006 à 22:52
( merci pour ce que vous faites les gars )
0
Utilisateur anonyme
1 juin 2006 à 22:58
Je te connais pas le Dark Basic : il se peut qu'il n'utilise pas le meme protocole

procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
Edit2.Text:=Socket.ReceiveText;
serversocket1.Socket.Connections[0].sendtext(edit2.text);
end;

La ca ne va pas : Tu ne testes pas le contenu de l'edit2

procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
If length(Socket.ReceiveText)<>0 then
Begin
Edit2.text:=Socket.ReceiveText;
serversocket1.Socket.Connections[0].sendtext(edit2.text);
end;
end;

Deja ca ira mieux
0
lolishe Messages postés 17 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 3 juin 2006
1 juin 2006 à 23:01
Ca utilise le même protocole ( TCP ) d'autant plus que sur la DLL externe que j'utilise sous darkbasic, le développeur a bien expliqué dans son fichier txt qu'un bon serveur pouvait être élaborer sur purebasic, visual basic & DELPHI !
j'vais tester ça j'te donne des nouvelles après !   
0
lolishe Messages postés 17 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 3 juin 2006
1 juin 2006 à 23:07
re
bah là, ni le serveur ni le client reçoit de message lol mais quand le client se connecte ça détecte toujours !   bizarre bizarreee !
0
Utilisateur anonyme
2 juin 2006 à 08:15
Re,

procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
Var
Command:string;
begin
Command:=Socket.ReceiveText;
Edit2.text:=Command;
serversocket1.Socket.Connections[0].sendtext(Command);
end;
end;
0
lolishe Messages postés 17 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 3 juin 2006
2 juin 2006 à 14:45
Salut,
ça ne fonctionne toujours pas :s le serveur rereçoit les messages du client, mais le client reçoit toujours pas les messages du serveur ..
0
lolishe Messages postés 17 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 3 juin 2006
3 juin 2006 à 23:42
merci !lol
0
Rejoignez-nous