Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-02-2025
Saltimbanki Saltimbanki is offline
Miembro
 
Registrado: oct 2024
Posts: 10
Poder: 0
Saltimbanki Va por buen camino
Implementar TThread básico de espera (animacion)

Hola, seria posible que alguien me pueda facilitar un fragmento de codigo para una aplicacion multihilo ??, por ejemplo, dos ProgressBar con dos botones que al pulsar cada boton haga correr cada barra, una con un intervalo de Sleep(1000) y otra con Sleep(500).

Gracias

Pd: My English is very little and with this code I'm going to the madness

Thanks

Última edición por Neftali [Germán.Estévez] fecha: 03-02-2025 a las 17:24:30. Razón: Ampliar el título
Responder Con Cita
  #2  
Antiguo 03-02-2025
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Puedes hacer el ejercicio preguntando al chatgpt
Responder Con Cita
  #3  
Antiguo 03-02-2025
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: 19.435
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
Ya que eres nuevo por aquí, te recomientdo que revises la Guía de estilo de los foros.
Incluye poner títulos descriptivos a los mensajes.

Por lo demás, ya te han comenado en el hilo anterior un mensaje que incluye bastantes referencias, donde puedes encontrar códigos sobre threads. Están en Delphi, pero si los revisas no es complicado pasarlos a C++Builder ya que las instrucciones son las mismas, pero con la sibtaxos de C++.
https://www.clubdelphi.com/foros/sho...ight=Threading


Igualmente si buscas en los foros, encontrarás algunos hilos sobre Threads en el foro de C++, por ejemplo este:
http://www.clubdelphi.com/foros/showthread.php?t=30192
(seguramente habrá más).

NOTA: Actualizao el título del mensaje.
__________________
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
  #4  
Antiguo 03-02-2025
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: 19.435
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 Casimiro Notevi Ver Mensaje
Puedes hacer el ejercicio preguntando al chatgpt

Incluso, he visto que si le das este código del ejemplo que hay aquí:
https://neftali.clubdelphi.com/ejemp...-sin-utilidad/



Código Delphi [-]
type

  //: Clase para definir un Thread con prograssBar
  TProgressBarThread = class(TThread)
  private
    pb: TProgressBar;
    FStep: Integer;
  protected
    procedure Execute; override;
    procedure MoveTh;
  public
    property Step:Integer read FStep write FStep;
    constructor Create(Box: TProgressBar; AStep:Integer; ThreadPriority: TThreadPriority);
  end;
...


implementation

uses
  graphics;

{ TProgressBarThread }
constructor TProgressBarThread.Create(Box: TProgressBar; AStep:Integer;
                                      ThreadPriority: TThreadPriority);
begin
  inherited Create(False);
  Self.FStep := AStep;
  pb := Box;
end;

procedure TProgressBarThread.Execute;
begin

    while true do begin
      Synchronize(MoveTh);
      Sleep(50);
    end;

end;

procedure TProgressBarThread.MoveTh();
begin
  pb.Position := (pb.Position + FStep) MOD 100;
end;

Y le dices que te lo traduzca a C++Builder, saca algo que al menos está en C++

Código:
#include <vcl.h>
#pragma hdrstop
#include <tchar.h>
#include <Classes.hpp>
#include <ComCtrls.hpp>

class TProgressBarThread : public TThread
{
private:
    TProgressBar *pb;
    int FStep;
protected:
    void __fastcall Execute();
    void __fastcall MoveTh();
public:
    __fastcall TProgressBarThread(TProgressBar *Box, int AStep, TThreadPriority ThreadPriority);
    __property int Step = {read=FStep, write=FStep};
};

__fastcall TProgressBarThread::TProgressBarThread(TProgressBar *Box, int AStep, TThreadPriority ThreadPriority)
    : TThread(false)
{
    FStep = AStep;
    pb = Box;
    Priority = ThreadPriority;
}

void __fastcall TProgressBarThread::Execute()
{
    while (true)
    {
        Synchronize(&MoveTh);
        Sleep(50);
    }
}

void __fastcall TProgressBarThread::MoveTh()
{
    pb->Position = (pb->Position + FStep) % 100;
}
Habrá que ver sio lo que sale finalmente tiene sentido...
__________________
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
  #5  
Antiguo 03-02-2025
chenech chenech is offline
Miembro
 
Registrado: dic 2013
Posts: 138
Poder: 13
chenech Va por buen camino
Un ejemplo bastante simple que cada 5 segundos actualiza un label con la hora, añade un botón y verás que sigue operativo mientras se va actualizando el label:
Código PHP:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <System.Threading.hpp>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponentOwner)
    : 
TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    
_di_ITask tasks[1];
    
tasks[0] = TTask::Create([&] ()
    {
        
Prueba();
    });
    
tasks[0]->Start();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Prueba(void)
{
        
Sleep(5000);
        
Label1->Caption Time();
}
//--------------------------------------------------------------------------- 
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
Salir de TThread joseprad Varios 4 03-01-2015 16:43:36
FTP y TThread keys Internet 4 01-06-2011 08:12:43
TThread y componentes de red noob OOP 0 18-04-2009 01:25:07
Tthread Vs. Application -> ProcessMessages(); Peterman Varios 8 31-05-2007 03:05:03
Lio con TThread diegofhernando Varios 0 20-01-2004 17:58:35


La franja horaria es GMT +2. Ahora son las 06:37:34.


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