Einzelnen Beitrag anzeigen

Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#1

Tabelle aus HTML auslesen

  Alt 26. Okt 2012, 06:17
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.)
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat