请大家帮我解释一下下面的代码越细越好,或者有什么错误 怎么改正,大家费心了
procedure streamopreate();
var
stm:TFileStream;
i, l, n: Integer;
s: string;
begin
stm := tfilestream.create(extractfilepath(paramstr(0))+'emails\'+file+'.dat', fmOpenRead);
try
stm.readbuffer(n, sizeof(integer));
for i := 0 to n - 1 do
begin
stm.readbuffer(l, sizeof(integer));
setlength(s, l);
if l > 0 then
stm.readbuffer(s[1], l);
add(s);
end;
except
end;
end;
procedure streamopreate();
var
stm:TFileStream;
i, l, n: Integer;
s: string;
begin
stm := tfilestream.create(extractfilepath(paramstr(0))+'emails\'+file+'.dat', fmOpenRead);
try
stm.readbuffer(n, sizeof(integer));
for i := 0 to n - 1 do
begin
stm.readbuffer(l, sizeof(integer));
setlength(s, l);
if l > 0 then
stm.readbuffer(s[1], l);
add(s);
end;
except
end;
end;
将这n个字符串从文件中读出来
然后进行操作(add(s));
var
stm:TFileStream; 定义一个流文件
i, l, n: Integer;
s: string;
begin
stm := tfilestream.create(extractfilepath(paramstr(0))+'emails\'+file+'.dat', fmOpenRead); //创建流文件,extractfilepath得到文件的路径,paramstr从命令行返回制定的参数(paramstr(0)返回文件路径和文件名)
try //异常的开始
stm.readbuffer(n, sizeof(integer));读缓冲取区的数据流
for i := 0 to n - 1 do //循环
begin
stm.readbuffer(l, sizeof(integer));
setlength(s, l);//为数组分配长度
if l > 0 then
stm.readbuffer(s[1], l);
add(s); //增加字符串
end;
except //异常的处理
end;
end;