Witam
Oto kod programiku z wczytywaniem strony www przy użyciu komponentu webbrowser.
Kompilacja 64 bitowa ma problem, a 32 bitowa nie ma tego problemu.
Co zrobić by działało przy 64 bitowej wersji
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.OleCtrls, SHDocVw;
type
TForm1 = class(TForm)
przegladarka: TWebBrowser;
przycisk_wczytaj_strone: TButton;
procedure przycisk_wczytaj_stroneClick(Sender: TObject);
procedure przegladarkaNavigateError(ASender: TObject;const pDisp: IDispatch; const URL, Frame, StatusCode: OleVariant;var Cancel: WordBool);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.przycisk_wczytaj_stroneClick(Sender: TObject);
var
wczytaj_strone:WideString;
begin
Application.ProcessMessages; //czekaj na zakonczenie wykonywanych poprzednich operacji
//----------------------------------------------------------------
try
wczytaj_strone:='http://www.google.pl';
//przegladarka.Silent := False;
//przegladarka.Silent := True;
system.Set8087CW($133F); //podobno ma zapobiegac temu problemowi...
przegladarka.Navigate(wczytaj_strone);
system.Set8087CW($133F);
showmessage('test');
//except
finally
Application.ProcessMessages; //czekaj na zakonczenie wykonywanych poprzednich operacji
//przegladarka.Free;
end;
//----------------------------------------------------------------
Application.ProcessMessages; //czekaj na zakonczenie wykonywanych poprzednich operacji
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
system.Set8087CW($133F); //podobno ma zapobiegac temu problemowi...
end;
procedure TForm1.przegladarkaNavigateError(ASender: TObject;
const pDisp: IDispatch; const URL, Frame, StatusCode: OleVariant;
var Cancel: WordBool);
begin
system.Set8087CW($133F); //podobno ma zapobiegac temu problemowi...
// if ErrorCode='123' then ScriptErrorAction := eaContinue;
end;
end.
Zdarzenie: uruchamia się aplikacja, po wciśnięciu przycisku "wczytaj stronę" następuję załadowanie strony i automatyczne zamknięcie całej aplikacji.
Wywala błąd: " Project Project1.exe raised exception class $C0000090 with message 'c0000090 FLOAT_INVALID_OPERATION' "
oraz przechodzi do pliku: Winapi.CommCtrl
i podświetla linie:
Result := _TaskDialogIndirect(pTaskConfig, pnButton, pnRadioButton,
co robić by tak się nie działo. Dodam że kompilując tylko wersje 32 bitową, działa wszystko jak należy.
Delphi XE3