我有个dat文件,里面有乱码,memo直接loadfromfile后什么都显示不了,用记事本打开dat文件后里面的内容也不能全部复制出来,我用如下代码也只能取得一行字符,之后的也取不出来。请各位帮忙
var
Buffer: PChar;
MemSize: Integer;
Stream: TFileStream;
begin
Stream := TFileStream.Create('d:\Blacklist.dat', fmOpenRead);
try MemSize := Stream.Size;
Inc(MemSize);
Buffer := AllocMem(MemSize);
try
Stream.Read(Buffer^, MemSize);
memo1.SetTextBuf(Buffer); finally
FreeMem(Buffer, MemSize);
end;
finally
Stream.Free;
end;end;
var
Buffer: PChar;
MemSize: Integer;
Stream: TFileStream;
begin
Stream := TFileStream.Create('d:\Blacklist.dat', fmOpenRead);
try MemSize := Stream.Size;
Inc(MemSize);
Buffer := AllocMem(MemSize);
try
Stream.Read(Buffer^, MemSize);
memo1.SetTextBuf(Buffer); finally
FreeMem(Buffer, MemSize);
end;
finally
Stream.Free;
end;end;
可惜,你不知它的Record是如何定义的
X = record
//这里是如何定义的
end;就OK了
TMember = record
filename: string[255];
hpzl: string[255];
cd: string[255];
hphm: string[255];
wfsj: string[255];
cs: string[255];
xs: string[255];
end;
我知道那是如何定义的,关键是我执行到Read(f, aMember);就报I/O错误
Stream: TFileStream;
begin
Stream := TFileStream.Create('d:\Blacklist.dat', fmOpenRead);
Stream.Position:=0;
memo1.Lines.LoadFromStream(Stream);
Stream.Free;
end;
MyFile: File of Tmember;
Mymembers: Tmember;
begin
Memo2.Clear;
AssignFile(MyFile, GetSysPath+'MyBin.dat');
Reset(MyFile);
try
while not Eof(MyFile) do
begin
read(MyFile, Mymembers);
Memo2.Lines.Add(Mymembers.FileName);
//....
end;
finally
CloseFile(MyFile);
end;
end;