鱼C论坛

 找回密码
 立即注册
查看: 2229|回复: 6

delphi编译出现怪问题

[复制链接]
发表于 2014-3-18 16:19:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
编译和链接都没问题,运行出现下图错误提示C:\Users\root\Desktop(请各位高手指点一下这应该怎么改):
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-18 16:26:20 | 显示全部楼层
‘’不是有效的整型数值

没代码,帮不了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-18 17:16:36 | 显示全部楼层

(代码如下,小甲鱼的那个扫描器,自己写几次都有错,这次把小甲鱼源代码全搬上还是出现问题,先谢谢了)
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, StdCtrls, ComCtrls, ScktComp;

type
  TForm1 = class(TForm)
    img1: TImage;
    lbl1: TLabel;
    edt1: TEdit;
    lbl2: TLabel;
    edt2: TEdit;
    lbl3: TLabel;
    edt3: TEdit;
    lbl4: TLabel;
    edt4: TEdit;
    pnl1: TPanel;
    pnl2: TPanel;
    pnl3: TPanel;
    lst1: TListBox;
    pb1: TProgressBar;
    lbl5: TLabel;
    lbl6: TLabel;
    lbl7: TLabel;
    tmr1: TTimer;
    clntsckt1: TClientSocket;
    procedure FormCreate(Sender: TObject);
    procedure pnl2Click(Sender: TObject);
    procedure tmr1Timer(Sender: TObject);
    procedure pnl3Click(Sender: TObject);
    procedure clntsckt1Connect(Sender: TObject; Socket: TCustomWinSocket);
    procedure clntsckt1Disconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure pnl1Click(Sender: TObject);
    procedure clntsckt1Error(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  img1.Top:=0;
  img1.Left:=0;
end;

procedure TForm1.pnl2Click(Sender: TObject);
begin
  if Edt1.Text = '' then
    showmessage('请输入IP')
  else if Edt2.Text = '' then
    showmessage('请输入端口')
  else if Edt3.Text = '' then
    showmessage('请输入端口')
  else if Edt4.Text = '' then
    showmessage('请输入扫描速率')
  else
    begin
      if pnl2.Caption = '停止' then
        begin
          tmr1.Enabled:= False;
          clntsckt1.Port:= StrToInt(Edt2.Text);
          pnl2.caption:= '扫描';
          pb1.step:= 0;
          edt1.enabled:= True;
          Edt2.enabled:= True;
          Edt3.enabled:= True;
          Edt4.Enabled:= True;
          pnl2.Color:= clNavy;
          pnl1.visible:= False;
        end

      else
        begin
          pb1.StepBy(-(StrToInt(Edt3.Text)));
          Clntsckt1.Port:= StrToInt(Edt2.Text);
          Lst1.Items.Clear;
          Lbl7.caption:= Edt2.Text;
          pb1.Min:= 0;
          pb1.Max:= ((StrToInt(Edt3.Text))-(StrToInt(Edt2.Text)));;
          Tmr1.Interval:= StrToInt(Edt4.Text);
          Edt1.enabled:= False;
          Edt2.enabled:= False;
          Edt3.enabled:= False;
          Edt4.Enabled:= False;

          Tmr1.Enabled:= True;
          Pnl2.Caption:= '停止';
          Pnl2.Color:= clRed;
        end;
    end;  
end;

procedure TForm1.tmr1Timer(Sender: TObject);
var
  s,d:Integer;
begin
  if clntsckt1.Port = StrToInt(Edt3.Text) then
    begin
      Tmr1.Enabled:= False;
      Pnl2.Caption:= '扫描';
      Edt1.enabled:= True;
      Edt2.enabled:= True;
      Edt3.enabled:= True;
      Edt4.Enabled:= True;
      Pnl2.Color:= clNavy;
      Pnl1.visible:= False;
    end
  else
      begin
        if clntsckt1.Port = StrToInt(lbl7.caption) then
          begin
            d:= clntsckt1.Port + 1;
            lbl7.Caption:= IntToStr(d);
            s:= StrToInt(lbl7.caption);
            clntsckt1.address:= Edt1.Text;
            clntsckt1.Port:= s;
            clntsckt1.open;
            pnl3.Visible:= True;
            pb1.StepBy(1);
          end;
      end;
end;

procedure TForm1.pnl3Click(Sender: TObject);
begin
  Application.Terminate;
end;

procedure TForm1.clntsckt1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
   lst1.Items.Add('Port:' + IntToStr(clntsckt1.port));
   clntsckt1.Close;

  if Edt3.Text = Lbl7.Caption then
    Tmr1.Enabled:= False;
end;

procedure TForm1.clntsckt1Disconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  tmr1.Enabled:= True;
end;

procedure TForm1.pnl1Click(Sender: TObject);
begin
  if Pnl1.Caption = '恢复扫描' then
    begin
      Tmr1.Enabled:= True;
      if Tmr1.Enabled = True then
      Pnl1.caption:= '暂停扫描';
      Pnl3.Color:= clyellow;
    end
  else
    begin
      Tmr1.Enabled:= False;
      Pnl3.caption:= '恢复扫描';
      Pnl3.Color:= cllime;
      pb1.step:= 0;
    end;
end;

procedure TForm1.clntsckt1Error(Sender: TObject; Socket: TCustomWinSocket;
  ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
  ErrorCode:=0;
end;

end.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-3-18 19:03:33 | 显示全部楼层
应该是哪个StrToInt转换出现,把非数字的字符串进行转换了,因为EConvertError是字符串对象转换错误异常类
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-19 15:44:31 | 显示全部楼层
comeheres 发表于 2014-3-18 19:03
应该是哪个StrToInt转换出现,把非数字的字符串进行转换了,因为EConvertError是字符串对象转换错误异常类

(开始时把每一个StrToInt部分都用Try...Expect来捕捉没有作用,然后我把每个部分都加提示类捕捉(下面代码蓝色部分)都没有任何效果,请高手指点一下,先谢了)


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, StdCtrls, ComCtrls, ScktComp;

type
  TForm1 = class(TForm)
    img1: TImage;
    lbl1: TLabel;
    edt1: TEdit;
    lbl2: TLabel;
    edt2: TEdit;
    lbl3: TLabel;
    edt3: TEdit;
    lbl4: TLabel;
    edt4: TEdit;
    pnl1: TPanel;
    pnl2: TPanel;
    pnl3: TPanel;
    lst1: TListBox;
    pb1: TProgressBar;
    lbl5: TLabel;
    lbl6: TLabel;
    lbl7: TLabel;
    tmr1: TTimer;
    clntsckt1: TClientSocket;
    procedure FormCreate(Sender: TObject);
    procedure pnl2Click(Sender: TObject);
    procedure tmr1Timer(Sender: TObject);
    procedure pnl3Click(Sender: TObject);
    procedure clntsckt1Connect(Sender: TObject; Socket: TCustomWinSocket);
    procedure clntsckt1Disconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure pnl1Click(Sender: TObject);
    procedure clntsckt1Error(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  img1.Top:=0;
  img1.Left:=0;
end;

procedure TForm1.pnl2Click(Sender: TObject);
begin
try

  if Edt1.Text = '' then
    showmessage('请输入IP')
  else if Edt2.Text = '' then
    showmessage('请输入端口')
  else if Edt3.Text = '' then
    showmessage('请输入端口')
  else if Edt4.Text = '' then
    showmessage('请输入扫描速率')
  else
    begin
      if pnl2.Caption = '停止' then
        begin
          tmr1.Enabled:= False;
          clntsckt1.Port:= StrToInt(Edt2.Text);
          pnl2.caption:= '扫描';
          pb1.step:= 0;
          edt1.enabled:= True;
          Edt2.enabled:= True;
          Edt3.enabled:= True;
          Edt4.Enabled:= True;
          pnl2.Color:= clNavy;
          pnl1.visible:= False;
        end

      else
        begin
          pb1.StepBy(-(StrToInt(Edt3.Text)));
          Clntsckt1.Port:= StrToInt(Edt2.Text);
          Lst1.Items.Clear;
          Lbl7.caption:= Edt2.Text;
          pb1.Min:= 0;
          pb1.Max:= ((StrToInt(Edt3.Text))-(StrToInt(Edt2.Text)));;
          Tmr1.Interval:= StrToInt(Edt4.Text);
          Edt1.enabled:= False;
          Edt2.enabled:= False;
          Edt3.enabled:= False;
          Edt4.Enabled:= False;

          Tmr1.Enabled:= True;
          Pnl2.Caption:= '停止';
          Pnl2.Color:= clRed;
        end;
    end;
except
  on ECONVERTERROR do
  showmessage('这里出错1');
end;
end;

procedure TForm1.tmr1Timer(Sender: TObject);
var
  s,d:Integer;
begin
try
  if clntsckt1.Port = StrToInt(Edt3.Text) then
    begin
      Tmr1.Enabled:= False;
      Pnl2.Caption:= '扫描';
      Edt1.enabled:= True;
      Edt2.enabled:= True;
      Edt3.enabled:= True;
      Edt4.Enabled:= True;
      Pnl2.Color:= clNavy;
      Pnl1.visible:= False;
    end
  else
      begin
        if clntsckt1.Port = StrToInt(lbl7.caption) then
          begin
            d:= clntsckt1.Port + 1;
            lbl7.Caption:= IntToStr(d);
            s:= StrToInt(lbl7.caption);
            clntsckt1.address:= Edt1.Text;
            clntsckt1.Port:= s;
            clntsckt1.open;
            pnl3.Visible:= True;
            pb1.StepBy(1);
          end;
      end;
except
  on ECONVERTERROR do
  showmessage('这里出错2');
end;
end;

procedure TForm1.pnl3Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.clntsckt1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
try

   lst1.Items.Add('Port:' + IntToStr(clntsckt1.port));
   clntsckt1.Close;

  if Edt3.Text = Lbl7.Caption then
    Tmr1.Enabled:= False;
except
  on ECONVERTERROR do
  showmessage('这里出错3');
end;
end;

procedure TForm1.clntsckt1Disconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  tmr1.Enabled:= True;
end;

procedure TForm1.pnl1Click(Sender: TObject);
begin
try
  if Pnl1.Caption = '恢复扫描' then
    begin
      Tmr1.Enabled:= True;
      if Tmr1.Enabled = True then
      Pnl1.caption:= '暂停扫描';
      Pnl3.Color:= clyellow;
    end
  else
    begin
      Tmr1.Enabled:= False;
      Pnl3.caption:= '恢复扫描';
      Pnl3.Color:= cllime;
      pb1.step:= 0;
    end;
except
  on ECONVERTERROR do
  showmessage('这里出错4');
end;
end;

procedure TForm1.clntsckt1Error(Sender: TObject; Socket: TCustomWinSocket;
  ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
try

  ErrorCode:=0;
except
  on ECONVERTERROR do
  showmessage('这里出错5');
end;
end;

end.

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-3-19 17:05:35 | 显示全部楼层
geng静修 发表于 2014-3-19 15:44
(开始时把每一个StrToInt部分都用Try...Expect来捕捉没有作用,然后我把每个部分都加提示类捕捉(下面代 ...

源码打包发上来吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-19 21:40:50 | 显示全部楼层
comeheres 发表于 2014-3-19 17:05
源码打包发上来吧。

谢谢了,解决了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 08:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表