MemTableEh和FDMemTable的Bytes数据的问题

daigua1987 2024-01-12 15:19:14

 

第一个数据集是用 MemTableEh,获取Hst数据转换成时间戳显示的是1120000000000000(转换异常的)

第二个数据集是用FDMemTable ,获取Hst数据转换成时间戳显示的是000000000003C8E4(转换正确的)

同样的数据,同样的转换代码为什么会显示不同的结果

下面是获取数据的代码

procedure TForm1.Button1Click(Sender: TObject);
var
  Server: TServerMethods1Client;
  DSlIST: TFDJSONDataSets;
  aDataSet: TFDAdaptedDataSet;
begin
  Server := TServerMethods1Client.Create(DSRestConnection1);
  DSlIST := Server.ServerGetTable('select top 10 ProNo,ProName,Hst  from ProductInfo', 'admin');
  aDataSet:=TFDJSONDataSetsReader.GetListValue(DSlIST, 0);
  MemTableEh1.Close;
  MemTableEh1.LoadFromDataSet(aDataSet, -1, lmCopy, false);
  MemTableEh1.Open;

  FDMemTable1.Close;
  FDMemTable1.AppendData(aDataSet);
  FDMemTable1.Open;
end;

下面是转换代码

// 时间戳16位二进制转换成字符串1
function BufToHex(const Buf; const Size: Cardinal): string;
const
  // maps nibbles to hex digits
  cHexDigits: array [$0 .. $F] of Char = ('0', '1', '2', '3', '4', '5', '6',
    '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
var
  I: Cardinal; // loops thru output string
  PB: ^Byte; // addresses each byte in buffer
begin
  PB := @Buf;
  SetLength(Result, 2 * Size);
  I := 1;
  while I <= 2 * Size do
  begin
    Result[I] := cHexDigits[PB^ shr 4];
    Result[I + 1] := cHexDigits[PB^ and $0F];
    Inc(PB);
    Inc(I, 2);
  end;
end;

// 时间戳16位二进制转换成字符串2
function BytesToHex(const Bytes: array of Byte): string;
begin
  Result := BufToHex(Bytes, Length(Bytes));
end;
...全文
485 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2024-01-12
精选
  • 打赏
  • 举报
回复
您的问题已经帮您同步至问答, 链接: https://ask.csdn.net/questions/8056544, 请您保持关注, 如果回答有帮助解决此问题, 麻烦您动动小手给相关的回答点赞, Ada会在评论区为您更新结题状态
  • 打赏
  • 举报
回复

用IntToHex就可以了

daigua1987 2024-01-13
  • 举报
回复
@日立奔腾浪潮微软松下联想 将结果转换也不行 估计要把值修改好了 再转换才行
daigua1987 2024-01-13
  • 举报
回复
@日立奔腾浪潮微软松下联想 带了图片 用FDMemTable 再遍历的时候很慢,用MemTableEh就很快 所有才换MemTableEh结果时间戳问题
tanqth 2024-01-12
  • 打赏
  • 举报
回复

你取出来看数据就不正确了吧。

daigua1987 2024-01-12
  • 举报
回复
@tanqth 转string显示值也不一样 不知道那里的问题
内容概要:LTK8319是一款单通道H桥有刷直流电机驱动器,工作电压范围为2.5V至12V,支持最高3.9A的峰值电流和2.5A的平均电流驱动能力,适用于小家电、玩具、电子锁、机器人等小型电动设备。该芯片通过两个逻辑输入(INA和INB)控制电机的正转、反转、停止与刹车,并支持PWM调速控制。集成欠压锁定(UVLO)、过温保护(TSD)及自动故障恢复功能,确保系统安全可靠运行。当INA和INB持续为低电平时,芯片进入低功耗休眠模式,显著降低静态功耗。采用ESOP-8封装,符合环保无铅标准。; 适合人群:电子工程师、嵌入式系统开发者、电机控制技术人员,以及从事小型机电产品研发的设计人员;具备基本电路知识和电机控制经验者更佳。; 使用场景及目标:①用于驱动小型有刷直流电机或步进电机的一个绕组,实现精确的方向与速度控制;②适用于电池供电设备中对功耗敏感的应用,利用休眠模式延长续航时间;③在电机启停频繁、负载波动大的场合,发挥其电流控制与保护机制优势,提升系统稳定性。; 阅读建议:此文档提供了详细的电气特性、功能逻辑表、保护机制与时序参数,建议结合典型应用电路进行硬件设计,并重点关注电源去耦电容选型、散热布局及PWM频率设置(不超过100kHz),以确保系统可靠运行。
内容概要:本文研究了一种基于遗传算法(GA)与粒子群优化算法(PSO)融合的无人机三维路径规划方法,旨在解决复杂环境中无人机避障与路径优化的问题。通过构建三维空间环境模型,提出一种结合GA全局搜索能力强与PSO收敛速度快优势的混合优化策略,并利用Matlab平台完成算法仿真与路径可视化。研究不仅实现了无人机在存在多个障碍物场景下的安全、高效飞行路径规划,还对GA与PSO两种算法在路径长度、计算耗时、收敛稳定性等方面进行了对比分析,评估其性能差异,为实际应用中算法选型提供依据。; 适合人群:具备一定算法设计基础和Matlab编程能力的科研人员、自动化与人工智能方向的研究生,以及从事无人机导航、智能控制等相关领域的工程技术人员。; 使用场景及目标:①应用于城市密集建筑区、山地森林等复杂地形中的无人机自主巡检与应急救援任务;②为智能交通、地理测绘、灾害监测等需要自主路径决策的无人系统提供算法支持与仿真验证;③通过对比不同智能优化算法的表现,辅助研究人员在特定应用场景下选择最优路径规划方案。; 阅读建议:建议读者结合提供的Matlab代码进行仿真实验,调整种群规模、迭代次数、障碍物分布等参数,深入理解算法运行机制与性能表现,并可进一步拓展至动态环境更新、多无人机协同避障等更复杂的研究方向。

5,943

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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