⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 my_fun.pas

📁 < Delphi网络通信协议分析与应用实现>>一书的源代码。
💻 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 + -