Używam WinInet API do napisania małego programu do FTP. Jest w nim taka jedna funkcja która wypisuje wszystkie foldery w folderze X. Gdy jest wywoływana to nie wiem czemu <ort>wykożystuje </ort>poprzednie wyniki...
function ftpDirDir(hServ: HINTERNET; dir: PChar): string;
var
hSearch: HINTERNET;
Data: WIN32_FIND_DATA;
begin
result:='';
hSearch:=FtpFindFirstFile(hServ, nil, Data, INTERNET_FLAG_RELOAD, 0); //tu jest folder .
if hSearch<>nil then
begin
InternetFindNextFile(hSearch, @Data); // folder ..
InternetFindNextFile(hSearch, @Data); // pierwsza ciekawa rzecza
repeat
if Data.dwFileAttributes=faDirectory then
result:=result+string(dir)+string(Data.cFileName)+' '; // olejcie rzutowania, to przez ten gupi PChar :/
until not InternetFindNextFile(hSearch, @Data);
InternetCloseHandle(hSearch);
end;
end;
Za drugim wywołaniem jest to co wcześniej+nowe. Niby flaga INTERNET_FLAG_RELOAD powinna temu zapobiec ale coś jej nie wychodzi. To nie powinno być też z wartością funkcji (result) bo przecież jest result:=''. Wie ktoś czemu są te powtórzenia i jak ich uniknąć?