ole - IStream.Seek() 出错
问题描述
我有一段非常古老的代码来处理 Delphi 5 中的 Excel 文件,我将其改编为与 Delphi 2005 一起工作,直到 2010 年我才专业使用它。从那时起,就没有合理的 Delphi 免费版本。因此,只是现在使用 Delphi 10.2.3 Tokyo 我想再次对其进行调整。
我无法解决的一个问题与下面给出的函数中的使用有关,OleStream.Seek(...)
在该函数中,我得到一个致命错误,其中的所有表达式都是OleCheck(...)
.
OleStream.Seek(...)
另外,我在互联网上搜索该功能时没有找到类似问题的任何提示。
代码如下
function Streamseek(offset : longint; origin: word):string;
var
Pos : longInt ; // Pos: largeint;
begin
if FBIFFVersion > biff4 then begin
case Origin of
soFromBeginning:
OleCheck(OStream.Seek(Offset,STREAM_SEEK_SET,Pos)); // ENUM: set =0
soFromCurrent:
OleCheck(OStream.Seek(Offset,STREAM_SEEK_CUR,Pos)); /// 1 cur
soFromEnd:
OleCheck(OStream.Seek(Offset,STREAM_SEEK_END,Pos)); // 2 end
end;
当然,它只是一个更大的程序中的一个功能,这里不相关。
我的问题是:我
OStream.Seek(Offset,STREAM_SEEK_SET,Pos)
在互联网上搜索,但除了一个网页,我只能找到OleStream.seek(offset : longint; origin: word):string;
一个网页,但使用的类型相同。
所以,我想知道需要使用哪些参数类型。
在德文版的 Delphi 10.2.3 中,出现错误:
[dcc32 Fehler] line(878): E2033 Die Typen der tatsächlichen und formen Var-Parameter müssen übereinstimmen
用英语讲:
实参和形参的类型必须相同。
很明显,这largeint
不是现代参数类型,我只看到可能需要,而不是Integer
,或 else LongInt
,Int64
因为参数的数量应该是可以的。
LongInt
代替Integer
foroffset
不起作用,Longint
而不是LargeInt
不适合pos
.
有谁知道错误的原因可能是什么?Delphi 10.2.3 中这个函数需要哪些类型?
解决方案
推荐阅读
- intellij-idea - Intellij Scala Formatter 将注释和方法定义放在同一个
- node.js - 如何删除 mongo 中的循环依赖错误?我正在使用猫鼬和快递
- visual-studio - opencv 3.4.1 视觉工作室 2017
- javafx - JavaFX 最小化和最大化带有动画的未装饰舞台
- css - Webkit-tap-highlight-color 不适用于 li 元素?
- python - OpenCV 调整大小问题无法正常工作
- r - 从 R 中的同一线性模型中提取特定的交互系数
- javascript - 回归系数显示为方程
- python - Requests.get 函数未检索任何数据。怎么了?
- powershell - 远程在多台服务器上执行powershell脚本