IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Indide de liste hors limite (0) ?


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 93
    Par défaut Indide de liste hors limite (0) ?
    Bonjour a tous,
    voila dans mon application j'utilise le composant TSocketServer de Builder.
    J'ai fait ce code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    maCommande_Barriere.retour = NULL;
            ServerSocket2->Socket->Connections[0]->ReceiveBuf((void*)&maCommande_Barriere.retour,sizeof(maCommande_Barriere.retour));
            Label1->Caption = maCommande_Barriere.retour;
            if(maCommande_Barriere.retour == 1)reponse = true;
            else reponse = false;
    Mais j'ai l'exception avec le message:

    Indide de liste hors limite (0).

    Ps: la valeur change en fonction de la valeur Connections[n];

    Merci

  2. #2
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    C'est simple, le problème vient du fait qu'au moment ou ton code est exécuter, ton serveur n'as pas de connexion avec un client (ou pas assez si tu met un index plus grand)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 93
    Par défaut
    Merci de ta réponse ,
    Mais pourtant j'ai bien un client de connecté sur le serveur ...

  4. #4
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Mais pourquoi utilise tu ce code pour lire le socket client, utilise l'évènement OnClientRead du ServerSocket, il se déclenche dès qu'un client envoi quelque chose au serveur et avec le paramètre Socket de cet événement tu peut lire le socket exactement comme tu le fait la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    maCommande_Barriere.retour = NULL;
    Socket->ReceiveBuf((void*)&maCommande_Barriere.retour,sizeof(maCommande_Barriere.retour));
    Label1->Caption = maCommande_Barriere.retour;
    if(maCommande_Barriere.retour == 1)
      reponse = true;
    else 
      reponse = false;

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 93
    Par défaut
    Eu oui mais mon code est placé dans l'événement OnClientWrite.

  6. #6
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Pourquoi write puisque tu lit ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 93
    Par défaut
    OnClientWrite => Quand le client écrit
    OnClientRead => Quand le Client lit

    Non?

  8. #8
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Non

    Citation Envoyé par aide BCB 6 pour OnClientWrite
    Se produit quand le socket serveur doit écrire des informations dans un socket client.

    __property TSocketNotifyEvent OnClientWrite = {read=FOnClientWrite, write
    =FOnClientWrite};

    Description

    Ecrivez un gestionnaire d'événement OnClientWrite pour écrire dans la connexion de socket. Si la propriété ServerType a la valeur stThreadBlocking, utilisez un objet TWinSocketStream pour éviter les problèmes pouvant survenir en écriture susceptibles de bloquer indéfiniment le thread d'exécution. Sinon, utilisez les méthodes du paramètre Socket pour effectuer l'écriture.

    Remarque : Si ServerType a la valeur stThreadBlocking, assurez-vous que tout le code du gestionnaire d'événement OnClientWrite est adapté à l'utilisation de threads. Utilisez la méthode GetClientThread du paramètre Sender pour accéder aux informations spécifiques du thread.
    Citation Envoyé par aide BCB 6 pour OnClientRead
    Se produit quand le socket serveur doit lire des informations dans un socket client.

    __property TSocketNotifyEvent OnClientRead = {read=FOnClientRead, write
    =FOnClientRead};

    Description

    Ecrivez un gestionnaire d'événement OnClientWrite pour écrire dans la connexion de socket. Si la propriété ServerType a la valeur stThreadBlocking, utilisez un objet TWinSocketStream pour éviter les problèmes pouvant survenir en écriture susceptibles de bloquer indéfiniment le thread d'exécution. Sinon, utilisez les méthodes du paramètre Socket pour effectuer l'écriture.

    Remarque : Si ServerType a la valeur stThreadBlocking, assurez-vous que tout le code du gestionnaire d'événement OnClientRead est adapté à l'utilisation de threads. Utilisez la méthode GetClientThread du paramètre Sender pour accéder aux informations spécifiques du thread.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 93
    Par défaut
    désolé pour avoir douté.
    Bon j'ai testé mais cela ne fonctionne pas .
    Je ne reçoit rien de mon client.
    Ps: le client est sous java j2me

  10. #10
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Normalement que tu soit en java ou autre du coté client ca change rien, si tu ne reçoit rien du client c'est surement qu'il ne t'as rien envoyé non ?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 93
    Par défaut
    Oui peut-être pourtant mon collège de projet m'assure qu'il m'envoie des données.

  12. #12
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Citation Envoyé par flo291288 Voir le message
    Oui peut-être pourtant mon collège de projet m'assure qu'il m'envoie des données.
    Installe Wireshark et regarde la communication sur ton PC.

  13. #13
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par défaut
    Salut

    J ai ce genre d erreur quand par exemple je fais une boucle sur le contenu d une listbox et que je l execute ainsi

    for ( i=0 ; i<=LB->Count ; i++ )

    c est pas une histoire d indice d un quelconque composant

  14. #14
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Toujours :i < LB->Count lorsque Count donne un nombre d'item et que [0] représente le premier item.
    Le dernier item valide est alors en [Count-1].

    A plus !

Discussions similaires

  1. erreur: indice de liste hors limite
    Par Abou Zar dans le forum Web & réseau
    Réponses: 12
    Dernier message: 06/10/2010, 13h08
  2. Indice de liste hors limite
    Par pierrot67 dans le forum Bases de données
    Réponses: 2
    Dernier message: 14/02/2007, 11h42
  3. [débutant] erreur "indice de liste hors limites(1)"
    Par lidouka dans le forum Langage
    Réponses: 2
    Dernier message: 13/12/2005, 14h31
  4. Indice de liste hors limite !!! Report
    Par EssaiEncore dans le forum Langage
    Réponses: 1
    Dernier message: 29/11/2005, 10h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo