Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi ClientDataSet(随机记录)上次记录播放-错误“;在表的开头;_Delphi - Fatal编程技术网

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));