hak88 发表于 2011-1-11 12:47:55

附加数据读取(源码Delphi)

本帖最后由 hak88 于 2011-1-11 12:49 编辑

代码很简单,初学者学习好代码。代码有点像远程控制生成器部分那段
unit uEof;

interface
uses

Windows;

function ReadFile(FileName: String): AnsiString;

function ReadEof(Delimit1, Delimit2 :String) :String;

function WriteEof(FileName, Res, Delimit1, Delimit2 :String) :String;

implementation

function ReadFile(FileName: String): AnsiString;

var

F             :File;

Buffer      :AnsiString;

Size          :Integer;

ReadBytes   :Integer;

DefaultFileMode:Byte;

begin

Result := '';

DefaultFileMode := FileMode;

FileMode := 0;

AssignFile(F, FileName);

Reset(F, 1);

   if (IOResult = 0) then

begin

    Size := FileSize(F);

    while (Size > 1024) do

    begin

      SetLength(Buffer, 1024);

      BlockRead(F, Buffer, 1024, ReadBytes);

      Result := Result + Buffer;

      Dec(Size, ReadBytes);

    end;

    SetLength(Buffer, Size);

    BlockRead(F, Buffer, Size);

    Result := Result + Buffer;

    CloseFile(F);

end;



FileMode := DefaultFileMode;
end;

function ReadEof(Delimit1, Delimit2 :String) :String;
var

Buffer      :AnsiString;

ResLength   :Integer;

i         :Integer;

PosDelimit:Integer;

begin

Buffer := ReadFile(ParamStr(0));

if Pos(Delimit1, Buffer) > Pos(Delimit2, Buffer) then

    PosDelimit := Length(Buffer)-(Pos(Delimit1, Buffer)+Length(Delimit1))

else PosDelimit := Length(Buffer)-(Pos(Delimit2, Buffer)+Length(Delimit2));

Buffer := Copy(Buffer, (Length(Buffer)-PosDelimit), Length(Buffer));

ResLength := Pos(Delimit2, Buffer)-(Pos(Delimit1, Buffer)+Length(Delimit1));

for i := 0 to (Reslength-1) do

    Result := Result+Buffer;

end;

function WriteEof(FileName, Res, Delimit1, Delimit2 :String) :String;
var
       F: TextFile;
begin

AssignFile(F,FileName);

Append(F);
      
Writeln(F,Delimit1+Res+Delimit2);

CloseFile(F);
end;
end.

upring 发表于 2015-4-20 10:57:26

沙发 真不错
页: [1]
查看完整版本: 附加数据读取(源码Delphi)