• Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   13-02-2016

      Prezados membros do Clube do Hardware,

      Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:
        Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas ao formulário abaixo:    Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
Seguidores 0
No Suffer

Multi processamento

4 posts neste tópico

<font color='#000000'>Kros Amigos,

o material que procuro é para Delphi, de preferência 7 ou 6.</font>

Compartilhar este post


Link para o post
Compartilhar em outros sites

<font color='#000000'>Aqui vai uma dica....

Pode fazer que funciona muito bem, já tenho alguns aplicativos que só consegui resolver alguns problemas usando multiprocessamento...

706 - Construindo Threads com Delphi

Hoje em dia, os programas de computador devem ser cada vez mais rápidos de serem executados e que possam realizar várias tarefas ao mesmo tempo, para que o usuário possa realizar outras operações, ao mesmo tempo que as executa.

Mas para que isso aconteça, nós desenvolvedores de software devemos escrever nossos programas baseados nesta tecnologia de muitas linhas de execução, ou simplesmente "Threads".

Um thread pode realizar vários operações residindo num mesmo espaço de endereço na memória, quem realmente controla esses threads é o sistema operacional, que se baseia em suas prioridades. Essas proridades são setadas por nós quando desenvolvemos um thread. A boa nova, é que o Delphi é compatível com esta tecnologia e fico triste quando vejo muitas pessoas que ainda se empolgam muito pelo fato do Delphi ser visual e fácil de usar, e esquecem de seu enorme potencial.

Eu resolvi mostrar como se faz um thread, pois, é de suma responsabilidade de um programador que uma aplicação fique estável, e não devemos, num projeto grande, nos basear somente na arquitetura de Orientação a Objeto e IDE aprimorado do Delphi para Desenvolver software.

Para se criar um thread em Delphi, devemos criar uma classe que derive da classe "TThread", que está escrita na biblioteca "Classes". A classe TThread é uma classe abstrata, portanto não podemos utilizá-la diretamente, pois devemos implementar um de seus métodos. Esse método se chama "Execute", ele é responsável por todo o funcionamento do seu Thread. Junto com esse método, temos o outro método "Synchronize" que serve para acessar partes da VCL sem que percamos o controle da aplicação, ou seja, o Windows ainda possa controlar nossos objetos enviando mensagens para eles. Esse método tem um único argumento que é do tipo procedimento, ou seja, temos que definir procedimentos em nossa classe que controlem a VCL, e quando quisermos chamá-los, devemos passá-los como argumento do método Synchronize. O nosso thread fará o seguinte: Ele irá contar quantas linhas um arquivo texto possui, e a cada linha que ele ler, irá incrementar uma label que estará num form. A classe ficará assim:

--------------------------------------------------------------------------------

type

 TContador = class(TThread)

 private

 FNomeArq: string;

 FNLinhas: Longint;

 protected

 procedure Execute; override; // Método anulado

 procedure IncLabel; virtual;

 public

 constructor Create(const Arquivo: string);

end;

implementation

procedure TContador.Execute;

var

 Arq: TextFile;

 S: string;

begin

 try

 AssignFile(Arq, FNomeArq);

 Reset(Arq);

 while (not SeekEof(Arq)) do

 begin

 ReadLn(Arq, S);

 FNLinhas := FNLinhas + 1;

 Synchronize(IncLabel); // Aqui é chamado o contador...

 end;

 finally

 CloseFile(Arq);

 end;

end;

procedure TContador.IncLabel;

begin

 Form1.Label1.Caption := IntToStr(FNLinhas);

 { o Contador será executado em modo protegido por uma Seção Critica do Windows}

end;

constructor TContador.Create(const Arquivo: string);

begin

 inherited Create(True); { Chama o contrutor herdado. Ele irá temporariamente colocar o thread em estado de espera para depois executá-lo. }

 FNomeArq := Arquivo;

 FreeOnTerminate := True; // Libera o objeto após terminar.

 Priority := TpLower; { Configura sua prioridade na lista de processos do Sistema operacional. }

 Resume; // Inicia o Thread.

end;

--------------------------------------------------------------------------------

para construir este exemplo, inicie uma nova aplicação, coloque um "Edit" e uma "Label" no Form. Inclua um botão também que quando pressionado irá contar as linhas do arquivo que estiver no Edit. Escreva a classe acima numa unit separada e no código do botão faça assim:

procedure TForm1.Button1Click(Sender: TObject);

var

 Cont: TContador;

begin

 Cont := TContador.Create(Edit1.Text);

end;

Com esse código simples, podemos calcular quantas linhas estiverem no arquivo do Edit. Para testar digite no Edit o arquivo "C:\Frunlog.txt".

Espero que vocês gostem da surpresa, e dada a facilidade enorme de se criar um thread em Delphi, aconselho a vocês a utilizarem threads mais frequentemente nos seus aplicativos. Mas não em excesso e sejam cautelosos configurando as prioridades dos Threads.

{Dica retirada do Site Delphi Journal</font>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!


Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.


Entrar agora
Entre para seguir isso  
Seguidores 0