puedes usar la misma funcion que usas para listar tus directorios pero en el servidor y que dicho servidor vaya guardando cada directorio separado por un split me explico...
imagina que queremos leer c:\ pues si tienes 10 carpetas en c tu funcion para leer los directorios usara un bucle desde 0 a 9 entonces en dicho bucle tienes que hacer
Código Delphi
[-]directorios := directorios + nombreobtenidodelservidor + '|';
cuando termine el bucle te qdara una cadena fea de larga que envias desde el servidor al cliente usando
Código Delphi
[-]Servidor.socket.sendText(directorios);
y en el cliente usa la funcione explode que es para kitar los split me explico
Código Delphi
[-]
function Explode(const Separator, S: string; Limit: Integer = 0): TStringDynArray; var
SepLen: Integer;
F, P: PChar;
ALen, Index: Integer;
begin
SetLength(Result, 0);
if (S = '') or (Limit < 0) then Exit;
if Separator = '' then
begin
SetLength(Result, 1);
Result[0] := S;
Exit;
end;
SepLen := Length(Separator);
ALen := Limit;
SetLength(Result, ALen);
Index := 0;
P := PChar(S);
while P^ <> #0 do
begin
F := P;
P := AnsiStrPos(P, PChar(Separator));
if (P = nil) or ((Limit > 0) and (Index = Limit - 1)) then P := StrEnd(F);
if Index >= ALen then
begin
Inc(ALen, 5);
SetLength(Result, ALen);
end;
SetString(Result[Index], F, P - F);
Inc(Index);
if P^ <> #0 then Inc(P, SepLen);
end;
if Index < ALen then SetLength(Result, Index);
end;
declara esta variable
Código Delphi
[-] Resultado : TStringDynArray;
si tienes hola|mellamo|pepe lo que hace esa funcion es que al tu pasarle un array
Código Delphi
[-]Resultado := Explode('|', Cliente.Socket.ReceiveText);
te quedaria un array con el nombre Resultado y con 3 elementos
Código Delphi
[-]
Resultado[1] := 'hola';
Resultado[2] := 'mellamo';
Resultado[3] := 'pepe';
y nada un pequeño bulce y lo imprimes en tu memo o listview.
si tienes mas duda pregunta