![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Упаковка массива рекордов в олевариант [D5]
harisma © (2011-02-28 12:48:00)Есть массив рекордов определенной длины. Его надо запаковать в ОлеВариант для дальнейшей передачи в качестве параметра в некий интерфейс, а там его распаковать. Как это сделать?
Спасибо.
Amoeba_ (2011-03-10 17:54:00) [1]
> harisma © (10.03.11 14:13) [8]
>
>
> > Как-то очень плохо сие согласуется с идеологией COM, если
>
> Чем же оно плохо согласуется? Вроде как раз в таком варианте
> (строки фиксированной длинны) и должно быть в отличии от
> динамических строк
> <
А тем, что строки фиксированной длинны это чисто борландовская фича.
harisma (2011-03-10 14:13:00) [2]
> Как-то очень плохо сие согласуется с идеологией COM, если
Чем же оно плохо согласуется? Вроде как раз в таком варианте (строки фиксированной длинны) и должно быть в отличии от динамических строк
Amoeba_ (2011-03-01 00:29:00) [3]
> 2 поля - стринги размером 32 символа (string[32]),
Как-то очень плохо сие согласуется с идеологией COM, если
> запаковать в ОлеВариант для дальнейшей передачи в качестве
> параметра в некий интерфейс
_Юрий (2011-02-28 21:01:00) [4]
> А пример кода можно?
function TStreamHelper.GetAsVariant: Variant;
var
P : Pointer;
begin
Result:=VarArrayCreate([0, Size - 1], VarByte);
P:=VarArrayLock(Result);
try
Position:=0;
ReadBuffer(P^, Size);
finally
VarArrayUnLock(Result);
end;
end;
harisma (2011-02-28 17:39:00) [5]Это уже близко к истине ([4]). А пример кода можно?
Сергей М. (2011-02-28 16:57:00) [6]Тогда можно задать вариантному массиву (см. [2]) нужную размерность, получить прямой доступ к его буферу (VarArrayLock) и разом скопировать в буфер весь массив (CopyMemory)
На принимающей стороне восстановление в том же порядке
harisma (2011-02-28 13:10:00) [7]Рекорды содержат три поля. 2 поля - стринги размером 32 символа (string[32]), третье поле - один из элементов сета.
clickmaker (2011-02-28 13:02:00) [8]обычный вариантный массив из вариантов
VarArrayCreate etc
Сергей М. (2011-02-28 12:59:00) [9]рекорды содежат поля с типами данных с управляемым временем жизни ?