Witam czy wie ktoś może jak w komponencie RichEdit otworzyć kod źródłowy strony np http//www.wp.pl,
proszę o pomoc
Witam czy wie ktoś może jak w komponencie RichEdit otworzyć kod źródłowy strony np http//www.wp.pl,
proszę o pomoc
Ściągasz stronę za pomocą HTTPGet, a potem to chyba się domyślisz.
ewentualnie TIDHTTP z pakietu Indy albo nawet poprzez Sockety i po przeczytaniu RFC odpowiedniego.
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);
Ja radzę skorzystać z komponentu indy... Artykuł o nim jest w artykułach.
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;
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
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);
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">)
Albo sa np. ramki.
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;
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.