Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-09-2005
Antuan Antuan is offline
Miembro
 
Registrado: jul 2005
Ubicación: Madrid
Posts: 73
Poder: 21
Antuan Va por buen camino
Con el procedure he resuelto en problema

Bien pues eso, que con el procedure he resuelto el problema y he modificado el codigo para ver varias web con un edit1.text
Pero tengo que pulsar dos veces con el raton el en boton
La primera no aparece nada y la segunda vez si
Lo he intentado haciendo una funcion y no reconoces el ClientSocket1
Bueno muchas gracias y poco a poco creo que lo ire sacando. Supongo.
Aunque con vuestra ayuda tambien voy aprendiendo y bastante.
La siguiente fase sera evitar tener que pulsar 2 veces el raton y si lo consigo intentare que el resultado en vez de darlo en un memo me lo de en un EditText.
Responder Con Cita
  #2  
Antiguo 11-09-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Antuan, echando un vistazo a la ayuda de "TClientSocket" y temas relacionados me doy cuenta de lo poco que sé de ellos. Quiero decir que hacer la función, como dije arriba, no se ve tan sencillo como acaso di a entender. Se me ocurre una forma de rectificar, y es, ¿qué quieres conseguir exactamente? ¿qué información tratas de lograr? ¿Qué se supone que ha de haber en la propiedad "ReceiveText"? Lo digo por ver si podría lograrse de algún otro modo echarte una mano.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 11-09-2005
Antuan Antuan is offline
Miembro
 
Registrado: jul 2005
Ubicación: Madrid
Posts: 73
Poder: 21
Antuan Va por buen camino
Ya lo he consegido y pongo el codigo a disposicion del que lo necesite.

Ya lo he conseguido y pongo el codigo a disposicion del que lo necesite pero dejo que alguien me ayude como siempre para no tener que pulsar el boton 2 veces.
Se trata de sacar todo el codigo de una url incluso las cabeceras.
Yo como soy un novato aun no esta del todo depurada pero funciona.
es un formulario con dos botones, una labe,l un EditText y um MemoEdit.
Este es el codigo
Código Delphi [-]
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Sockets, ScktComp;
type
    TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Edit1: TEdit;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    ClientSocket1: TClientSocket;
    function PeticionWeb(var url: string):string;
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
   ClientSocket1 := TClientSocket.Create(Self);
   ClientSocket1.ClientType := ctNonBlocking;
   ClientSocket1.Name:= 'ClientSocket1';
   ClientSocket1.Host := 'www.auna.com';
   ClientSocket1.Port := 80;
   ClientSocket1.OnRead:= ClientSocket1Read;
   ClientSocket1.Active := False;
end;
function TForm1.PeticionWeb(var url: string):string;
  begin
    result:= ' ';
     with ClientSocket1.Socket do begin
     Memo1.Clear;
     ClientSocket1.Host := url;
     ClientSocket1.Active := True;
     SendText('GET / HTTP/1.0'+#13#10);
     SendText(''+#13#10);
     end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var url: string;
begin
url:= Edit1.Text;
PeticionWeb(url);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
begin
   memo1.Lines.Add(ClientSocket1.Socket.ReceiveText);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ClientSocket1.Free;
end;
end.
Responder Con Cita
  #4  
Antiguo 11-09-2005
Avatar de Sotrono
Sotrono Sotrono is offline
Miembro
 
Registrado: abr 2004
Ubicación: Buenos Aires - Argentina
Posts: 396
Poder: 23
Sotrono Va por buen camino
Hey, muchas gracias, justo estaba buscando como manejar los eventos de los objetos creados en tiempo de ejecucion
Código Delphi [-]
 ClientSocket1.OnRead:= ClientSocket1Read;
Con esta linea aprendi.

Una cosa, si la funcion PeticionWeb no va a devolver ningun resultado te conviene utilizar un procedimiento.
Responder Con Cita
  #5  
Antiguo 11-09-2005
Antuan Antuan is offline
Miembro
 
Registrado: jul 2005
Ubicación: Madrid
Posts: 73
Poder: 21
Antuan Va por buen camino
Me interesa la funcion

Me interesa la funcion pero lo que no se hacer es como devolver el resultado del ClientSocket1.Socket.ReceiveText en un string en vez de en un MemoEdit.
Yo solo necesito las cabeceras y el codigo que he puesto da las cabeceras y la pagina completa.
Responder Con Cita
  #6  
Antiguo 12-09-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 25
Crandel Va por buen camino
Antuan, ahora que ya casi tienes el código, te recomiendo que avances al paso siguiente y crees una clase a que resuelva tu problema.

Aca te dejo algunas correcciones a tu código (los comentarios son todos códigos que no deben ir):
Código Delphi [-]
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Sockets, ScktComp;
type
    TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Edit1: TEdit;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    ClientSocket1: TClientSocket;
    // lo cambie
    procedure PeticionWeb(url: string);
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
  ClientSocket1 := TClientSocket.Create(Self);
  ClientSocket1.ClientType := ctNonBlocking;
  //  ClientSocket1.Name:= 'ClientSocket1';   no modificar el name
  //  ClientSocket1.Host := 'www.auna.com'; para que asignarle una propiedad que vas a modificar despues
  ClientSocket1.Port := 80;
  ClientSocket1.OnRead:= ClientSocket1Read;
  ClientSocket1.Active := False;
end;
// esta función siempre devuelve una cadena vacia
// tampoco va el var
//function TForm1.PeticionWeb(var url: string):string;
procedure TForm1.PeticionWeb(url: string);
begin
  result:= ' ';
  with ClientSocket1.Socket do
  begin
    Memo1.Clear;
    ClientSocket1.Host := url;
    ClientSocket1.Active := True;
    // muy posiblemente este código no deba estar aca
    // sino en el evento onConnect para que te responda con un solo click
    SendText('GET / HTTP/1.0'+#13#10);
    SendText(''+#13#10);
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
//var url: string;
begin
//  url:= Edit1.Text;
//PeticionWeb(url);
// reemplazamos todo por:
  PeticionWeb(Edit1.Text);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
  Close;
end;
procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
begin
  memo1.Lines.Add(ClientSocket1.Socket.ReceiveText);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  ClientSocket1.Free;
end;
end.
__________________
[Crandel]
Responder Con Cita
  #7  
Antiguo 12-09-2005
Antuan Antuan is offline
Miembro
 
Registrado: jul 2005
Ubicación: Madrid
Posts: 73
Poder: 21
Antuan Va por buen camino
Muchas gracias

Hola Angel muchas gracias por las correciones, de esta manera es como se aprende.
Se me olvido comentar un pequeño fallo y es que mientras que este activo el ClientSocket1 mo me deja hacer una nueva peticion asi que me tendre que comer los puños como aqui se dice y seguir investigando.
Sobre la funcion que me devuelva la respuesta en un memo en vez que lo haga en un string. Me comentas que tengo que crear una nueva clase.
Llevo muy poco tiempo con Delphi pracicamente nada. Le estoy entrando al Pascal y atraves de esto voy cogiendo poco a poco a Delphi.
Asi que no seas malo y dame una idea de como hacerlo.
A ver si al final dejo una funcion en condiciones para que los amigos como yo que sabemos muy poco.
Muchisimas gracias por vuestra ayuda.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 18:28:52.


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