Вверх ↑
Ответов: 2125
Рейтинг: 159
#1: 2008-12-10 21:05:18 ЛС | профиль | цитата
Не знаю, чего он там объяснял, но после замены на вот это


#pas
function TMe.GetIDsOfNames(const IID: TGUID; Names: Pointer; NameCount,
LocaleID: Integer; DispIDs: Pointer): HResult;
type
TDispIDsArray = array[0..0] of TDISPID;
PDispIDsArray = ^TDispIDsArray;
TNamesArray = array[0..0] of PWideChar;
PNamesArray = ^TNamesArray;
var
IDs: PDispIDsArray absolute DispIDs;
NMs: PNamesArray absolute Names;
i,j: integer; Name: WideString;
begin
if NameCount < 1 then Result := E_INVALIDARG else Result := S_OK;
for i := 0 to NameCount - 1 do begin
IDs[i] := DISPID_UNKNOWN; Name := NMs[i];
if not FScript._prop_UseName then
if LowerCase(Name) = 'onevent' then IDs[i] := DISPID_EVENT
else if LowerCase(Name) = 'getdata' then IDs[i] := DISPID_GETDATA
else Result := DISP_E_UNKNOWNNAME
else begin
if (FScript.FECount <> nil) then begin
j := FScript.FECount.IndexOf(LowerCase(Name));
if j<0 then j := FScript.FECount.IndexOfName(LowerCase(Name));
if j>=0 then IDs[i] := 1000 + j;
end;
if (FScript.FDCount <> nil) then begin
j := FScript.FDCount.IndexOf(LowerCase(Name));
if j<0 then j := FScript.FDCount.IndexOfName(LowerCase(Name));
if j>=0 then IDs[i] := 2000 + j;
end;
end;
end;
end;
всё работает.
карма: 1

0