Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-07-2010
gio013 gio013 is offline
Miembro
 
Registrado: abr 2010
Posts: 22
Poder: 0
gio013 Va por buen camino
thread object como enlazar?

olas.
ando con el dilema de los hilos...XD
bien enredado si estoy...
bueno estuve mirando los items de delphi y me encontre una ventanita que dice new item "thread object"
este me crea un unit y parece que escribe todo lo que debe tener el hilo para ejecutarlo, el problema es que al querer escribir el procedimiento del hilo donde dice { Place thread code here } este me dice:
[Pascal Error] Unit2.pas(65): E2003 Undeclared identifier: 'form1'
es como si no enlazara las dos forms.

también no diviso donde se le da la orden a el hilo de destruirse.
Responder Con Cita
  #2  
Antiguo 29-07-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por gio013 Ver Mensaje
[Pascal Error] Unit2.pas(65): E2003 Undeclared identifier: 'form1'
es como si no enlazara las dos forms.
también no diviso donde se le da la orden a el hilo de destruirse.
Lo primero es un error normal de delphi que no tiene nada que ver con hilos; Simplemente te dice que desde ahí (en esa unit) no encuentra la variable Form1. Normalmente eso se solventaría añadiendo el la Unit del Form1 al USES, pero eso en hilos creo que no lo vas a poder hacer.
Cuando un hilo "interactúa" con elementos de interficie como un form o controles de la VCL debe hacerlo utilizando "sincronización" o el método Synchronize; Si no lo haces así tendrás problemas.

Para destruir los hilos yo utilizo el evento OnTerminate; Donde programo operaciones finales. También hay una propiedad donde puedes decirle que el hilo(thread) se "autodestruya" al acabar.

Puedes reviar un par de ejemplos con código, aquí y aquí. Si no recuerdo mal, en el FTP del club, también tienes algunos ejemplos.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 29-07-2010
gio013 gio013 is offline
Miembro
 
Registrado: abr 2010
Posts: 22
Poder: 0
gio013 Va por buen camino
grax neftali ...
voy a checar los links....
estudiare a ver que sale..
Responder Con Cita
  #4  
Antiguo 30-07-2010
gio013 gio013 is offline
Miembro
 
Registrado: abr 2010
Posts: 22
Poder: 0
gio013 Va por buen camino
bueno bueno...
jejeje
estuve viendo el ejemplo de un de los thread que dejaste en este link, ahora bien no comprendo bien que se debe colocar en los constructor que debe ir entre los paréntesis.
ejem:
constructor TProgressBarThread.Create(Box: TProgressBar; AStep:Integer; ThreadPriority: TThreadPriority);

lo que veo es los items que intervienen en el thread y por que la palabra Box ó AStep? a que refiere esto?, tienen algún orden?


graxxx por leer
Responder Con Cita
  #5  
Antiguo 30-07-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por gio013 Ver Mensaje
constructor TProgressBarThread.Create(Box: TProgressBar; AStep:Integer; ThreadPriority: TThreadPriority);

lo que veo es los items que intervienen en el thread y por que la palabra Box ó AStep? a que refiere esto?, tienen algún orden?
Lo que yo he hecho en este caso es aprovechar el constructor del Thread para pasarle datos que me interesan. En este caso le paso esos valores que luego asigno a propiedades internas del thread dentro del Create:

Código Delphi [-]
constructor TProgressBarThread.Create(Box: TProgressBar; AStep:Integer;
                                      ThreadPriority: TThreadPriority);
begin
  inherited Create(False);
  Self.FStep := AStep;
  pb := Box;
end;

Cuando haces la llamada al Create del Thread ya le pasas los parámetros:

Código Delphi [-]
  Tpb1 := TProgressBarThread.Create(pb1, 1, tpNormal);

Otra opción si te resulta más fácil el dejar el create como lo tiene la clase thread y después de crearlo asignarías los valores de forma manual. Sería algo así:

Código Delphi [-]
  Tpb1 := TProgressBarThread.Create(False);
  Tpb1.Progressbar := pb1;
  Tpb1.Step := 1;
  Tpb1.Priority := tpNormal;

Como tú defines la clase del Thread puedes "redefinir" el Create si te es más cómodo, como he hecho yo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 07-08-2010
gio013 gio013 is offline
Miembro
 
Registrado: abr 2010
Posts: 22
Poder: 0
gio013 Va por buen camino
Smile

grax...

jeje , neftali revisaré bien lo que me dices, disculpa no a ver contestado antes, pero andaba sin pc....
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿cómo saber si un thread está vivo? Faust Varios 3 25-05-2010 20:22:11
Sobre error "Object reference not set to an instance of an object" fer21unmsm .NET 2 11-05-2007 21:56:46
Como hago esto? multi thread?!?! MaMu OOP 7 16-04-2007 21:53:51
Thread bendito thread...se me pierde la ventana Seba.F1 API de Windows 5 02-02-2006 00:16:30
como usar object pascal y gtk Lionheart OOP 6 09-12-2005 19:31:08


La franja horaria es GMT +2. Ahora son las 21:57:15.


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