Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > НЕпонятное с 'Invalid variant operation' WinXP или


Автор: Pcrepair 11.9.2014, 15:25
Добрый день.

есть код

Код

procedure TMain.ListBox2KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
const  WebSearchId='text';
var SRStr:string;  Data:variant;
begin   (*перенос значения строки в окно ввода страницы в браузере*)
  if (Key = VK_RETURN) then
  SRStr:=(ListBox2.Items[ListBox2.ItemIndex]);

  if not Assigned(Wbbr.Document) then Exit;
  if Wbbr.OleObject.Document.all.tags('FORM').Length <> 0 then
  Data:=Wbbr.Oleobject.Document.GetElementByID(WebSearchId);
  Data.Value:=SRStr;
end;


1. Компилляция происходит нормально.
2. при запуске программы в WinXP все нормально (ну кроме того что под ИЕ8 не работает часть функций)
3. при запуске программы в Win7 (IE9) все работает, но при запуске процедуры вылазит : First chance exception at $7584D36F. Exception class EVariantInvalidOpError with message 'Invalid variant operation'. Process KWFinder.exe (1024), источник

unit System.Variants;

Код

procedure VarInvalidOp;
begin
  raise EVariantInvalidOpError.Create(SInvalidVarOp);
end;


Компиляция в Win7 ничего не изменила

Вопросы : где косяк? и что делать?

Автор: CynicRus 11.9.2014, 17:15
Переменная Data должна быть IHTMLElement. Я полагаю что в этом и причина.

Автор: navodri 18.10.2014, 20:14
А что Вы хотели? Действительно под ИЕ8 будет ошибка, а под ИЕ9 - нет. Тут необходимо переписывать процедуры для разных версий Браузера. А представьте, если у кого-то ИЕ7 или 6?... И такое бывает. В свое время я с этим так напахался.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)