AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tabelle aus HTML auslesen

Ein Thema von Captnemo · begonnen am 26. Okt 2012 · letzter Beitrag vom 23. Aug 2016
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz