Proto jsem napsal "když už máš server". Pak snad víš, co a jak zpracováváš a můžeš to dělat, jak se ti zlíbí. V tom odkazovaném programu třeba takhle:
Přidáš funkci, pro výpis disků.
function TFtpServerThread.builddrivelist(): string;
var
Drives: array[0..128] of char;
pDrive: PChar;
r: LongWord;
begin
r := GetLogicalDriveStrings(SizeOf(Drives), Drives);
if (r = 0) or (r > SizeOf(Drives)) then Exit;
pDrive := Drives;
while pDrive^ <> #0 do
begin
result := result + 'drwxrwxrwx 1 root root 1 1 Jan 2000 drive' + pDrive^ + CRLF;
inc(pDrive, 4);
end;
end;
Použiješ ji pro výpis kořenového adresáře:function TFtpServerThread.buildlist(value: string): string;
var
SearchRec: TSearchRec;
r: integer;
s: string;
begin
result := '';
if value = '' then
exit;
if value = '\' then
begin
result := builddrivelist();
exit;
end;
if value[length(value)] <> '\' then
...A adekvátně upravíš funkci, která zjišťuje umístění na disku:function TFtpServerThread.buildrealname(value: string): string;
begin
value := replacestring(value, '..', '.');
value := replacestring(value, '/', '\');
if value = '\' then
result := value
else if (length(value) >= 7) and (leftstr(value, 6) = '\drive') and (value[7] in ['A'..'Z']) then
result := value[7] + ':\' + copy(value, 8, length(value))
else
result := '.\data' + value;
end;
Takže ano, je to jednoduché a ano, pomůžu, pokud přijdeš s konkrétním problémem.