📄 my_fun.pas
字号:
unit my_fun;
interface
uses sysutils,inifiles,Dialogs,classes;
type mTRevFile=record//记录接收文件的信息
mReceiving:boolean;//是否正在接收文件数据
mfiletype:string;//文件的类型:商品信息表,员工信息表等
mfileTmpName:string;//下载时的临时文件名
mfilename:string;//下载的文件名
mFileAllsize:integer;//文件大小
mFilesize:integer;//文件已下载多少
mFileThissize:integer;//本次要接收的数据
mFileThissized:integer;//本次已经接收的数据
mFile:file;
end;
type mTSendFile=record
mSending:boolean;//是否正在发送
mfileallsize:integer;//发送文件的大小
mfileSendSize:integer;//已发送文件的大小
mfiletype:string;//发送的文件类型
mfilename:string;//发送的文件名
end;
type mTServerSet=record//服务器设置
mSevDatapath:string;
mCommName:string;
mServername:string;
mStartingTime:Tdatetime;
mIdleTime:TDatetime;//闲置时间
mCurClientStime:Tdatetime;
end;
type mTClientSet=record //客户端设置
mCltDataPath:string;
mDialNum:string;
mCommName:string;
mClientName:string;
mClientFdid:string;
mIdleTime:TDatetime;//闲置时间
mStarttime:Tdatetime;
end;
type mTmycommStat=record
server:boolean;
end;
//type mTServerState=record //接收程序的状态
// mState:integer;
//end;
const gCmdHead=chr(27)+'%'+Chr(27);//该字符串后面跟着的是协议命令
const gCmdTail=chr(27)+'.'+chr(27);//
const gCmdGetSpxx='spxx.db';
const gCmdFileLen='FileLen';
const gCmdRsponse='OKOK';
const conHanding=1;
const conReceiving=2;
const conRevFilename=3;
const conRevFileSize=4;
var
mySendfile1:mTsendfile;
myRevfile1:mTrevfile;
// myServerState:mTserverState;
myServerSet:mTserverset;
myClientSet:mTClientSet;
//procedure mySendfile();
function Appendtofile1(filename:string;dataStr:string):integer;
//分析命令及参数
function AnalyzeCmd(cmdValstr:string;var cmdStr:string;var Valstr:string):boolean;
function GetFileLen(filename:string):integer;
function InitRead2(msection:string;mitem:string;mDefVal:string):string;
function InitSave2(msection:string;mitem:string;mvalue:string):boolean;
function mySearchFile(srstr:string):tstringlist;
implementation
function Appendtofile1(filename:string;dataStr:string):integer;
var
filelen1,i:integer;
NumRead, NumWritten,datalen: Integer;
FileHandle: Integer;
begin
if not fileexists(filename) then
begin //如果文件不存在
Appendtofile1:=0;
exit;
end;
assignfile(myrevfile1.mfile,filename);
reset(myrevfile1.mfile,1);
seek(myrevfile1.mfile,FileSize(myrevfile1.mfile));
datalen:=length(datastr);
for i:=1 to datalen do
begin
BlockWrite(myrevfile1.mfile,datastr[i],1,NumWritten);
end;
filelen1:=filesize(myrevfile1.mfile);
close(myrevfile1.mfile);
Appendtofile1:=filelen1;
end;
function AnalyzeCmd(cmdValstr:string;var cmdStr:string;var Valstr:string):boolean;
var
tmpstr:string;
pos1:integer;
begin
pos1:=pos('=',cmdvalstr);
if (pos1>0) and (pos1<>length(cmdvalstr)+1) then
begin
cmdstr:=copy(cmdvalstr,1,pos1-1);
valstr:=copy(cmdvalstr,pos1+1,length(cmdvalstr)-pos1);
end
else
begin
cmdstr:=cmdvalstr;
end;
AnalyzeCmd:=true;
end;
function GetFileLen(filename:string):integer;
var
sr: TSearchRec;
FileAttrs: Integer;
begin
fileattrs:=$0000003F;
if FindFirst(filename, FileAttrs, sr) = 0 then
begin
if (sr.Attr and FileAttrs) = sr.Attr then
begin
getfilelen:=sr.Size;
end
else
begin
getfilelen:=0;
end;
FindClose(sr);
end
else
begin
getfilelen:=0;
end;
end;
function InitSave2(msection:string;mitem:string;mvalue:string):boolean;
var
myinifile:Tinifile;
begin
myinifile:=Tinifile.Create('ini\mymodem.ini');
with myinifile do
begin
writestring(msection,mitem,mvalue);
end;
myinifile.Free;
InitSave2:=true;
end;
function InitRead2(msection:string;mitem:string;mDefVal:string):string;
var
mRetValue:string;
myinifile:Tinifile;
begin
myiniFile:=Tinifile.Create('ini\mymodem.ini');
mRetValue:=myinifile.ReadString(msection,mitem,mDefVal);
InitRead2:=mRetValue;
end;
function mySearchFile(srstr:string):tstringlist;
var
sr: TSearchRec;
FileAttrs: Integer;
mDir,msql:string;
filelist:Tstringlist;
i:integer;
begin
filelist:=tstringlist.create;
FileAttrs:=faAnyFile;
mDir:='';
if FindFirst(srstr, FileAttrs, sr) = 0 then
begin
filelist.add(sr.Name);
while FindNext(sr) = 0 do
begin
filelist.add(sr.Name);
end;
FindClose(sr);
end;
mySearchFile:=filelist;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -