Mam stronę internetową i chciałbym by w moim programie jako linki (nazwy plików) wyświetlana była zawartość folderu znajdującego się na serwerze w jaki sposób doprowadzić do tego cudu [green]
Może przykładowo na serwerze dać skrypt PHP, niech on przeczyta zawartość folderu, sformatuje ją do wybranej postaci, a potem twój program, który zamówił stronę skryptu, niech przeczyta otrzymany (wygenerowany) kod strony i zaprezentuje wynik.
Albo po prostu TIdFTP + F1 ;)
Możesz wykorzystać moduł WinInet i funkcje: FtpFindFirstFile i InternetFindNextFile.
Dzięki WinInet nie musisz stosować żadnych dodatkowych komponentów, a rozmiar pliku EXE nie zwiększy się o kilka- kilkadziesiąt KB.
Szczegółowy opis WinInet: http://msdn.microsoft.com/library/en-us/wininet/wininet/portal.asp
Poniższa procedura zwraca listę plików i katalogów z katalogu głównego użytkownika na serwerze ftp. Do zmiany bieżącego katalogu służy funkcja FtpSetCurrentDirectory.
Przerobienie takiej listy na linki jest już banalne.
// wrzuć na formularz ListBox-a
uses ..., WinInet;
procedure TForm1.Button1Click(Sender: TObject);
var
hOpen, hConnect, hFind: HINTERNET;
w32fd: TWin32FindData;
s: string;
begin
ListBox1.Items.Clear;
hOpen := InternetOpen('', 0, '', '', 0);
if hOpen = nil then
begin
ShowMessage('InternetOpen failed!');
Exit;
end;
hConnect := InternetConnect(
hOpen, 'nazwa_hosta',
21, 'nazwa_użytkownika', 'hasło',
INTERNET_SERVICE_FTP, 0, 0
);
if hConnect = nil then
begin
ShowMessage('InternetConnect failed!');
if hOpen <> nil then InternetCloseHandle(hOpen);
Exit;
end;
try
FillChar(w32fd, SizeOf(w32fd), 0);
hFind := FtpFindFirstFile(hConnect, '*', w32fd, 0, 0);
// * - file mask
if hFind <> nil then
try
repeat
s := w32fd.cFileName;
if w32fd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY > 0 then
s := '[DIR] ' + s;
ListBox1.Items.Add(s);
until integer(InternetFindNextFile(hFind, @w32fd)) = 0;
finally
InternetCloseHandle(hFind);
end;
finally
if hConnect <> nil then InternetCloseHandle(hConnect);
if hOpen <> nil then InternetCloseHandle(hOpen);
end;
end;
Dzieki Jack całkiem niezłe, to chyba załatwi mój problem. Widzę że dużo zmieniło się na forum coraz więcej chętnych do pomocy, a coraz mniej F1,Google....