Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Transformar codigo em função ou procedure


Visitante

Pergunta

 

Olá a todos tem como transformar o código abaixo em função ou procedure, o programa que estou desenvolvendo
tera várias paginas e quase todos itens variaveis de cada página vai precisar de fazer código semelhante a esse
abaixo que estou testando, mudando apenas os componentes, os valores continuram sendo os mesmos,

precisaria da ajuda de vocês pra ficar mais organizado e menor o programa sem ter que ficar repentindo as
mesmas instruções para cada item se não vai fica muito grande e ruim de dar uma manutenção se precisar futuramente,

uma função ou procedure  ou outra alternativa já resolveria, agradeço a quem puder me dá ajuda

 

 

 

procedure TForm1.Button22Click(Sender: TObject);
 var
   testando1,testando2,testando3:integer  ;
  Begin

   begin

     testando1:= strtoint(label33.Caption);
     testando2:= strtoint(label2.Caption);
     testando3:= strtoint(label3.Caption);


      if (testando1=33) or (testando2 =33) or (testando3 =33)then memo3.lines.add ('33');
      if (testando1=22) or (testando2 =22) or (testando3 =22)then memo3.lines.add ('22');
      if (testando1=11) or (testando2 =11) or (testando3 =11)then memo3.lines.add ('11');
      if (testando1=9)  or (testando2 =9)  or (testando3 =9) then memo3.lines.add ('9');
      if (testando1=8)  or (testando2 =8)  or (testando3 =8) then memo3.lines.add ('8');
      if (testando1=7)  or (testando2 =7)  or (testando3 =7) then memo3.lines.add ('7');
      if (testando1=6)  or (testando2 =6)  or (testando3 =6) then memo3.lines.add ('6');
      if (testando1=5)  or (testando2 =5)  or (testando3 =5) then memo3.lines.add ('5');
      if (testando1=4)  or (testando2 =4)  or (testando3 =4) then memo3.lines.add ('4');
      if (testando1=3)  or (testando2 =3)  or (testando3 =3) then memo3.lines.add ('3');
      if (testando1=2)  or (testando2 =2)  or (testando3 =2) then memo3.lines.add ('2');
      if (testando1=1)  or (testando2 =1)  or (testando3 =1) then memo3.lines.add ('1')

     else
       memo3.lines.add ('');
      end;
       end;   

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Meu amigo, voce precisa ler mais sobre os comandos do delphi  ... por falta de conhecimento voce acaba fazendo um código extenso sem necessidade

veja os links sobre o comando Set Of do delphi

https://drgarcia1986.wordpress.com/2011/12/09/definindo-conjuntos-de-dados-em-delphi/

http://www.delphibasics.co.uk/RTL.asp?Name=set

outra forma

http://www.delphibasics.co.uk/Article.asp?Name=Sets

aplicando esse comando ao seu código ficaria assim:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Label33: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    procedure NumX(NumZ : integer);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  testando1, testando2, testando3: integer ;
implementation

{$R *.dfm}

procedure TForm1.NumX(NumZ : Integer);
var
  Numeros : set of 1..33;
begin
  Numeros := [1,2,3,4,5,6,7,8,9,11,22,33];

  if NumZ In Numeros then
     Memo1.Lines.Add(inttostr(NumZ));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   testando1 := strtoint(label33.Caption);
   testando2 := strtoint(label2.Caption);
   testando3 := strtoint(label3.Caption);

   NumX(testando1);
   NumX(testando2);
   NumX(testando3);
end;

end.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Tudo bem Jhonas, muito obrigado pelas suas dica e pela sua ajuda, já comecei dar estudada nos links que você me passou, realmente tem bastante comandos importantes pra conheçer e estudar meu estudo está começo e tem muita coisa pra aprender quero ter logo condições de frequentar escola de programação, sou meio teimoso ai fico olhando os livros e tentando de tudo que é jeito, mais os poucos que vou aprendendo e acertando já é uma grande conquista pra mim, mesmo parecendo que muitas vezes estou dando murro em ponta de faca é bem complicado programação pra mim, mais não vou desistir porque faz parte da vida cada aprendizado dos tombo que a que a gente leva, e conforme vou aquirinndo prática vai ficando fácil e talvez na proxima vida não precise ralar tanto para aprender as mesmas coisas, já faz uns 4 meses ou mais que estou batendo nesse programa está funcionando quas tudo certinho tem bastante coisas nele já dá uma 15 páginas e falta poucas coisas pra acrescentar nele pelo jeito vai ficar pronto só ano que vem é muita coisa mesmo, mas está ficando bem esse programa, então estava querendo dar uma enxugada no código que já tinha feirto para ficar mais fácil de fazer manuntenção se precisar uma hora,

Ainda não connhecia esse comando que você me mostrou , é porque uso Lazarus que é gratuito e tudo está inglês ai preciso ficar fazendo as traduções pelo google, ainda não li nada sobre esse comando das páginas que traduzi.

Já tive o delphi7 só que deu problema no cd e o delphi tinha bastante ajuda e vários exemplos que ajudava bastante, mais esqueci a maioria deveria ter anotado, gostava de treinar nele, agora uso só o Lazarus ele é muito bom também.

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

Jhonas ficou bem simplificado mesmo o código você me passou e ti agradeço, deu só essa mensagem de erro na hora copilação

idendifier not found "Memo1"

 

Não teria como tornar onde está o memo1 em variável para ser usado apenas no procedure dos Buttons das paginas que precisar dessas faixas de valores ? tentei fazer aqui mas não consegui

queria usar apenas uma procedure NumX para servir para todas outras páginas do Tpanel e cada um terá um memo e um button diferente que vai precisar pegar apenas aquela faixa de valores que estão no procedure NumX


Ai já enxuga bastante coisas que já tinha feito usado o comando if,

 

Agradecido se tiver condições e se não tiver não tem problema, tudo de bom pra você e os amigos ai do fórum, obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

Não teria como tornar onde está o memo1 em variável para ser usado apenas no procedure dos Buttons das paginas que precisar dessas faixas de valores ?

Voce pode trocar o Memo por um TstringList ( lista de strings )

https://translate.google.com.br/translate?hl=pt-BR&sl=en&u=http://www.delphibasics.co.uk/RTL.asp%3FName%3Dtstringlist&prev=search

queria usar apenas uma procedure NumX para servir para todas outras páginas do Tpanel e cada um terá um memo e um button diferente que vai precisar pegar apenas aquela faixa de valores que estão no procedure NumX

Voce vai usar a procedure NumX para todas ... como voce quer usar um Memo e um Button para cada um, então voce terá que fazer essa modificação:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Label33: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button2: TButton;
    Memo2: TMemo;
    procedure NumX(NumZ : integer);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  testando1, testando2, testando3: integer ;
  Lista : TStringlist;
implementation

{$R *.dfm}

procedure TForm1.NumX(NumZ : Integer);
var
  Numeros : set of 1..33;
begin
  Numeros := [1,2,3,4,5,6,7,8,9,11,22,33];

  if NumZ In Numeros then
     Lista.Append(inttostr(NumZ));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   testando1 := strtoint(label33.Caption);
   testando2 := strtoint(label2.Caption);
   testando3 := strtoint(label3.Caption);

   Lista := TStringList.Create;

   NumX(testando1);
   NumX(testando2);
   NumX(testando3);

   Memo1.Lines.Add(Lista.Text);
   Lista.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   testando1 := strtoint(label33.Caption);
   testando2 := strtoint(label2.Caption);
   testando3 := strtoint(label3.Caption);

   Lista := TStringList.Create;

   NumX(testando1);
   NumX(testando2);
   NumX(testando3);

   Memo2.Lines.Add(Lista.Text);
   Lista.Free;
end;

end.

OBS: Não sei se voce terá outros Labels diferentes nas outras paginas, por isso estou repetindo os labels no Button2.. se for diferente voce faz a modificação

Como não sei como é seu projeto, o código poderia ser ainda mais simplificado e compactado.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado Jhonas testei ficou muito bom usando lista, agora vou gastar uns dias para ir substituindo o código no programa por esse novo, vai enxugar bastante o código

Sim terá labels diferentes,  para cada item do programa tem um conjunto de 2 ou 3 labels que recebe os valores,  vou dar mais uma estudada nele e alguma coisa ali acho vai dar para compactar mais pra frente,  mas fazer com calma que é muita coisa pra mim.

Muito obrigado mesmo pela sua ajuda Jhonas,  vai me ajudar bastante nesse e nos outros que poderá vir mais pra frente

 

 

 

 

 

 

 

 

 

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...