unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, ComCtrls, SPComm, jpeg, Unit2, VaClasses,
VaComm;type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Edit1: TEdit;
Button1: TButton;
Panel1: TPanel;
Panel2: TPanel;
ProgressBar1: TProgressBar;
Label1: TLabel;
Button2: TButton;
Button3: TButton;
Edit2: TEdit;
Label2: TLabel;
SpComm: TComm;
OpenDialog: TOpenDialog;
Image1: TImage;
Label3: TLabel;
Edit3: TEdit;
VaComm: TVaComm;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure VaCommTxEmpty(Sender: TObject);
private
FileHandle, // 文件名柄变量
FileLength, //源文件大小变量
num, //源文件被分割后的文件数目
iBytesRead : integer;
buf1 : integer; //文件缓冲区变量 { Private declarations }
function wFileSize(AFileName:string):integer;
public
{ Public declarations }
end;const
AFileSize=255;
var
Form1: TForm1;implementation//uses Unit2;{$R *.dfm}{procedure BreakFile(FileName:string);
function CopyDataToSmallFile(S:TFileStream;Index:integer):integer;
var
T:TFileStream;
begin
Result:=0;
S.Position:=Index*AFileSize;
if S.Position>=S.Size then EXIT;
T:=TFileStream.Create(Format('%s_%d',[FileName,Index]),fmCreate);
try
Result:=T.CopyFrom(S,AFileSize);
finally
T.Free;
end;
end;
var
S:TFileStream;
Index:integer;
begin
S:=TFileStream.Create(FileName,fmOpenRead or fmShareDenyNone);
try
Index:=0;
while CopyDataToSmallFile(S,Index)=AFileSize do
Inc(Index);
finally
S.Free;
end;
end;
}function TForm1.wFileSize(AFileName:string):integer;
var
F: file of Byte;
begin
try
AssignFile(F,AFileName);
Reset(F);
Result:=FileSize(F);
CloseFile(F); //
FileLength:=Result;
except
Result :=0;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog.Execute then
begin
edit1.Text:=OpenDialog.FileName;
Image1.Picture.LoadFromFile(OpenDialog.FileName);
edit2.Text:=inttostr(wFileSize(OpenDialog.FileName));
end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
Form2.ShowModal;
end;procedure TForm1.Button3Click(Sender: TObject);
var Buffer:array of PChar;
i,temp:integer;
pszBuffer: pChar;
Comming:boolean;
begin
buf1:= AFileSize;
num := Round(FileLength/AFileSize+1);
SetLength(Buffer,num+2);
//ShowMessage(inttostr(num));
temp:=buf1;
ProgressBar1.Max:=num;//设置进度条状态
ProgressBar1.Position:=0;
Comming:=true;
//SpComm.StartComm;
for i:=1 to num do
begin
pszBuffer := PChar(AllocMem(buf1));
try
if i=num then
begin
pszBuffer := PChar(AllocMem(FileLength-buf1*(num-1)));
temp:=FileLength-buf1*(num-1);
end;
FileHandle:=FileOpen(edit1.Text,fmOpenRead);
FileSeek(FileHandle,buf1*(i-1),0);
iBytesRead := FileRead(FileHandle, pszBuffer^, temp); FileClose(FileHandle);
Comming:=VaComm.WriteChar(Char(pszBuffer));
//spcomm.ByteSize:=0;
if not Comming then
//{Pif not spcomm.WriteCommData(pszBuffer,temp) then
begin
ShowMessage('发送错误,终止发送');
//ProgressBar1.Max:=1; ProgressBar1.Position:=0;
break;
end;
ProgressBar1.Position:=i;
sleep(5);
finally
FreeMem(pszBuffer);
end;
end;
//ShowMessage('ok');
end;procedure TForm1.FormCreate(Sender: TObject);
begin
VaComm.Open;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
VaComm.Close;
end;//我不太明白如何拍段缓存区是否空?如何把新的数据放进缓存里?
procedure TForm1.VaCommTxEmpty(Sender: TObject);
begin
if VaComm.WriteBufFree>=1 then
;
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, ComCtrls, SPComm, jpeg, Unit2, VaClasses,
VaComm;type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Edit1: TEdit;
Button1: TButton;
Panel1: TPanel;
Panel2: TPanel;
ProgressBar1: TProgressBar;
Label1: TLabel;
Button2: TButton;
Button3: TButton;
Edit2: TEdit;
Label2: TLabel;
SpComm: TComm;
OpenDialog: TOpenDialog;
Image1: TImage;
Label3: TLabel;
Edit3: TEdit;
VaComm: TVaComm;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure VaCommTxEmpty(Sender: TObject);
private
FileHandle, // 文件名柄变量
FileLength, //源文件大小变量
num, //源文件被分割后的文件数目
iBytesRead : integer;
buf1 : integer; //文件缓冲区变量 { Private declarations }
function wFileSize(AFileName:string):integer;
public
{ Public declarations }
end;const
AFileSize=255;
var
Form1: TForm1;implementation//uses Unit2;{$R *.dfm}{procedure BreakFile(FileName:string);
function CopyDataToSmallFile(S:TFileStream;Index:integer):integer;
var
T:TFileStream;
begin
Result:=0;
S.Position:=Index*AFileSize;
if S.Position>=S.Size then EXIT;
T:=TFileStream.Create(Format('%s_%d',[FileName,Index]),fmCreate);
try
Result:=T.CopyFrom(S,AFileSize);
finally
T.Free;
end;
end;
var
S:TFileStream;
Index:integer;
begin
S:=TFileStream.Create(FileName,fmOpenRead or fmShareDenyNone);
try
Index:=0;
while CopyDataToSmallFile(S,Index)=AFileSize do
Inc(Index);
finally
S.Free;
end;
end;
}function TForm1.wFileSize(AFileName:string):integer;
var
F: file of Byte;
begin
try
AssignFile(F,AFileName);
Reset(F);
Result:=FileSize(F);
CloseFile(F); //
FileLength:=Result;
except
Result :=0;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog.Execute then
begin
edit1.Text:=OpenDialog.FileName;
Image1.Picture.LoadFromFile(OpenDialog.FileName);
edit2.Text:=inttostr(wFileSize(OpenDialog.FileName));
end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
Form2.ShowModal;
end;procedure TForm1.Button3Click(Sender: TObject);
var Buffer:array of PChar;
i,temp:integer;
pszBuffer: pChar;
Comming:boolean;
begin
buf1:= AFileSize;
num := Round(FileLength/AFileSize+1);
SetLength(Buffer,num+2);
//ShowMessage(inttostr(num));
temp:=buf1;
ProgressBar1.Max:=num;//设置进度条状态
ProgressBar1.Position:=0;
Comming:=true;
//SpComm.StartComm;
for i:=1 to num do
begin
pszBuffer := PChar(AllocMem(buf1));
try
if i=num then
begin
pszBuffer := PChar(AllocMem(FileLength-buf1*(num-1)));
temp:=FileLength-buf1*(num-1);
end;
FileHandle:=FileOpen(edit1.Text,fmOpenRead);
FileSeek(FileHandle,buf1*(i-1),0);
iBytesRead := FileRead(FileHandle, pszBuffer^, temp); FileClose(FileHandle);
Comming:=VaComm.WriteChar(Char(pszBuffer));
//spcomm.ByteSize:=0;
if not Comming then
//{Pif not spcomm.WriteCommData(pszBuffer,temp) then
begin
ShowMessage('发送错误,终止发送');
//ProgressBar1.Max:=1; ProgressBar1.Position:=0;
break;
end;
ProgressBar1.Position:=i;
sleep(5);
finally
FreeMem(pszBuffer);
end;
end;
//ShowMessage('ok');
end;procedure TForm1.FormCreate(Sender: TObject);
begin
VaComm.Open;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
VaComm.Close;
end;//我不太明白如何拍段缓存区是否空?如何把新的数据放进缓存里?
procedure TForm1.VaCommTxEmpty(Sender: TObject);
begin
if VaComm.WriteBufFree>=1 then
;
end;end.
解决方案 »
- idhttp怎么不能下载文件部分?
- 用ADO在sqlserver创建用户,并还原数据库怎么作
- delphi如何得到某个文件夹下的文件列表?
- 你们常去的源码站点是什么地方? 贴出来大家分享. 散分
- delphi打开一个空word文档编辑后,怎样把这个编辑的WORD文件存储到access数据库的
- 郁闷
- 怎么撤销表中的字段主键约束,以及怎么把一张表中几个字段都设为主键?用SQL语句实现!急!急!
- 给100分,关于win98屏保的总是,非高手莫进。
- report machine 主从关系报表 问题求救
- auto-creat forms 和 available forms 有什么区别?
- 大家帮助我好急啊....................
- 急!一个关于listbox多选的菜鸟问题!在线等待!
http://www.bluespace.com.cn/koodoo/examples_sms.htm