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;
...全文
329 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 01-12
精选
  • 打赏
  • 举报
回复
您的问题已经帮您同步至问答, 链接: https://ask.csdn.net/questions/8056544, 请您保持关注, 如果回答有帮助解决此问题, 麻烦您动动小手给相关的回答点赞, Ada会在评论区为您更新结题状态
  • 打赏
  • 举报
回复

用IntToHex就可以了

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

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

daigua1987 01-12
  • 举报
回复
@tanqth 转string显示值也不一样 不知道那里的问题

5,557

社区成员

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

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