Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del 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: 19
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
  #2  
Antiguo 12-09-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
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
  #3  
Antiguo 12-09-2005
Antuan Antuan is offline
Miembro
 
Registrado: jul 2005
Ubicación: Madrid
Posts: 73
Poder: 19
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
  #4  
Antiguo 12-09-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Cita:
Empezado por Antuan
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.
Creo que deberias hacer es cerrar la conexión antes de abrir otra. Al hacer peticiones a las paginas web, la conexion se cierrar automaticamente cuando finaliza la transferencia, de otra forma tenes que cerrarla vos.
Cita:
Empezado por Antuan
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.
Son dos cosas diferentes, una cosa es crear una clase y otra es que la función te devuelva el string.
Lo que pasa que quien captura la respuesta de la pagina web es el evento OnRead y no tu procedimiento PeticionWeb.
Cita:
Empezado por Antuan
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.
Lo de la clase lo vemos cuando termines tu aplicación web, porque aprender a crear clases es todo un tema y mejor lo manejamos por separado, una vez que lo tengas terminado.
Cita:
Empezado por Antuan
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.
Me parece muy bien, y de nada.
__________________
[Crandel]
Responder Con Cita
  #5  
Antiguo 14-09-2005
Antuan Antuan is offline
Miembro
 
Registrado: jul 2005
Ubicación: Madrid
Posts: 73
Poder: 19
Antuan Va por buen camino
Como se escribe la etiqueta Citar

Como se escribe la etiqueta citar? No lo he visto en las etiquetas de VB
Tambien aprovecho y como se trata del mismo tema.
Como declaro el componente ClientSocket en una aplicacion DLL sin form para que se le puedan asignar las propiedades y los eventos.
Muchas gracias de nuevo.
Responder Con Cita
Respuesta



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 09:53:49.


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