Autor Beitrag
Steven Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 57



BeitragVerfasst: Mi 25.06.03 09:13 
darum geht es doch überhaupt nicht, und hat mit meiner frage nichts zu tun...
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 25.06.03 09:31 
Ach nein?

Du hast offensichtlich eine HTML-Seite, aus der du die Email-Adressen herausfiltern willst. Du könntest das natürlich mit deinem Memo machen, aber das setzt voraus, dass du die Syntax der HTML-Seite beachten musst. Umsonst hast du ja wohl nicht geschrieben:
Steven hat folgendes geschrieben:
was wenn keine leerzeichen da sind?


Bei dem Parser (sprich: TWebBrowser, in dem Fall) interessiert das nicht, weil du dort mit einer einfachen for-Schleife Zugriff auf alle Links des Dokumentes hast. Unabhängig davon, wie der HTML-Quelltext aussieht; ob mit Leerzeichen, ohne, mit Zeilenumbruch, alles in einer Zeile ... was auch immer ...

Ich persönlich halte das für einfacher als das Rumgesuche in einem Memo, aber es war auch nur ein Tipp.
Steven Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 57



BeitragVerfasst: Mi 25.06.03 09:38 
da leuchtet mir ein, das mit dem memo ist auch mein erster versuch und keine lösung, deshalb meine fragen... das man das besser machen kann ist mir klar.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 25.06.03 09:59 
Dann probier´s mit dem WebBrowser doch einfach mal aus. Du wirst sehen, dass es sehr leicht ist. ... Aber immer erst meckern ... :wink:
Steven Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 57



BeitragVerfasst: Mi 25.06.03 11:29 
ich hab doch nicht gemeckert :beer:

ich hab mal sowas ausprobiert, funktioniert nicht...
weißt du warum?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
 function GetMailto(WebDoc: iHTMLDocument2): string;
var
  re: integer;
  HTMLel: iHTMLElement;
  HTMLcol: iHTMLElementCollection;
  HTMLlen: Integer;
begin
  Result := '';
  if Assigned(WebDoc) then
  begin
    HTMLcol := WebDoc.Get_all;
    HTMLlen := HTMLcol.Length;
    for re := 0 to HTMLlen - 1 do
    begin
      HTMLel := HTMLcol.Item(re, 0as iHTMLElement;
      if HTMLEl.tagName = 'mailto:' then
        Result := Result + HTMLEl.innerHTML;
    end;
  end;
end;
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 25.06.03 11:57 
Auf die Schnelle:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
function GetMailto(WebDoc: iHTMLDocument2): string;
var
  re    : integer;
  aLink : IHTMLElement;
begin
  Result := '';

  if Assigned(WebDoc) then begin
    for re  := 0 to WebDoc.links.length - 1 do begin
      aLink := WebDoc.links.Item(re,0as IHTMLElement;

      if(pos('mailto:',aLink.getAttribute('href',0)) > 0then
        Result := Result +
          aLink.toString + '(' + aLink.innerHTML + ')' +
          #13#10;
    end;
  end;
end;

Du könntest auch
ausblenden Delphi-Quelltext
1:
      if(pos('mailto:',aLink.toString) > 0then					

benutzen, weil "toString" ja nur den eigentlichen Link in einen (Wide)String konvertiert. - Ich weiß nicht, ob du den Linktext auch noch brauchst. Ich habe ihn spaßeshalber mal in Klammern angehangen (s. "innerHTML"). Wenn du evtl. HTML-Tags nicht sehen willst, etwa die Fett-Markierung hier
ausblenden Quelltext
1:
<a href="mailto:foo@man.chu"><b>Foo</b> im Internet</a>					

dann nimm statt "innerHTML" eben "innerText".
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 25.06.03 12:11 
Ach so, um deine Frage noch fix zu beantworten -

Die Prüfung
ausblenden Delphi-Quelltext
1:
if HTMLEl.tagName = 'mailto:' then					

muss fehlschlagen, weil "mailto:" ja kein Tagname sondern nur der Teil eines Attributes (von href nämlich!) ist. Du solltest also auf den Tagnamen "a" prüfen (weil <a href="...">Text</a>) und dabei beachten, dass (zumindest bei mir) die Namen grundsätzlich in Großbuchstaben zurückgeliefert werden .. warum auch immer ...

Deine Idee bringt so Erfolge:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
  if Assigned(WebDoc) then begin
    HTMLcol  := WebDoc.Get_all;
    for re   := 0 to HTMLCol.length - 1 do begin
      HTMLel := HTMLCol.Item(re,0as IHTMLElement;

      if(lowercase(HTMLel.tagName) = 'a'and
        (pos('mailto:',HTMLel.toString) > 0then
      Result := Result + HTMLel.toString + #13#10;
    end;
  end;
Steven Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 57



BeitragVerfasst: Mi 25.06.03 13:20 
deins funktioniert richtig gut, super :dunce: