各位大哥,小弟用IndyTCPClient和IndyTCPServer组件编了一个远程数据采集接受的程序,可是最后编译的时候却出现这个情况,把用户名和密码输入到登录界面后,按确定应该进入主界面,可是我电脑上的卡巴斯基报警说有病毒,如下:可是杀毒又杀不了,杀完后它又马上备份生成,难道是我Delphi软件有毒;而且我还把程序考到同学的电脑上去编译,却出现一个对话框,上面是这样的写的:project.exe raised exception class EIdSocketError with message'Socket Error #10049
Cannot assign requested address.'Process stopped.Use step or run to contiune.
望高手指教,该怎么做,不慎感激啊!

解决方案 »

  1.   

    一,可是我电脑上的卡巴斯基报警说有病毒 
    是不是你的杀毒安全级别设置的太高的,外部的任何exe程序卡巴斯基都把它当作病毒处理了。 二,上面是这样的写的:project.exe raised exception class EIdSocketError with message'Socket Error #10049 
    Cannot assign requested address.'Process stopped.Use step or run to contiune.
     产生这个异常,一般是因为你同学电脑上没安装Delphi 的Socket 。
      

  2.   

    小弟的程序如下,大致意思就是接收两个大写字母中间的数据,A××××A,我先用字符长度为1的字符串去接受数据,然后读到第一个大写字母后继续读,从第二个字符开始读一个就向另一个字符数组存一个,直到读到末尾的相同的那个大写字母为止。请各位大哥帮我看看错在什么地方,小弟刚学Delphi,而且现在很急的,希望各位大哥救救我,感激万分啊unit UnitInterFace;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls, Grids, DBGrids, Mask, DBCtrls, DB, ADODB,
      IdBaseComponent, IdComponent, IdTCPServer, IdTCPConnection, IdTCPClient;type
      TForm2 = class(TForm)
        Panel1: TPanel;
        Panel2: TPanel;
        Panel3: TPanel;
        DBGrid1: TDBGrid;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        Label4: TLabel;
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Edit5: TEdit;
        lbl3: TLabel;
        ds1: TDataSource;
        dbedta: TDBEdit;
        dbedtb: TDBEdit;
        dbedtc: TDBEdit;
        dbedtd: TDBEdit;
        dbedte: TDBEdit;
        dbedtf: TDBEdit;
        Label5: TLabel;
        Label6: TLabel;
        IdTCPServer1: TIdTCPServer;
        qry1: TADOQuery;
        tbl1: TADOTable;
        idtcpclnt1: TIdTCPClient;
        procedure IdTCPServer1Execute(AThread: TIdPeerThread);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form2: TForm2;implementationuses Unittable;{$R *.dfm}procedure TForm2.IdTCPServer1Execute(AThread: TIdPeerThread);
    var
      RevData:string;
      buf:array[0..9]of Char;
      X:string;
      i:Integer;
    begin
      with qry1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('select*from Table_Data');
        Open;
      end;  
      i:=0;
      SetLength(RevData,1);
      AThread.Connection.ReadBuffer(RevData,1);
      if RevData='H' then
        AThread.Connection.ReadBuffer(RevData,1);
        while RevData<>'H' do
        begin
          Move(RevData[1],buf[i],1);
          i:=i+1;
          AThread.Connection.ReadBuffer(RevData,1);
        end;
        Setlength(X,i+1);
        Move(buf[0],X[1],i+1);
        Edit5.Text:=X;  if RevData='I' then
        AThread.Connection.ReadBuffer(RevData,1);
        while RevData<>'I' do
        begin
          Move(RevData[1],buf[i],1);
          i:=i+1;
          AThread.Connection.ReadBuffer(RevData,1);
        end;
        Setlength(X,i+1);
        Move(buf[0],X[1],i+1);
        qry1.FieldByName('a').AsString:=X;
        qry1.Post ;  if RevData='J' then
        AThread.Connection.ReadBuffer(RevData,1);
        while RevData<>'J' do
        begin
          Move(RevData[1],buf[i],1);
          i:=i+1;
          AThread.Connection.ReadBuffer(RevData,1);
        end;
        Setlength(X,i+1);
        Move(buf[0],X[1],i+1);
        qry1.FieldByName('b').AsString:=X;
        qry1.Post ;  if RevData='K' then
        AThread.Connection.ReadBuffer(RevData,1);
        while RevData<>'K' do
        begin
          Move(RevData[1],buf[i],1);
          i:=i+1;
          AThread.Connection.ReadBuffer(RevData,1);
        end;
        Setlength(X,i+1);
        Move(buf[0],X[1],i+1);
        qry1.FieldByName('c').AsString:=X;
        qry1.Post ;  if RevData='L' then
        AThread.Connection.ReadBuffer(RevData,1);
        while RevData<>'L' do
        begin
          Move(RevData[1],buf[i],1);
          i:=i+1;
          AThread.Connection.ReadBuffer(RevData,1);
        end;
        Setlength(X,i+1);
        Move(buf[0],X[1],i+1);
        qry1.FieldByName('d').AsString:=X;
        qry1.Post ;  if RevData='M' then
        AThread.Connection.ReadBuffer(RevData,1);
        while RevData<>'M' do
        begin
          Move(RevData[1],buf[i],1);
          i:=i+1;
          AThread.Connection.ReadBuffer(RevData,1);
        end;
        Setlength(X,i+1);
        Move(buf[0],X[1],i+1);
        qry1.FieldByName('e').AsString:=X;
        qry1.Post ;  if RevData='N' then
        AThread.Connection.ReadBuffer(RevData,1);
        while RevData<>'N' do
        begin
          Move(RevData[1],buf[i],1);
          i:=i+1;
          AThread.Connection.ReadBuffer(RevData,1);
        end;
        Setlength(X,i+1);
        Move(buf[0],X[1],i+1);
        qry1.FieldByName('f').AsString:=X;
        qry1.Post ;
    end;procedure TForm2.Button1Click(Sender: TObject);
    var
      SndData:string;
      Len:Integer;
    begin
      SndData:='START';
      Len:=SizeOf(SndData);
      idtcpclnt1.Host :=Edit5.Text ;
      idtcpclnt1.Port :=8080;
      idtcpclnt1.Connect(5000);
     try
      idtcpclnt1.WriteBuffer(SndData[1],Len);
     finally
      idtcpclnt1.Disconnect;
     end;
    end;procedure TForm2.Button2Click(Sender: TObject);
    var
      SndData:string;
      Len:Integer;
    begin
      SndData:='STOP';
      Len:=SizeOf(SndData);
      idtcpclnt1.Host :=Edit5.Text ;
      idtcpclnt1.Port :=8080;
      idtcpclnt1.Connect(5000);
     try
      idtcpclnt1.WriteBuffer(SndData[1],Len);
     finally
      idtcpclnt1.Disconnect;
     end;
    end;procedure TForm2.Button3Click(Sender: TObject);
    begin
      Form3.Show;
    end;end.
      

  3.   

    你用COPY 不可以吗。。
    var
    tempstr,str:string;
    begin
      tempstr:=A××××A;
      str:=copy(tempstr,2,length(tempstr)-2);
    end;
      

  4.   

    问题是怎么让temps正好接受到A××××A,事先并不知道字符串的长度啊,而且数据流还有很多其他数据比如A****AB*******BC******C等等
      

  5.   

    oracle 里有个INSTR函数可以判断一个字符串中满足特定内容的位置,Delphi中怎么判断的忘记了,你搜索一下。