又一个奇怪的问题! 先看看在说!(50分)

  • 主题发起人 主题发起人 6713829
  • 开始时间 开始时间
6

6713829

Unregistered / Unconfirmed
GUEST, unregistred user!
var<br> &nbsp;Form1: TForm1;<br> &nbsp;buffer:array of char;<br><br>implementation<br><br>{$R *.dfm}<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>Var<br> &nbsp;buffer:array of char;<br>Begin<br>For I:=0 To 1 Do<br>Begin<br>setlength(buffer,Leng);<br>End;<br>End;<br>报错,<br>错误在setlength(buffer,Leng);这里,<br>设置第一次长度没有报错,在第二次设置长度时报错!!!<br><br>那位大侠帮忙解决啊?!!!!!
 
當然會報錯啦,不報錯才怪,動態數組只能在運行的時候設置一次數組的長度,如果你總是不停的變換數組的長度,你數組到底是幾個單元啊?<br>也就是說你應該在循環之前設定你的數組長度,而且只能設定一次。除非你是二維數組的話,就可以用循環為每個二維數組設定一次。
 
当第一次给动态数组设置了长度后,动态数组就成了静态了,肯定无法设第二次了...
 
设定几次都不会出问题:<br>var<br> &nbsp;Form1: TForm1;<br>implementation<br><br>{$R *.dfm}<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br> &nbsp;buffer: array of char;<br> &nbsp;i: integer;<br>begin<br> &nbsp;for I := 1 to 5 do<br> &nbsp;begin<br> &nbsp; &nbsp;setlength(buffer, i);<br> &nbsp; &nbsp;showmessage('第' + inttostr(i) + '次设定,没问题');<br> &nbsp;end;<br><br>end;<br><br>end.<br><br>你的代码本身就没什么问题,估计是你的Leng参数有问题才对
 
请问gaobangsheng,jxgxy,那有没有办法让《數組》成为动态啊?<br>我做的是一个文件读取的,当读到最后一快不足1024Bys时,需要改变《數組》的大小啊!<br>但是我不知道怎么办啊!<br><br>如果分不够我可以在加!
 
我明白你的意思!<br>但是这个《數組》属于一个类里面的,用socket一起发出去,但是感觉多一个总是不好。你们经验多,有没有更简单的方法了?
 
你是說要讀取文件到數組中嗎?<br>具體我也不知道你是什麼意思,不過如果是讀文件的話,可以首先計算出文件的大小啊!(這個在文件的操作中應該有)<br>然後再確定這個數組的長度啊!
 
谢谢了,只能这样了!
 
后退
顶部