... me siento absoluta y totalmente ignorado !
.... bueno, allá vosotros !
Aun así, os vuelvo a indicar que el código expuesto es imposible que funcione correctamente, ya cambies a Oracle o a superbasededatos Ver 1000.1, oc ambies igualmente cualquier componente a supercomponentes Ver 2021.7.
De nuevo os indico los errores, según mi punto de vista, la mayoría de ellos ya los comenté anteriormente :
Código Delphi
[-]THilo = class(TThread)
private
procedure ActualizaMemo;
procedure PonTag;
public
CadenaMostrar: string;
constructor Create( Suspendido: Boolean );
protected
procedure Execute; override;
end;
El Thread debe de ser TOTALMENTE encapsulado. A lo mejor a la primera no da problemas, pero a ls segunda o tercera, seguro que dá problemas ...
Código Delphi
[-]procedure THilo.Execute;
begin
while Self.Terminated = False do begin
if HPrueba.Tag = 0 then begin
Synchronize( PonTag );
No debes de acceder a una Variable de HPrueba dentro del propio Thread.
Por qué os empeñais en crear dos hilos diferentes con el mismo nombre de la variable ?
Código Delphi
[-]procedure THPrueba.Button20111Click(Sender: TObject);
var Hilo: THilo;
begin
Hilo := THilo.Create( True );
Hilo.FreeOnTerminate := False;
Hilo.Resume;
Timer1.Enabled := True;
end;
Por mucho que lo ejecuteis después en un Timer, el Thread se vuelve a crear dentro de Button20111Click con el mismo nombre de la variable, y eso os va a dar problemas porque en ningún caso va a saber referenciar correctamente cualquier llamada.
Por qué no probais :
Código Delphi
[-]procedure THPrueba.Timer1Timer(Sender: TObject);
var Hilo2: THilo;
begin
Hilo2 := THilo.Create( True );
Hilo2.FreeOnTerminate := False;
Hilo2.Resume;
Timer1.Enabled := False;
end;
Saludos ... !