Имеется СОМ сервер написанный на Дельфи, нужно передать массив данных, состоящий из чисел и строк, с числами проблем нет, чтобы передать строки напрашивается что массив должен быть WideString. А как совместить в одном масиве строки и числа? Пробывал OleVariant, не получилось.
function TServerDM.GetArray: OleVariant;
var
IntArray: array[0..9] of OleVariant;
I: Integer;
PData: PVariant;
VStr: OleVariant;
begin
for I := 0 to 8 do
begin
IntArray[I] := I;
end;
VStr := '123';
IntArray[9] := VStr;
при пошаговой отладке все в норме, значение '123' есть в массиве
procedure TMain.GetArrayFromServer;
var
IntArray: array[0..9] of OleVariant;
VStr: OleVariant;
VData: OleVariant;
PData: PVariant;
I: Integer;
begin
VData := ServerDM.GetArray;
PData := VarArrayLock(VData);
try
Move(PData^, IntArray, SizeOf(IntArray));
finally
VarArrayUnlock(VData);
end;
for I := 0 to 8 do
begin
ArrayMemo.Lines.Add(IntToStr(IntArray[I]));
end;
VStr := IntArray[9];
^^^^^^^^^^ значение не определено, здесь появляется ошибка.
end;
Почему она вознивает, если OleVariant позволяет передавать данные WideString?