Hi ich will eine Tabelle aus eine
HTML-Seite übernehmen.
Der User muß vorab über eine EmbeddedWB-Komponente navigieren und dann soll per Button die dargestellte Tabelle übernommen werden.
Hier mal mein Code, den ich unter zur Hilfenahme von
http://www.delphipraxis.net/88200-ht...-einlesen.html mir so zusammengeschrieben habe.
Delphi-Quellcode:
function Tfrm_kasys_datenabruf.GetDocument(
var doc: IHTMLDocument2): Boolean;
begin
Result:=False;
Try
doc:=embeddedWB1.Doc2
as IHTMLDocument2;
Result:=True;
Except
Result:=False;
End;
end;
function Tfrm_kasys_datenabruf.GetTable(doc: IHTMLDocument2; v: OleVariant;
var t: IHTMLTable): Boolean;
var
ec: IHTMLElementCollection;
e2: IHTMLElement2;
begin
Result:=True;
e2 := doc.body
as IHTMLElement2;
ec:=e2.getElementsByTagName('
table');
if ec.length>0
then
t:=
ec.item(v, null)
as IHTMLTable
else
Result:=False;
end;
procedure Tfrm_kasys_datenabruf.GetCells(tr: IHTMLTableRow; sg: TAdvStringGrid;
index: Integer);
var
i: Integer;
ec: IHTMLElementCollection;
e: IHTMLElement;
s: TStrings;
begin
s:=sg.Rows[
index];
s.Clear;
ec:=tr.cells;
if sg.ColCount<
ec.length
then
sg.ColCount:=
ec.length;
for i := 0
to Pred(
ec.length)
do begin
e:=
ec.item(i, null)
as IHTMLElement;
s.Add(e.innerText);
end;
end;
procedure Tfrm_kasys_datenabruf.GetRows(t: IHTMLTable; sg: TAdvStringGrid);
var
i: Integer;
ec: IHTMLElementCollection;
begin
ec:=t.rows;
sg.RowCount:=
ec.length;
for i := 0
to Pred(
ec.length)
do
GetCells(
ec.item(i, null)
as IHTMLTableRow, sg, i);
end;
Und hier meine Procedure vom Button:
Delphi-Quellcode:
procedure Tfrm_kasys_datenabruf.LeseDocumentTable;
var
doc: IHTMLDocument2;
t: IHTMLTable;
row: IHTMLTableRow;
begin
Doc := CoHTMLDocument.Create as IHTMLDocument2;
if GetDocument(doc) then begin
if GetTable(doc, 0, t) then begin
row:=t.rows.item(0, null) as IHTMLTableRow;
if Assigned(row) then
GetCells(row, sg_abruf, 0) else
ShowMessage('Keine Zeilen gefunden');
end else
ShowMessage('Keine Tabelle gefunden');
end else
ShowMessage('Keine Document erhalten');
end;
Ich bekomme immer die Meldung 'Keine Tabelle gefunden', das letztlich heißt, dass die Function GetTable halt nix findet.
Jetzt würde ich gerne den Inhalt von e2 bzw.
ec mal im Debugger anzeigen lassen. Sind aber Pointer und ich kann lediglich die Adresse sehen.
Wie kann ich mir den Inhalt anzeigen lassen, auf den die Pointer zeigen?
(Wenn jemand natürlich sieht, wo mein Fehler liegt, dann hab ich auch nichts dagegen.)