为什么别人的socket控件  ClientSocket 和 ServerSocket里面有  ClientSocket.socket.send这样的而我写到 ClientSocket.的时候就会报错,错误如下[Pascal Error] pay.pas(1): Unable to invoke Code Completion due to errors in source code

解决方案 »

  1.   

    pay.pas这个文件中别的地方代码有点问题或者复合工程的设置查询的路径不对
      

  2.   

    請先檢查你的pay.pas檔的版本,如果有缺少,請拜google大神,謝謝,再沒有我再寄給你吧。
      

  3.   

    unit pay;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, RzPanel, RzSndMsg, RzBorder, RzPopups, RzBHints,
      RzStatus, StdCtrls, RzLabel, Menus, Sockets;type
      TForm1 = class(TForm)
        RzStatusBar1: TRzStatusBar;
        RzStatusPane1: TRzStatusPane;
        RzClockStatus1: TRzClockStatus;
        RzLabel1: TRzLabel;
        MainMenu1: TMainMenu;
        N1: TMenuItem;
        ListenItem: TMenuItem;
        ConnectItem: TMenuItem;
        Disconnect: TMenuItem;
        Exit: TMenuItem;
        ClientSocket: TTcpClient;
        ServerSocket: TTcpServer;
        Memo1: TMemo;
        Memo2: TMemo;
        procedure ListenItemClick(Sender: TObject);
        procedure ConnectItemClick(Sender: TObject);
        procedure Memo1KeyDown(Sender: TObject; var Key: Word;
          Shift: TShiftState);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.ListenItemClick(Sender: TObject);
    begin
      ListenItem.Checked := not ListenItem.Checked;
      if ListenItem.Checked then
      begin
      ClientSocket.Active := False;
      ServerSocket.Active := True;
      end
      else
      begin
      if ServerSocket.Active then
      ServerSocket.Active := False;
      end;
    end;procedure TForm1.ConnectItemClick(Sender: TObject);
    var
    server:string;
    begin
    if ClientSocket.Active then ClientSocket.Active := False;
    if InputQuery('计算机将连接到', '服务器地址:', Server) then
    if Length(Server) > 0 then
    with ClientSocket do
    begin
    RemoteHost := Server;
    Active := True;
    ListenItem.Checked := False;
    end;
    end;procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    begin
      if Key = VK_Return then  if IsServer then //这里报错
      ServerSocket.Socket.Connections[0].SendText(Memo1.Lines[Memo1.Lines.Count - 1]); //这里报错
      else
      ClientSocket.Socket.SendText(Memo1.Lines[Memo1.Lines.Count - 1]);   //这里报错end;end.
      

  4.   

    Sockets 是叫 winsocket2.pas 吧
      

  5.   

    你的IsServes在哪??
    问题估计在这玩意上边吧
      

  6.   

    isservers是什么东西,我不知道,我以为默认的有这个属性呢..
      

  7.   

    不是说了问题在
    IsServers上了么???
    这应当在某个地方有声明啊,
      

  8.   

    这个声明以后还是不行我刚网上查了一下,我的代码中是TTcpClient控件
    ClientSocket: TTcpClient;
    ServerSocket: TTcpServer;而他们的是
    ClientSocket: TTcpClientsocket;
    ServerSocket: TTcpServersocket;
    这是为什么?我按照网上说的方法,在compoent---install packages---dclsocket70.dpl安装了以后Inter里面还是没有多出来TTcpClientsocket控件
      

  9.   

    也就是说,我的delphi7没有TTcpClientsocket控件只有TTcpClient,这个东西
      

  10.   

    问题解决了,是因为我装过一个Jsocket的控件,所以导致D7本身的socket控件不在原来的位置了。