Home > Back-end >  [Delphi Builder], using WebBrowser memory error problem
[Delphi Builder], using WebBrowser memory error problem

Time:10-03

Code
 
//-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
# include & lt; MSHTML. H>
# include & lt; Math. H>
# include & lt; The VCL. H>
# pragma hdrstop

# include "Unit1. H"
//-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
# pragma package (smart_init)
# pragma resource "*. DFM
"
AnsiString HTMLsrc="C:/Users/FCU/Desktop/Map. The HTML";
IHTMLDocument2 * ADocument;
IHTMLWindow2 * HWindow2;
ABody IHTMLElement2 *;
AnsiString Lat and Lng;
IHTMLElement * Tag;
IHTMLElementCollection * TagsList;
IHTMLElement * ABody2;
Retrieves the QA;

TForm1 * Form1;
//-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
__fastcall TForm1: : TForm1 (TComponent * Owner)
: TForm (the Owner)
{
WebBrowser1 - & gt; Navigate2 (" about: blank ");
}
//-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Void __fastcall TForm1: : FormCreate (TObject * Sender)
{
WebBrowser1 - & gt; Navigate2 (HTMLsrc);
WebBrowser1 - & gt; The Document - & gt; QueryInterface (__uuidof (IHTMLDocument2), (void * *) & amp; ADocument);
ADocument - & gt; QueryInterface (__uuidof (IHTMLWindow2), (void * *) & amp; HWindow2);
}
//-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
AnsiString GetIdValue (const AnsiString Id)
{
Int Index;
AnsiString Result="";
Long scope;
PDisp IDispatch *;
Retrieves the Qa;
Would be * wszBuf;

ABody - & gt; GetElementsByTagName ((*) would be (" input "), & amp; TagsList);//input change Id
TagsList - & gt; Get_length (& amp; The scope);

For (Index=0; The Index & lt; The scope; Index++)
{
The VARIANT vTemp, vEmptyParam;
VTemp. N=VT_UI4;
VTemp. LVal=Index;
TagsList - & gt; The item (vTemp, vEmptyParam, & amp; PDisp);
Qa=pDisp - & gt; QueryInterface (__uuidof (IHTMLElement), (void * *) & amp; The Tag);

If (SUCCEEDED (Qa))
{
Tag - & gt; Get_innerText (& amp; WszBuf);
Result=wszBuf;
Tag - & gt; Release ();
}
PDisp - & gt; Release ();
TagsList - & gt; Release ();
}
ABody - & gt; Release ();
TagsList - & gt; Release ();
Return (Result);
}
//-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
AnsiString __fastcall TForm1: : AddLatLngToList (const AnsiString Lat, const AnsiString Lng)
{
If (Lat!="" & amp; & Lng!="")
{
ListView1 - & gt; The Items - & gt; The Add ();
ListView1 - & gt; The Items - & gt; The Add () - & gt; Caption=Lng;
ListView1 - & gt; The Items - & gt; The Add () - & gt; SubItems - & gt; Add (Lat);
ListView1 - & gt; The Items - & gt; The Add () - & gt; MakeVisible (false);
}
Return (0);
}
//-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Void __fastcall TForm1: : WebBrowser1CommandStateChange (TObject * ASender, int the Command,
WordBool Enable)
{
GetIdValue (" ");
//Lat=GetIdValue (" LatValue ");
//Lng=GetIdValue (" LngValue ");
If (Lat!="" & amp; & Lng!="" & amp; & (Lat!=Edit1 - & gt; The Text | Lng!=Edit2 - & gt; The Text))
{
Edit1 - & gt; Text=Lat;
Edit2 - & gt; Text=Lng;
AddLatLngToList (Lat and Lng);
}
}
//-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --


Hope demon elder brother or other severe greatly can help me,

CodePudding user response:


Turn to the Builder the Delphi code
 
The unit uMain;

Interface

USES the
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls SHDocVw, StdCtrls ExtCtrls, XPMan, ComCtrls, MSHTML;

Type
TFrmMain=class (TForm)
WebBrowser1: TWebBrowser;
PanelHeader: TPanel;
ButtonGotoLocation: TButton;
XPManifest1: TXPManifest;
LabelLatitude: TLabel;
LabelLongitude: TLabel;
Longitude: TEdit;
Latitude: TEdit;
ButtonClearMarkers: TButton;
ListView1: TListView;
Panel1: TPanel;
Procedure FormCreate (Sender: TObject);
Procedure ButtonClearMarkersClick (Sender: TObject);
Procedure WebBrowser1CommandStateChange (ASender: TObject; Command: Integer; Enable: WordBool);
Procedure ButtonGotoLocationClick (Sender: TObject);
Private
HTMLWindow2: IHTMLWindow2;
Procedure AddLatLngToList (const Lat and Lng: string).
Public
The end;

Var
FrmMain: TFrmMain;

Implementation

{$R *. DFM}

USES the
ActiveX.

Const
HTMLStr: AnsiString=
'& lt; html> + '
'& lt; head> + '
'& lt; Meta name="viewport" content="initial - scale=1.0, user - scalable=yes"/& gt; + '
'& lt; The script type="text/javascript" & gt;//& lt; ! [CDATA [
Src="http://maps.google.com/maps/api/js? Sensor=false& Language=en "& gt;
//]] & gt; </script> + '
//'& lt; The script type="text/javascript" & gt;//& lt; ! [CDATA [
Src="http://maps.google.com/maps/api/js? Sensor=false "& gt;
//]] & gt;
  • Related