Вниз
Скачать: CL | DM;

Упаковка массива рекордов в олевариант   Найти похожие ветки 

 
harisma ©   (2011-02-28 12:48) [0]

Есть массив рекордов определенной длины. Его надо запаковать в ОлеВариант для дальнейшей передачи в качестве параметра в некий интерфейс, а там его распаковать. Как это сделать?
Спасибо.


 
Сергей М. ©   (2011-02-28 12:59) [1]

рекорды содежат поля с типами данных с управляемым временем жизни ?


 
clickmaker ©   (2011-02-28 13:02) [2]

обычный вариантный массив из вариантов
VarArrayCreate etc


 
harisma ©   (2011-02-28 13:10) [3]

Рекорды содержат три поля. 2 поля  - стринги размером 32 символа (string[32]), третье поле - один из элементов сета.


 
Сергей М. ©   (2011-02-28 16:57) [4]

Тогда можно задать вариантному массиву (см. [2]) нужную размерность, получить прямой доступ к его буферу (VarArrayLock) и разом скопировать в буфер весь массив (CopyMemory)

На принимающей стороне восстановление в том же порядке


 
harisma ©   (2011-02-28 17:39) [5]

Это уже близко к истине ([4]). А пример кода можно?


 
_Юрий   (2011-02-28 21:01) [6]


> А пример кода можно?


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;


 
Amoeba_   (2011-03-01 00:29) [7]


> 2 поля  - стринги размером 32 символа (string[32]),

Как-то очень плохо сие согласуется с идеологией COM, если
> запаковать в ОлеВариант для дальнейшей передачи в качестве
> параметра в некий интерфейс


 
harisma ©   (2011-03-10 14:13) [8]


> Как-то очень плохо сие согласуется с идеологией COM, если

Чем же оно плохо согласуется? Вроде как раз в таком варианте (строки фиксированной длинны) и должно быть в отличии от динамических строк


 
Amoeba_   (2011-03-10 17:54) [9]


> harisma ©   (10.03.11 14:13) [8]
>
>
> > Как-то очень плохо сие согласуется с идеологией COM, если
>
> Чем же оно плохо согласуется? Вроде как раз в таком варианте
> (строки фиксированной длинны) и должно быть в отличии от
> динамических строк
> <

А тем, что строки фиксированной длинны это чисто борландовская фича.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: -0.646 c
15-1348777803
Юрий
2012-09-28 00:30
2013.03.22
С днем рождения ! 28 сентября 2012 пятница


2-1343506606
3asys
2012-07-29 00:16
2013.03.22
Получение директории программы


15-1329769805
Юрий
2012-02-21 00:30
2013.03.22
С днем рождения ! 21 февраля 2012 вторник


15-1345469782
Handler
2012-08-20 17:36
2013.03.22
outlook.com vs gmail.com


8-1230109371
Вера
2008-12-24 12:02
2013.03.22
графика




   Наверх