📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls,wininet;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
ListBox1: TListBox;
StatusBar1: TStatusBar;
Label1: TLabel;
Button2: TButton;
Memo1: TMemo;
OpenDialog1: TOpenDialog;
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
proc:tprogressbar; //全局变量
implementation
{$R *.dfm}
//====================== 判断网址是否存在的函数 =======================
function CheckUrl(url: string; TimeOut: integer = 5000): boolean;
var
hSession, hfile, hRequest: hInternet;
dwindex, dwcodelen: dword;
dwcode: array[1..20] of char;
res: pchar;
re: integer;
Err1: integer;
j: integer;
begin
if pos('http://', lowercase(url)) = 0 then
url := 'http://' + url;
Result := false;
InternetSetOption(hSession, Internet_OPTION_CONNECT_TIMEOUT, @TimeOut, 4);
hSession := InternetOpen('Mozilla/4.0', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
//设置超时
if assigned(hsession) then
begin
j := 1;
while true do
begin
hfile := InternetOpenUrl(hsession, pchar(url), nil, 0, INTERNET_FLAG_RELOAD, 0);
if hfile = nil then
begin
j := j + 1;
Err1 := GetLastError;
if j > 5 then break;
if (Err1 <> 12002) or (Err1 <> 12152) then break;
sleep(2);
end
else begin
break;
end;
end;
dwIndex := 0;
dwCodeLen := 10;
HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE, @dwcode, dwcodeLen, dwIndex);
res := pchar(@dwcode);
re := strtointdef(res, 404);
case re of
400..450: result := false; //如果返回400到500消息头,表示文件不存在
else result := true; //否则表示文件存在
end;
if assigned(hfile) then
InternetCloseHandle(hfile);
InternetCloseHandle(hsession);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
begin
for i:=0 to memo1.Lines.Count-1 do
begin
application.ProcessMessages; //防止程序假死
proc.Position:=i;
statusbar1.SimpleText:=(edit1.Text+memo1.Lines.Strings[i]);
if checkurl(edit1.Text+memo1.Lines.Strings[i]) then //调用扫描程序开始扫描
listbox1.items.Add(edit1.Text+memo1.Lines.Strings[i]);
if i=memo1.lines.Count-1 then showmessage('扫描完毕!');
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
proc:=Tprogressbar.Create(self); //创建一个进度条组件
proc.Parent:=statusbar1;
proc.Left:=statusbar1.Panels[0].Width+10;
proc.Top:=5;
proc.Height:=25;
proc.Width:=180; //一定要这句,否则PROC的长度为0,也就是不可见
proc.Min:=0;
proc.Max:=memo1.Lines.Count-1;
proc.Position:=memo1.Lines.Count-1;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.Execute then
memo1.Lines.LoadFromFile(opendialog1.filename); //载入文件
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -