kod zródłowy strony internetowej

0

Witam czy wie ktoś może jak w komponencie RichEdit otworzyć kod źródłowy strony np http//www.wp.pl,

proszę o pomoc

0

Ściągasz stronę za pomocą HTTPGet, a potem to chyba się domyślisz.

0

ewentualnie TIDHTTP z pakietu Indy albo nawet poprzez Sockety i po przeczytaniu RFC odpowiedniego.

0

wykorzystałem komponent HTTPGet ale na niektórych stronkach chyba pojawia się błąd bo nieraz nie wykonuje się procedura OnDoneFile w której mam RichEdit1.Lines.loadfromfiles(Savedialog1.filename);

0

Ja radzę skorzystać z komponentu indy... Artykuł o nim jest w artykułach.

0

A tak można bez żadnych dodatkowych komponentów:

uses
  ...., WinInet, ..... ;

function HttpGetFile(const URL, FileOut: string): Boolean;
var
  hOpen, hOpenUrl: HINTERNET;
  buffer: array[0..63] of Char;
  fsOut: TFileStream;
  dwX: DWORD;
begin
  Result := False;

  hOpen := InternetOpen(
    '',
    INTERNET_OPEN_TYPE_PRECONFIG,
    '', '', 0
    );

  if hOpen = nil then
  begin
    ShowMessage('InternetOpen Failed !. Please try again !');
    Exit;
  end;


  hOpenUrl := InternetOpenURL(
    hOpen,
    PChar(URL),
    '',
    0,
    INTERNET_FLAG_RELOAD or INTERNET_FLAG_HYPERLINK,
    0
    );

  if hOpenUrl = nil then
  begin
    InternetCloseHandle(hOpen);
    ShowMessage('InternetOpenUrl Failed ! Please try again !');
    Exit;
  end;


  try
    dwX := 0;
    fsOut := TFileStream.Create(FileOut, fmCreate);
    try

      repeat
        InternetReadFile(
          hOpenUrl,
          @buffer,
          SizeOf(buffer),
          dwX
          );
        fsOut.Write(buffer, dwX);
      until dwX < SizeOf(buffer);

      Result := True;

    finally
      fsOut.Free;
    end;

  finally
    InternetCloseHandle(hOpenUrl);
    InternetCloseHandle(hOpen);
  end;

end;

Wywołanie, np.:

procedure TFormMain.Button1Click(Sender: TObject);
begin
  if HttpGetFile('http://www.dhost.info/jack1024', 'jack1024.html') then
    RichEdit1.Lines.LoadFromFile('jack1024.html')
  else
    ShowMessage('ERROR !');
end;
0

Jack dzięki za twój kod ale kiedy wpisałem stronke jakiej kod ma mi pobrać to ten kod był nie kompletny. Znacznie więcej kodu jest kiedy dam w przeglądarce IE pokaż źródło;

A Jeżeli chodzi o Indy to jaki to jaka jest nazwa komponentu który może tego dokonać.

Jeszcze jedno szukałem w artykułach coś na temat pobierania kodu i znalazłem takie coś http://4programmers.net/article.php?id=467
Tu wykorzystany jest komponent WebBrowser tylko nie wiem jak pobrać kod Html do RichEdit; Pomocy

0

Jack dzięki za twój kod ale kiedy wpisałem stronke jakiej kod ma mi pobrać to ten kod był nie kompletny. Znacznie więcej kodu jest kiedy dam w przeglądarce IE pokaż źródło;

A Jeżeli chodzi o Indy to jaki to jaka jest nazwa komponentu który może tego dokonać.

Jeszcze jedno szukałem w artykułach coś na temat pobierania kodu i znalazłem takie coś http://4programmers.net/article.php?id=467
Tu wykorzystany jest komponent WebBrowser tylko nie wiem jak pobrać kod Html do RichEdit; Pomocy

Ehh, w tym arcie stoi jak byk:

function GetHtml(WebBrowser : TWebBrowser) : string;
begin
  Result:=WebBrowser.OleObject.Document.documentElement.innerHTML;
end;

Wystarczy po prostu:

RichEdit.Lines.Text := GetHtml(WebBrowser);
0

Jack dzięki za twój kod ale kiedy wpisałem stronke jakiej kod ma mi pobrać to ten kod był nie kompletny. Znacznie więcej kodu jest kiedy dam w przeglądarce IE pokaż źródło;

Ten kod zwraca kompletne żródło danej strony. A jesli kody HTML zwrócone przez HttpGetFile i "pokaż źródło" w IE się różnią, to oznacza to, że nastąpiło przekierowanie (<meta http-equiv="Refresh" content="0;URL=jakis_tam_adres">)

0

Albo sa np. ramki.

0

Najdziwniejsze w tym wszystkim jest to że kiedy robie Pokaż źródło to nie ma żadnych ramek ani zadnych znaczników <meta>

ta funkcja też nie podaje takiego samego kodu Html jak " pokaż źródło" [???]

function GetHtml(WebBrowser : TWebBrowser) : string;
begin
Result:=WebBrowser.OleObject.Document.documentElement.innerHTML;
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1