Delphi ClientDataSet(随机记录)上次记录播放-错误“;在表的开头;
播放表中的最后一条记录时出错-在表的开头如何修复它Delphi ClientDataSet(随机记录)上次记录播放-错误“;在表的开头;,delphi,Delphi,播放表中的最后一条记录时出错-在表的开头如何修复它 procedure TForm1.btnNextClick(Sender: TObject); begin self.ListBox1.ItemIndex := Random(ListBox1.Items.Count) - 0 ; AddALL(); begin ClientDataSet1.RecNo:=Random(ClientDataSet1.RecordCount) - 0; PlayFile(self.exeP
procedure TForm1.btnNextClick(Sender: TObject);
begin
self.ListBox1.ItemIndex := Random(ListBox1.Items.Count) - 0 ;
AddALL();
begin
ClientDataSet1.RecNo:=Random(ClientDataSet1.RecordCount) - 0;
PlayFile(self.exePath + '\' + self.ClientDataSet1.FieldByName('mp3').AsString, MediaPlayer1,Image2);
end
end;
创纪录的数字
客户机数据集支持第二种直接移动到给定数据集的方式
数据集中的记录:设置数据集的RecNo属性。
RecNo是一个基于一的数字,指示
相对于数据集开头的当前记录
您可以读取RecNo属性以确定当前绝对值
记录编号,并写入RecNo属性以设置当前记录。
关于RecNo,需要记住两件重要的事情:
尝试将RecNo设置为小于1的数字,或设置为大于数据集中记录数的数字会导致At
分别为表的开头或表的结尾异常。
任何给定记录的记录编号都不能保证为常量。例如,更改数据集上的活动索引会改变
数据集中所有记录的记录编号
注
您可以通过检查来确定数据集中的记录数
数据集的RecordCount属性。设置RecNo时,切勿尝试
将其设置为高于RecordCount的数字。
请参阅:瓦尔·马里诺夫似乎为您的问题提供了一个很好的答案。我只想补充一点 有些观点不能直接回答你的问题,但可以帮助你避免犯一些错误 你有一些密码
self.ListBox1.ItemIndex := Random(ListBox1.Items.Count)
要使用它将列表框的ItemIndex
设置为随机有效值。关于这一点,有两件事需要麻烦:
1。使用随机
警察说
在Delphi代码中,Random返回0范围内的随机数,读者应该如何知道
AddALL()
的作用?可能是RandomRange(1,ClientDataSet1.RecordCount)
(在uses子句中添加Math
),这样可以避免“0”,我想这会给您带来问题ClientDataSet1.RecNo:=Random(ClientDataSet1.RecordCount)+1
工作,因为当Random返回0时,值为1。但当Random返回RecordCount时,将引发错误,因为该值将是RecordCount+1ClientDataSet1.MoveBy(Random(ClientDataSet1.RecordCount));
0 <= X < 1.
ListBox1.ItemIndex := Trunc(Random(ListBox1.Items.Count));
Dataset.First;
DataSet.MoveBy(Random(X));