Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > OOP
Register FAQ Members List Calendar Guía de estilo Today's Posts

Coloboración Paypal con ClubDelphi

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 23/04/2011
NETwolf's Avatar
NETwolf NETwolf is offline
Registrado
NULL
 
Join Date: Apr 2011
Posts: 2
Poder: 0
NETwolf Va por buen camino
Question Socket y directorios en delphi

Hola que tal mundo, soy nuevo en el foro asi que pido mil disculpas si es que me equivoque de seccion. Eh aca mi problema:

Estoy haciendo un programa con sockets de delphi y lo que quiero que haga mi programa es que cuando , tanto el server como el cliente se conecten, ambos puedan compartir los directorios y archivos que tiene en sus computadoras de origen. Pero no se como hacer para que mis datos se pasen de un socket a otro ya que la otra ves buscando si encontre como hacer para navegar a traves de mis directorios y archivos con un memo y un edit pero no puedo hacer que esos datos sean pedidos y concedios, tanto por el server como el cliente. Este es el ejemplo que encontre para poder visualizar todos los datos en un memo a traves de las direcciones puestas en un edit:


Código Delphi [-]
procedure ListaDirectorios(var lista:
  TStrings; dirPadre: string);
var
  SR: TSearchRec;
begin
  dirPadre := IncludeTrailingPathDelimiter(dirPadre);
  FindFirst(PChar(dirPadre + '*'), faDirectory, SR);
  repeat
    lista.Add(SR.Name);
  until (FindNext(SR) <> 0);
  FindClose(SR);
  end;
Código Delphi [-]
procedure TForm1.ClienteRead(Sender: TObject; Socket: TCustomWinSocket);
var
directorios: TStrings;
begin
if directoryexists(edit1.text) then
begin
directorios := TStringList.Create;
ListaDirectorios(directorios, edit1.text);
memo1.lines.add(directorio.text);
directorios.Free;
end
end;

Bueno reitero la pregunta, ¿como puedo hacer para que los datos de direcotorios y archivos que tenga una computadora sean transferidos a servidor con las direcciones que proporcione este mismo y viceversa

De antemano muchisimas gracias

y saludos

PD: ya quise ver que pasaba cuando le pedia al cliente los datos a trabes del servidor pero me salia el error sendto(10057) y me dice que el socket no esta conectado y que por eso no se pueden enviar los datos. Pero el socket si estaba conectado y despues se cierra la conexion
Reply With Quote
  #2  
Old 01/07/2011
maxinitto maxinitto is offline
Miembro
 
Join Date: May 2010
Posts: 45
Poder: 0
maxinitto Va por buen camino
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;    // Para partir split de los datos del socket conectado.
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
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
NMFTP :Error 10038 Socket operation on non socket judit Internet 2 25/05/2006 09:06
Creación de directorios en tiempo de ejecución desde aplicación Delphi vick Conexión con bases de datos 1 16/12/2005 21:18
Creación de directorios en tiempo de ejecución desde aplicación Delphi vick API de Windows 1 16/12/2005 21:13
Socket en Delphi android_beat Varios 11 12/04/2005 18:33
Socket Windows XP Delphi epalacios Varios 0 16/03/2004 12:38


All times are GMT +2. The time now is 12:35.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi