本帖最后由 limee 于 2020-4-8 13:38 编辑
// 我想把文件分割成10MB每一个的大小,编译能够通过。
// 运行的结果不对。
// 请教哪里错了啊?
{$APPTYPE CONSOLE}
Uses
SysUtils,Classes,Variants ;
function SplitFile(const FileName: string; Size: Cardinal): Boolean;
var
fStream: TFileStream; {原始文件}
toStream: TMemoryStream; {分文件}
p,i: Integer; {p 记录当前指针位置; i 记录这是第几个分的文件}
begin
Result := False;
Size := Size * 1024; {把大小的单位转换为字节}
fStream := TFileStream.Create(FileName, fmOpenRead);
p := 0;
i := 0;
toStream := TMemoryStream.Create;
while p < fStream.Size do
begin
toStream.Clear; {清空上次数据}
fStream.Position := p; {放好指针位置}
if fStream.Size-p < Size then Size := fStream.Size-p; {最后一个时, 有多少算多少}
toStream.CopyFrom(fStream, Size); {复制}
toStream.SaveToFile(FileName + '.' + IntToStr(i)); {保存}
Inc(i);
p := p + Size;
end;
fStream.Free;
toStream.Free;
Result := True;
end;
var
infile:string = 'Asahi.wav';
begin
// infile
SplitFile(infile,10*1024*1024); // 分割成10MB的大小
end.
|
没用过Delphi,帮顶