Форум: "Основная";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
ВнизКак передать массив записей используя технологию COM? Найти похожие ветки
← →
Kolan © (2006-04-24 21:13) [0]Здравствуйте,
Есть запись подобного вида:
TDoublePoint = record
X: Double;
Y: Double;
end;
И массив:
TDoublePointArray = array of TDoublePoint;
Вопрос: Как передать массив такого типа исользуя COM?
Те я хочу чобы на сервере был методGetArray
для получения массива.
Пробовал переконвертировать массив в массив вариантов, не получилось. Может я вообще неправильно делаю, поэтому решил спросить.
PS
Код как пытался привести сейчас немогу, забыл его на работе :)
← →
atruhin © (2006-04-25 04:55) [1]PSafeArray , дальше либо 2 массива X,Y, либо 1 элементы по очереди
← →
AbrosimovA © (2006-04-25 08:48) [2]Попробуй процедуру
DynArrayToVariant
← →
Kolan © (2006-04-25 21:36) [3]OK. Попробую...
← →
Kolan © (2006-04-25 23:45) [4]AbrosimovA © (25.04.06 08:48) [2]
Что - то я не понял что надо в TypeInfo передать. Можно пример для массива:array of Double
← →
Sapersky (2006-04-26 02:04) [5]что надо в TypeInfo передать
Могу предположить что TypeInfo(TDoublePointArray)
← →
Kolan © (2006-04-26 10:42) [6]О вроде получилось:
Сделал просто массив 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;
← →
Kolan © (2006-04-26 12:25) [7]Так как я описал выше работает. А если ту же схему использовать с 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 13:09) [8]Все разобрался.
Вот как надо было:
function TFreGrafServer.GetArray(out V: OleVariant): HResult;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c