![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как передать массив записей используя технологию COM? [WinXP]
Kolan © (2006-04-24 21:13:00)Здравствуйте,
Есть запись подобного вида:
TDoublePoint = record
X: Double;
Y: Double;
end;
И массив:
TDoublePointArray = array of TDoublePoint;
Вопрос: Как передать массив такого типа исользуя COM?
Те я хочу чобы на сервере был методGetArrayдля получения массива.
Пробовал переконвертировать массив в массив вариантов, не получилось. Может я вообще неправильно делаю, поэтому решил спросить.
PS
Код как пытался привести сейчас немогу, забыл его на работе :)
Kolan (2006-04-26 13:09:00) [1]Все разобрался.
Вот как надо было:
function TFreGrafServer.GetArray(out V: OleVariant): HResult;
Kolan (2006-04-26 12:25:00) [2]Так как я описал выше работает. А если ту же схему использовать с COM объектом, то нет. Разница только вот в чем:
function TFreGrafServer.GetArray(var V: OleVariant): HResult;
var
Arr: TDoubleArray;
begin
ConvertPairArrayToDoubleArray(
HeadManager.MeasurmentManager.CurrentMeasurment.OutPutGraff,Arr);
DynArrayToVariant( Variant(V), Arr,TypeInfo(TDoubleArray));
Result := S_OK;
end;
PS
И как настроить отладку? Сервер(COM объект) и приложение, которое им пользуется в одной группе..
Kolan (2006-04-26 10:42:00) [3]О вроде получилось:
Сделал просто массив Double.
TDoubleArray = array of Double;
И две процедуры. Правильно?
procedure TForm1.ConvertArrayVariant(var V: Variant; Arr: TDoubleArray);
begin
if Length(Arr) > 0 then
DynArrayToVariant(V, Arr, TypeInfo(TDoubleArray));
end;
procedure TForm1.ConvertVariantToArray(V: Variant; var Arr: TDoubleArray);
begin
DynArrayFromVariant(Pointer(Arr), V, TypeInfo(TDoubleArray));
end;
Sapersky (2006-04-26 02:04:00) [4]что надо в TypeInfo передать
Могу предположить что TypeInfo(TDoublePointArray)
Kolan (2006-04-25 23:45:00) [5]AbrosimovA © (25.04.06 08:48) [2]
Что - то я не понял что надо в TypeInfo передать. Можно пример для массива:
array of Double
Kolan (2006-04-25 21:36:00) [6]OK. Попробую...
AbrosimovA (2006-04-25 08:48:00) [7]Попробуй процедуру
DynArrayToVariant
atruhin (2006-04-25 04:55:00) [8]PSafeArray , дальше либо 2 массива X,Y, либо 1 элементы по очереди