function FtpCommandDirList(hFtpSession: HINTERNET): String;
var
data_handle: HINTERNET;
bytes_read: DWORD;
text_buffer: PChar;
buffer_size: DWORD;
begin
result := '';
data_handle := nil;
if not FtpCommand(m_hFtpSession,true,FTP_TRANSFER_TYPE_ASCII,
PChar('NLST'),0,@data_handle) then
begin
SetErrorCode(GetLastError());
Application.MessageBox(PChar(SysErrorMessage(GetLastError())),'');
exit;
end;
// Read the data.
buffer_size := 1000; // Arbitrary value.
GetMem(text_buffer,buffer_size);
bytes_read := 1;
while bytes_read > 0 do
begin
InternetReadFile(data_handle,text_buffer,buffer_size, bytes_read);
result := result + System.Copy(text_buffer,0,bytes_read);
end;
InternetCloseHandle(data_handle);
FreeMem(text_buffer,buffer_size);
end;
These notes are believed to be correct for Delphi
6 and may apply to other versions as well.