Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >ClientDataSet(随机记录)最后一次记录播放错误“在表的开头”

ClientDataSet(随机记录)最后一次记录播放错误“在表的开头”
EN

Stack Overflow用户
提问于 2017-05-10 02:29:09
回答 2查看 1.2K关注 0票数 1

在播放表中的最后一条记录时发生了一个错误--在表的开头,如何修复它。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-10 04:57:25

瓦尔·马里诺夫似乎对你的问题给出了很好的答案。

我只想补充一些不直接回答你的问题,但可能会帮助你避免犯一些错误。

你有一些代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
self.ListBox1.ItemIndex := Random(ListBox1.Items.Count)

将列表框的ItemIndex设置为随机的有效值。有几件事在这方面引起了麻烦:

1.使用Random 的错误方式

function

在Delphi代码中,随机在0 <= X< Range范围内返回一个随机数。如果未指定范围,则结果是范围内的实型随机数。 0 <= X< 1。

对于ListBox,有效ItemIndex值的范围是0..Items.Count - 1。但是Random可以返回一个小数部分,因此编写所需内容的更好方法是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ListBox1.ItemIndex := Trunc(Random(ListBox1.Items.Count));

这样调用,Random将返回低于ListBox1.Items.Count的值,而对Trunc的调用将丢弃小数部分。

2.不必要地使用self**.**

您的代码中有大量的self限定符。必须这样使用self通常是糟糕或草率编码的标志。

TForm1.AddALL中,第一行中的self告诉编译器,您所引用的ListBox1实例是TForm1上的TListBox组件,而不是编译该行时可能在范围内的其他ListBox1变量(例如,名为ListBox1的全局变量)。但是,避免这个问题的方法是首先避免在范围内使用其他ListBox1

我建议您只删除self.的所有实例,因为您不应该需要它们。

3.避免设置数据集RecordNumber

最后,不要习惯于依赖于TClientDataSet允许您为RecordNumber指定值这一事实,这很少是一个好主意,而且很少有数据集类型支持它。

如果你想去一个随机记录,最好使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Dataset.First;
DataSet.MoveBy(Random(X));

我让您根据在线帮助对Random的看法,找出Random的论点是什么,移动到有效的、随机的、记录中。

票数 2
EN

Stack Overflow用户

发布于 2017-05-10 03:09:50

记录号码 客户端数据集支持直接移动到dataset中给定记录的第二种方法:设置数据集的RecNo属性。RecNo是一个基于一个的数字,指示当前记录相对于数据集开头的顺序编号。 您可以读取RecNo属性以确定当前绝对记录号,还可以写入RecNo属性来设置当前记录。对于RecNo,有两件重要的事情要记住: 试图将RecNo设置为小于1的数字,或设置为大于数据集中记录数的数字,结果分别是在表的开头处或表的末尾出现异常。 任何给定记录的记录编号都不能保证为常量。例如,更改dataset上的活动索引会更改数据集中所有记录的记录数。 备注 您可以通过检查数据集的RecordCount属性来确定数据集中的记录数。设置RecNo时,不要尝试将其设置为高于RecordCount.的数字。

请参阅:RecNo.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43889873

复制
相关文章
记录一次在docker构建镜像时的错误
具体错误是在Dockerfile文件执行到第三步时候出的错,此时你去问度娘,大多数都会告诉你Dockerfile的路径不能是**../父类目录,需要放在上一层之类的**,这样做虽然也可以避免错误,能正常执行。
晓果冻
2022/09/08
1.4K0
记录一次在docker构建镜像时的错误
记录一次SpringBoot Autowired为null的错误
经排查 发现我忘记改动代码 SiteJob s = new SiteJob();
heasy3
2020/08/02
1.5K0
顾客最后消费记录问题
小勤:大海,为提高顾客服务体验,公司现在要求除了将顾客的所有消费记录提出来外,还要求将顾客的最后一次消费记录提取出来,发给现场的销售人员,方便他们提供更好的服务。
大海Power
2021/08/30
4210
真实的记录一次Python接单记录
https://blog.csdn.net/lland5201314/article/details/117606268
sergiojune
2021/09/29
8140
错误记录
ERROR in Error encountered resolving symbol values statically. Function calls are not supported. Consider replacing the function or lambda with a reference to an exported function (position 25:39 in the original .ts file), resolving symbol AppModule in C:/
杭州前端工程师
2018/06/14
5610
SQLserver 存储过程执行错误记录到表
对于在执行存储过程中碰到的一些错误,如果未及时捕获或者说传递给前端应用程序来,在这样的情形下,故障的排查显得尤为困难。基于此,我们可以可以将这些错误信息记录到日志,同时也可以将其传递给前端应用程序。如本文的示例。 一、将错误信息记录到表 CREATE TABLE ErrorLog ( ID INT IDENTITY (1,1) NOT NULL, ErrorNumber INT, ErrorMessage VARC
Leshami
2018/08/13
1.2K0
SQLserver 存储过程执行错误记录到表
记录一次ajax 429请求laravel api的错误[通俗易懂]
频率限制经常用在API中,用于限制独立请求者对特定API的请求频率。例如,如果设置频率限制为每分钟1000次,如果一分钟内超过这个限制,那么服务器就会返回 429: Too Many Attempts.响应。
全栈程序员站长
2022/07/12
2.1K0
记录一次ajax 429请求laravel api的错误[通俗易懂]
记录一次MySQL大表拆分和迁移
最近遇到一个关于MySQL单表过大的问题,该表存放的主要是日志文件,且其中有一个字段存放的数据过大,导致占用空间过大以及查询效率的降低,这种设计其实是不合理的。目前该表占用1.2T容量,数据量超过3亿条,而这个RDS数据库的容量总共就2T,且由于种种原因无法扩容,迫不得已急需给出解决方案。
素履coder
2022/10/28
1.4K0
docker 错误记录
windows和Linux的换行符存在差异,Windows下写的脚本拷贝到Linux系统,会导致#!/bin/bash后面多个^M,因此提示找不到文件。
luoheng
2022/08/29
4030
简单错误记录
题目描述 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。 处理: 1.记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配)只记录一条,错误计数增加;(文件所在的目录不同,文件名和行号相同也要合并) 2.超过16个字符的文件名称,只记录文件的最后有效16个字符;(如果文件名不同,而只是文件名的后16个字符和行号相同,也不要合并) 3.输入的文件可能带路径,记录文件名称不能带路径
AI那点小事
2020/04/20
5480
Kafka 错误记录
从这两行提示信息来看,应该是内存不够,经过百度,发现是kafka默认启动内存是1G, 而JVM默认内存也是1G, JVM自然不能所有内存都分配给kafka, 所以kafka就启动不了,解决方法是把kafka的最小启动内存设置为小于1G的值,即把kafka-server-start.sh中把’export KAFKA_HEAP_OPTS=”-Xmx1G -Xms1G”‘中的Xms设置为256M, 这样,kafka最小只需要256M即可启动。
郭顺发
2023/07/17
6040
Jenkins错误记录
1. 2018.5新下载的jenkins,启动tomcat必须使用jdk8 2. 启动后提示无法连接,原因是jenkins不知道从系统什么地方检索到了代理配置,连不上,去掉代理 3. 启动后插件错误,进入系统管理,可更新插件,最下边点击全选,选择下载下次重启安装,等待下载完成后重启。
用户2187945
2018/06/27
4010
Oracle 错误记录
郭顺发
2023/07/07
1660
Redis 错误日志记录
日志描述:(错误)misconf redis被配置以保存数据库快照,但misconf redis目前不能在硬盘上持久化。用来修改数据集合的命令不能用,请使用日志的错误详细信息。
郭顺发
2023/07/07
2.1K0
mysql查找最后一条记录_mysql查询记录总数
首先要确定什么是最后一条。 是编辑时间最新的为最后一条,还是某个字段数字最大的未最后一条。 比如以时间最大为最后一条,则将符合条件的资料都筛选出来,再按时间排序,再取一笔资料。 SQL如下:
全栈程序员站长
2022/10/04
6.8K0
【错误记录】Android 内存泄漏 错误排查记录 ( FinalizerReference 内存泄漏 )
【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )
韩曙亮
2023/03/27
1K0
【错误记录】Android 内存泄漏 错误排查记录 ( FinalizerReference 内存泄漏 )
经验总结 | 记录一次Docker下安装CTFd的错误
经过多次查询后,是因为版本问题导致,因此需要将原来的docker-compose版本卸载,安装新版本。
TeamsSix
2019/09/24
2.5K0
经验总结 | 记录一次Docker下安装CTFd的错误
工作记录二: 记录一次简单的SQL优化过程
对应的controller方法如下,可以看到该方法将request的storeId设置为空, 下面又调用listCateByStoreId()方法, 我们可以通过ctrl+alt+listCateByStoreId 进入该方法的实现类
时间静止不是简史
2020/07/24
4160
工作记录二: 记录一次简单的SQL优化过程
npm 常见错误记录
1.Module build failed: ReferenceError: Unknown plugin "import" specified in "base" at 0, attempted to resolve relative to "projectFolder/src" at Array.map (native) @ multi main
用户2417870
2019/09/16
1.6K0
HyperLedger Fabric 错误记录
错误1: 在阿里云机器上运行环境: [signal SIGSEGV: segmentation violation code=0x1 addr=0x63 pc=0x7fecd68ca259 需要修改所有相关docker容器yaml文件,在environment中加入 image: hyperledger/fabric-peer environment: - GODEBUG=netdns=go 参考 https://segmentfault.com/q/10100000114513
用户2187945
2018/06/27
1.4K0

相似问题

星号:播放最后记录的文件?

11

表中的随机记录

320

每组的最后一次记录

12

查找最后一次使用记录

23

在卡桑德拉最后一次记录每组

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文