Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Nayara Oliveira

Programa de Pesquisa Acadêmica

Recommended Posts

Boa noite pessoal!

Estou tentando criar um programa aqui no delphi sobre pesquisa acadêmica, preciso de somar as idades e calcular quantos foram entrevistados. Coloquei a variavel idade assim:( idade:=idade+1) só que não soma, nos entrevistados a mesma coisa.

ASSIM:

var

total,idade,qtd:integer;

begin

if ( EdtNome.text='') and (EdtIdade.text='') and (CmbSexo.text='') and (CmbGosta.text='')then

begin

showmessage('Informe todos os dados');

end

else

LtbDados.Items.Add(EdtNome.text);

LtbDados.Items.Add(EdtIdade.text);

LtbDados.Items.Add(CmbSexo.text);

LtbDados.Items.Add(CmbGosta.text);

total:=total+1;

EdtTotal:=inttostr(total);

idade:=strtoint( EdtIdade.text);

qtd:=idade+qtd;

EdtTotal.text:=inttostr(qtd);

 

 

Sou nova nessa área, se puderem me ajudar.

Vlw!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por favor, com todo respeito, poderia ser um pouquinho mais específica ou clara, pois não consegui entender sua dúvida.

 

Você está tentando incrementar a variável idade mas ela não recebe um valor novo? É isso ?

Quando é executado esse código ?

 

Dica: Já que você está começando, pesquisa por orientação a objetos no delphi, só pra quebrar um pouco essa idéia que o delphi é uma linguagem Orientada a "eventos/componentes". Não tem muito a ver com seu problema, mas vai ajudar você a conhecer mais sobre a linguagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por favor, com todo respeito, poderia ser um pouquinho mais específica ou clara, pois não consegui entender sua dúvida.

 

Você está tentando incrementar a variável idade mas ela não recebe um valor novo? É isso ?

Quando é executado esse código ?

 

Dica: Já que você está começando, pesquisa por orientação a objetos no delphi, só pra quebrar um pouco essa idéia que o delphi é uma linguagem Orientada a "eventos/componentes". Não tem muito a ver com seu problema, mas vai ajudar você a conhecer mais sobre a linguagem.

 

oi Fernando, valeu pela dica. Creio que vai ajudar bastante.

Bom, neste programa tenho o botão adicionar que serve para adicionar o dados do entrevistado em uma Listbox e ao mesmo tempo

preciso somar a idade de cada pessoa que for entrevistada e armazenar os dados em uma variável. Nesse mesmo botão precisa de

uma variável para receber um valor a cada pessoa que for entrevistada. Na codificação que eu tentei, coloquei total:=total+1

porém só aparece um e depois não continua somando.

Preciso desses valores para cálculo de porcentagem e média.

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu entendi certo, você está tendo problemas com o ESCOPO das variáveis, pois elas estão sendo DESTRUÍDAS ao chegar no final de uma função/procedimento, ou seja, o valor será RESETADO. Por exemplo:

 

procedure TForm1.incrementaVariavel();
var
 Total, Idade: Integer;
begin
 // Realiza diversos procedimentos...
 // Então...
 Total := Total + 1;

// Quando chegar nesse END logo abaixo, a variável TOTAL que você declarou
// depois da palavra-chave VAR do procedimento, será DESTRUÍDA e terá seu valor resetado.
end; 

 

Outra coisa que pode acontecer é, você estar inicializando a variável no começo da função com o valor de 0, e depois incrementar ela. Isso não fará sentido, pois você sempre irá resetar o valor dela. Por exemplo:

 

procedure TForm1.incrementaVariavel();
var
 Total, Idade: Integer;
begin
 Total := 0; // Apenas para inicializar a variável.

 // Realiza diversos procedimentos...
 // Então...
 Total := Total + 1;
 // Ela será incrementada, porém não fará sentido algum.
 // Pois duas coisas acontecem. Você sempre atribuí o valor
 // 0 no começo da função e ela também será destruída ao 
 // chegar no final da função.
end;

 

Uma solução para esses erros lógicos seriam, você declarar uma variável que fica visível para a classe(Form1) toda,

isso é possível declarando a variável abaixo da cláusula PRIVATE, PUBLIC ou abaixo da classe, que fica bem em cima da unit, na seção INTERFACE, ou depois da clausula USES da seção IMPLEMENTATION.

Outra solução seria usar um banco de dados para armazenar esses dados. Essa seria a melhor solução.

 

É como eu disse, pesquisa mais sobre a linguagem, tem muita coisa nela, também um pouco sobre banco de dados, se é que você já não conhece sobre banco de dados.

 

Resumindo: Você precisa deixar uma variável que tenha seu valor armazenado por mais tempo na memória, e que não seja destruída quando chegue no final da função.

 

Espero que esse seja a solução do problema. Se eu estiver enganado ou você não entendeu direito, posta aí que eu tento responder.

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu entendi certo, você está tendo problemas com o ESCOPO das variáveis, pois elas estão sendo DESTRUÍDAS ao chegar no final de uma função/procedimento, ou seja, o valor será RESETADO. Por exemplo:

 

procedure TForm1.incrementaVariavel();
var
 Total, Idade: Integer;
begin
 // Realiza diversos procedimentos...
 // Então...
 Total := Total + 1;

// Quando chegar nesse END logo abaixo, a variável TOTAL que você declarou
// depois da palavra-chave VAR do procedimento, será DESTRUÍDA e terá seu valor resetado.
end; 

 

Outra coisa que pode acontecer é, você estar inicializando a variável no começo da função com o valor de 0, e depois incrementar ela. Isso não fará sentido, pois você sempre irá resetar o valor dela. Por exemplo:

 

procedure TForm1.incrementaVariavel();
var
 Total, Idade: Integer;
begin
 Total := 0; // Apenas para inicializar a variável.

 // Realiza diversos procedimentos...
 // Então...
 Total := Total + 1;
 // Ela será incrementada, porém não fará sentido algum.
 // Pois duas coisas acontecem. Você sempre atribuí o valor
 // 0 no começo da função e ela também será destruída ao 
 // chegar no final da função.
end;

 

Uma solução para esses erros lógicos seriam, você declarar uma variável que fica visível para a classe(Form1) toda,

isso é possível declarando a variável abaixo da cláusula PRIVATE, PUBLIC ou abaixo da classe, que fica bem em cima da unit, na seção INTERFACE, ou depois da clausula USES da seção IMPLEMENTATION.

Outra solução seria usar um banco de dados para armazenar esses dados. Essa seria a melhor solução.

 

É como eu disse, pesquisa mais sobre a linguagem, tem muita coisa nela, também um pouco sobre banco de dados, se é que você já não conhece sobre banco de dados.

 

Resumindo: Você precisa deixar uma variável que tenha seu valor armazenado por mais tempo na memória, e que não seja destruída quando chegue no final da função.

 

Espero que esse seja a solução do problema. Se eu estiver enganado ou você não entendeu direito, posta aí que eu tento responder.

 

Abraço.

 

Ah sim. Entendi o meu erro, vou tentar da maneira que você falou, qualquer coisa posto aqui de novo.

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.