delphi TFileStream 的读写 合并文件


本文整理自网络,侵删。

 TFileStream 的读写 合并文件
向TFileStream中写入字符串的问题
 sbuff:TString;
 S1:Tfilestream;
 S1.write(sbuff,length(sbuff))是乱码
 S1.write(pChar(sbuff)^,length(sbuff)))是对的~

求解释
 S1.write(sbuff,length(sbuff))为什么不可以
 还有length(sbuff)和sizaof(sbuff)的区别

解答:
两处错误 
1,一定要先为你的string变量t指定长度(分配空间). 
2,串变量t并不代表它分配的内存指针. 

 先SETLENGTH(T,30); 
 再T.READBUFFER(PCHAR(T)^,30); 
 不能用T.READBUFFER(T,30); 
向TFileStream中写入字符串的问题
 sbuff:TString;
 S1:Tfilestream;
 S1.write(sbuff,length(sbuff))是乱码
 S1.write(pChar(sbuff)^,length(sbuff)))是对的~

求解释
 S1.write(sbuff,length(sbuff))为什么不可以
 还有length(sbuff)和sizaof(sbuff)的区别

解答:
两处错误 
1,一定要先为你的string变量t指定长度(分配空间). 
2,串变量t并不代表它分配的内存指针. 

 先SETLENGTH(T,30); 
 再T.READBUFFER(PCHAR(T)^,30); 



//合并文件, 参数是合并后的文件名
function TForm1.MergeFile(const FileName: string): Boolean;
const
 s1 = #13#10#13#10#13#10#13#10;
var
 ms: TMemoryStream; {读取分文件}
 fs: TFileStream;  {合并后的文件}
 path,spliteStr: string;
 i: Integer;
begin
 result := False;
 ms := TMemoryStream.Create;
 fs := TFileStream.Create(FileName, fmCreate);

 try
   for i := 0 to lst1.items.Count - 1 do
   begin
     if i =  0then
      spliteStr := '#' + lst1.items[i] + #13#10#13#10#13#10
     else
      spliteStr := #13#10#13#10#13#10 + '#' + lst1.items[i] + #13#10#13#10#13#10;


     ms.LoadFromFile(pathtemp + lst1.items[i]);
     fs.Write(PChar(spliteStr)^,length(spliteStr));
     fs.Seek(0,soFromEnd);
     fs.CopyFrom(ms, 0)
   end;
   Result := true;
 finally
   ms.Free;
   fs.Free;
 end;
end;

//合并文件, 参数是合并后的文件名
function TForm1.MergeFile(const FileName: string): Boolean;
const
 s1 = #13#10#13#10#13#10#13#10;
var
 ms: TMemoryStream; {读取分文件}
 fs: TFileStream;  {合并后的文件}
 path,spliteStr: string;
 i: Integer;
begin
 result := False;
 ms := TMemoryStream.Create;
 fs := TFileStream.Create(FileName, fmCreate);

 try
   for i := 0 to lst1.items.Count - 1 do
   begin
     if i =  0then
      spliteStr := '#' + lst1.items[i] + #13#10#13#10#13#10
     else
      spliteStr := #13#10#13#10#13#10 + '#' + lst1.items[i] + #13#10#13#10#13#10;


     ms.LoadFromFile(pathtemp + lst1.items[i]);
     fs.Write(PChar(spliteStr)^,length(spliteStr));
     fs.Seek(0,soFromEnd);
     fs.CopyFrom(ms, 0)
   end;
   Result := true;
 finally
   ms.Free;
   fs.Free;
 end;

相关阅读 >>

Delphi下idhttp配合cookiemanager获取cookie

Delphi xe 取得 app 自己的版本号 (狠跨 4 个平台)

Delphi 内存中加载dll

Delphi fmx 图像处理成圆角图像

Delphi 文件大小 显示k kb mb gb tb

Delphi listbox1列表随机打乱

Delphi入门语法

Delphi 用idhttp得到本机外网ip

Delphi 2009 之 tstringbuilder 类[5]: chars[] 属性与 copyto 方法

Delphi打开文件夹并定位到一个文件

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    正在狠努力加载,请稍候...