📄 netmodal.~pas
字号:
unit NetModal;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, TFlatProgressBarUnit, ScktComp, TFlatGaugeUnit, ExtCtrls;
type
TNetModalForm = class(TForm)
ClientSocket: TClientSocket;
Panel1: TPanel;
Label1: TLabel;
ProgressBar: TFlatGauge;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ClientSocketConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
private
ConfigList:TStringList;
CurCmd:String;
Curdir:String;
GetFile:TFileStream;
FileCount:Integer;
{ Private declarations }
public
{ Public declarations }
end;
var
NetModalForm: TNetModalForm;
implementation
{$R *.DFM}
procedure TNetModalForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
//Action:=caFree;
end;
procedure TNetModalForm.ClientSocketConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
ClientSocket.Socket.SendText('GetSize');
GetFile:=TFileStream.Create(Curdir+'.\vod.gdb',fmCreate);
CurCmd:='GetSize';
end;
procedure TNetModalForm.ClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
var
Count:Integer;
Buf:PChar;
begin
if CurCmd='GetData' then
begin
if FileCount-GetFile.Position>1024 then
begin
GetMem(Buf,1025);
Socket.ReceiveBuf(Buf^,1024);
GetFile.Write(buf^,1024);
ProgressBar.Progress:=ProgressBar.Progress+1024;
Update;
end
else
begin
GetMem(Buf,FileCount-GetFile.Position+1);
Socket.ReceiveBuf(Buf^,FileCount-GetFile.Position);
GetFile.Write(buf^,FileCount-GetFile.Position);
ProgressBar.Progress:=FileCount;
end;
FreeMem(Buf);
if GetFile.Position+1024<FileCount then
Socket.SendText('GetData|'+IntToStr(GetFile.Position)+'|'+IntToStr(GetFile.Position+1024))
else
if GetFile.Position<FileCount then
Socket.SendText('GetData|'+IntToStr(GetFile.Position)+'|'+IntToStr(FileCount))
else
begin
GetFile.Free;
Close;
end;
end;
if CurCmd='GetSize' then
begin
FileCount:=StrToInt(Socket.ReceiveText);
ProgressBar.MaxValue:=FileCount;
ProgressBar.MinValue:=0;
ProgressBar.Progress:=0;
CurCmd:='GetData';
Socket.SendText('GetData|0|1024');
end;
end;
procedure TNetModalForm.FormCreate(Sender: TObject);
begin
Curdir:=ExtractFilePath(Application.ExeName);
ConfigList:=TStringList.Create;
ConfigList.LoadFromFile(Curdir+'.\config.ini');
end;
procedure TNetModalForm.FormShow(Sender: TObject);
begin
ClientSocket.Address:=ConfigList.Values['IP'];
ClientSocket.Active:=true;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -