![]() |
Me da error al quitar el componente ClientSocket1
Bueno como no dejo de ser novato pues tengo un problema que no veo como arreglarlo y a lo mejor me he opcecado y no lo veo.
Es un form que lo estoy mirando por programacion y en concreto con un componente no visual el TClientSocket. Me da error al compilar Si inclullo el componente visualmente en el form y no defino la variable en la seccion private, entonces me funciona bien. Pero si quito el componente ClientSocket de form1 y lo defino en la seccion private ClientSocket1: TClientSocket; entonces me da un error al compilar. seguro que hago algo mal. Me podeis decir que es. Muchas gracias. Este es el form1
|
Si no lo pones como componente, que se crea automaticamente al crear el form, deberás crearlo antes de nada.
En el FormCreate antes de nada: ClientSocket1 := TClientSocket.Create(Self); Y para mayor seguridad en el FormClose: ClientSocket1.Free; |
Ha sido un exito
Perfecto me funciona bien.
Muchas gracias Como estoy aprendiendo y buscando cosas, y experimentando. ¿Se podria pasar el codigo del boton a una funcion?
|
Hola,
Cita:
|
Tiene que responder un texto
Como ves he caido de nuevo en delphi.
El el primer hilo tengo lo que devuelve que es esto Pero lo logico es que lo devuelva como dices en el ReciveText en un EditText. Intentare lo que dices pero al hacer la funcion me dice que el componente ClientSocket1 no esta definido y sin embargo en el apartado private lo tengo definido. Volvere a dejarlo de nuevo y seguir con lo que estaba haciendo hasta que coja nivel. |
Lo mas apropiado para eso es utilizar un procedimiento en vez de una funcion.
Lo declaras en la seccion private procedure PeticionWeb; y en implementation Lo podes mejorar para que en vez de que siempre realice la peticion de la misma pagina, que se le pasen los parametros de la web que se quiere llamar. Espero que te haya servido... Edicion: Declara la funcion de la misma forma que declaro este procedimiento y te va a reconocer el ClientSocket1. |
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. |
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. |
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
|
Hey, muchas gracias, justo estaba buscando como manejar los eventos de los objetos creados en tiempo de ejecucion
Con esta linea aprendi. Una cosa, si la funcion PeticionWeb no va a devolver ningun resultado te conviene utilizar un procedimiento. |
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. |
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):
|
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. |
Cita:
Cita:
Lo que pasa que quien captura la respuesta de la pagina web es el evento OnRead y no tu procedimiento PeticionWeb. Cita:
Cita:
|
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. |
La franja horaria es GMT +2. Ahora son las 21:40:12. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi