Delphi 10转换缓冲区

Delphi 10转换缓冲区,delphi,delphi-7,delphi-10-seattle,Delphi,Delphi 7,Delphi 10 Seattle,我在Delphi 7中有这样一个代码: var mValueBuffer : TValueBuffer; begin Double(MValueBuffer) := Date; end; 当我在Delphi10中编译它时,它失败了,出现了一个无效的类型转换错误。我正在使用Data.DB单元。从您的评论中提取信息,并编辑问题以使用它们,现在我们可以理解这个问题了。对于未来的问题,请注意评论中给出的建议 类型TValueBuffer在Data.DB中声明为动态字节数组。因此,类型转

我在Delphi 7中有这样一个代码:

var    
  mValueBuffer : TValueBuffer;
begin
  Double(MValueBuffer) := Date;
end;

当我在Delphi10中编译它时,它失败了,出现了一个无效的类型转换错误。我正在使用
Data.DB
单元。

从您的评论中提取信息,并编辑问题以使用它们,现在我们可以理解这个问题了。对于未来的问题,请注意评论中给出的建议

类型
TValueBuffer
Data.DB
中声明为动态字节数组。因此,类型转换无效。您不能希望将动态数组(本质上是指针)强制转换为双精度浮点值。这些类型有不同的尺寸。因此出现了编译器错误。即使类型大小相同,演员阵容也毫无意义


为什么要在Delphi7中编译它。好的,Delphi7标准库没有名为
TValueBuffer
的类型。因此,我们只能假设
TValueBuffer
是在您的代码或您使用的库中定义的。大概,您对
Data.DB
单元的使用隐藏了打算使用的
TValueBuffer
类型。找到该类型,您将得到问题的答案。

我有一个这样的代码,但不确定是否是TValueBuffer?我不明白你的问题。你的实际问题是什么?你在先前的问题中犯了完全相同的错误。你没有提供足够的细节。请出示证件。除非你这么做,否则这个问题在这里是离题的。请花点时间阅读报纸上的文章。试着搞笑一下!!您必须在使用中使用Data.db…您需要包含一个完整的、可编译的示例。为什么你会认为你可以把
TValueBuffer
转换成
Double
?他们根本不是一回事。你不能仅仅因为想吃零食就把汽车打成香蕉。您提供的示例代码毫无意义。你想解决的实际问题是什么,而不是那些无法编译的毫无意义的代码?请不要和我们抗争。我们知道怎么做。请提供一份报告。请花点时间在办公室。请不要让我们再次重复此消息。谢谢,我很感激:)在Delphi 7中,它是一个指针。如果
TValueBuffer
是D7中的指针,那么您的代码也不会编译。我真的不知道你想从我们这里得到什么。考虑到你提出的问题,我看不出我还能做什么。我不确定你是否完全理解这个网站的工作原理以及我们必须提供的服务。我发现了如何解决我的问题,以防其他人也会遇到同样的问题。旧版本为指针指定了日期iftDate:LONGENT(缓冲区):=DateTimeToTimeStamp(STOD(RawText)).Date;将日期转换为TArray iftDate的新版本:TDBBitConverter.From(STOD(RawText),Buffer,0);你真的不知道这个网站是关于什么的。只有你有你的代码。其他人都没有。我们看不到它。这不是问题。我回答了你问的问题。如果你想要一个程序员来帮助你的私人代码库,雇佣一个。如果你想让我们回答问题,请在这里提问。但是不要期望问一个问题,然后得到一个与我们看不见的代码相关的答案。考虑到你提出的问题,你相信有人会比我在回答中说的更多吗?请尝试了解有关此网站工作方式的更多信息: