遇到一个动态数组的问题,找到04年的一个答案,但是测试有问题。

eastzsp 2009-12-26 11:59:07
原帖地址:
http://topic.csdn.net/t/20040421/11/2991208.html

halfdream(哈欠)大侠的答案。我改动了下,加了填充的内容,但是写到文件中的数值是乱码。
我怀疑是TFileStream不支持动态数组。

procedure TForm1.Button1Click(Sender: TObject);
var
buf:array of byte;
fo:TFileStream;
n:integer;
begin
setlength(buf,2000);
for n := 0 to 1999 do
buf[n]:=n;
fo:=TFileStream.Create('d:\a.txt',fmCreate);
n:=fo.Write(buf,2000);
fo.Free;
ShowMessage(intToStr(n));
end;
...全文
104 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
huhuc 2009-12-26
  • 打赏
  • 举报
回复
楼上说的很好了,
Arr[0] PChar(Arr)^都可以,Delphi动态和静态实现是不同的
fhfanxin 2009-12-26
  • 打赏
  • 举报
回复
结贴吧

如果还有剩余的分数,那我也不介意接一点,嘻嘻
qkhhxkj102 2009-12-26
  • 打赏
  • 举报
回复
学习
preserve 2009-12-26
  • 打赏
  • 举报
回复
n:=fo.Write(buf,2000);

中的buf改为buf[0]

动态数组buf其实只是保存了buf[0]的起始地址 所以sizeof(buf)的大小就是指针的大小4
gyk120 2009-12-26
  • 打赏
  • 举报
回复
FileStream.Read(Buffer[0],FILEStream.Size);
ShowMessage(pchar(Buffer));

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧