我有 Delphi 2006 客户端应用程序。这个客户端从 COM 服务器接收一个 Olevariant 类型的数据。功能是:
procedure OnLimitsChanged(var SymbolsChanged: {??PSafeArray}OleVariant);
此函数返回一个字符串数组。我无法从 delphi 读取 OleVariant 类型的数据。
在 Excel VBA 中,它的工作原理:
Private Sub g_Realtime_OnLimitsChanged(SymbolsChanged() As String)
Dim i%
Dim Salir As Boolean
If UBound(SymbolsChanged) <> -1 Then
i = 0: Salir = False
While Not Salir
If SymbolsChanged(i) = Simbolo Then
LlamarALimites
Salir = True
Else
i = i + 1
If i > UBound(SymbolsChanged) Then Salir = True
End If
Wend
End If
End Sub
我试图将 OleVariant 转换为 Psafearray ...
procedure TfmConfiguracion.RecibirNuevosTicks(ASender: TObject;
var ArrayTicks : Olevariant);
var
Data : pSafeArray;
i,iLow, iHigh : Integer;
value : wideString;
begin
Data:=PSafeArray(TVarData(ArrayTicks).VArray);
SafeArrayGetLBound(Data,1,iLow);
SafeArrayGetUBound(Data,1,iHigh);
for i:=iLow to iHigh do
begin
SafeArrayGetElement(Data,i,Value);
Showmessage(Value);
end;
但我在这一行收到了一个例外:
SafeArrayGetLBound(Data,1,iLow);
调试器故障通知
项目...出现错误消息:'在 0x751de18c 处的访问冲突:读取地址 0xabababab'。进程停止器。使用 Step 或 Run 继续
任何意见和建议将不胜感激。