本文整理自网络,侵删。
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》频道 >>