Re: Передача Variant
От: Аноним  
Дата: 10.02.04 10:00
Оценка:
Привет, это опять автор вопроса

Спасибо тем,кто ответил

Оба способа опробованы, но результата не дали

2Shtirliz

Stream.Clear;
Stream.SetSize(Count);
CopyMemory(Stream.memory,@buffer,Count);


Такой вариант тоже не работает, в том смысле, что получаются не те данные. Для отладки был написан COM-клиент на Delphi и выяснилось, что, в принципе, работает следующий вариант:

type
TBArray = array of byte;
var
  BufArray: TBArray;
begin
...
SetLength(BufArray, Count);
DynArrayFromVariant(Pointer(BufArray), Buffer, TypeInfo(TBArray));
Stream.Clear;
Stream.SetSize(Count);
CopyMemory(Stream.memory,BufArray,Count);
...


но если COM-клиентом выступает ASP-скрипт при вызове

DynArrayFromVariant(Pointer(BufArray), Buffer, TypeInfo(TBArray));


происходит AV.

Почему — не понятно

VarIsArray(Buffer) возвращает true.

2Аноним:
при вызове COM-объекта из Delphi предложенный тобой вариант работает:

if (VarIsArray(Buffer)) then
begin
  a := FindVarData(Buffer);
  Stream.Write(a^.VArray^.Data^, Count);
end;


но при вызове из ASP-скрипта a^.VArray = nil
почему — опять же непонятно

Вобщем, если у кого-нибудь будут какие-нить идеи — очень прошу, помогите
Второй день над этим сижу, намучилась донельзя
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.