Bonjour tout le monde ,
J'aimerais faire une application sous delphi6 afin de pouvoir transmettre via des sockets plusieurs type de donnée(bool,string et integer) et afficher leur résultat.
Pour cela j'ai décidé de stocker toutes ces données dans un tableau de VARIANT et de faire le transfert via la fonction sendbuf.
J'ai essayé l'exemple suivant sans savoir si cétait vraiment possible mais lorsque j'effectue le transfert, il m'affiche une fenêtre d'erreur à la réception "Argument incorrect "
  • à l'émission :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.Button2Click(Sender: TObject);
    var
      tab1 : Variant;
    begin
      tab1 :=VarArrayCreate([1,3],varVariant);
      tab1[1]:=d1;  // d1 : boolean
      tab1[2]:=d2;  // d2 : Integer
      tab1[3]:=d3;  // d3 : string
      ClientSocket1.Socket.SendBuf(tab1,27); // taille connue : 27
    end;
  • à la réception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    var
      tab2 : Variant;
    begin
      tab2 :=VarArrayCreate([1,3],varVariant);
      Socket.ReceiveBuf(tab2,27);
      if tab2[1] Then RadioButton1.Checked := True
      else RadioButton2.Checked := True;
      Edit2.Text := intToStr(tab2[2]);
      Edit3.Text := tab2[3];
    end;

Quelqu'un pourrait m'aider svp