estou com programa a algum tempo e estou dando enxugada no código porque ficou muito grande pra eu fazer mantutenção e tenho muita coisa pra colocar nele ainda, estou usando Tpagecontrol e já tem várias paginas, e em cada pagina preciso repetir esse mesmo pedaço código várias vezes para cada item na página, só muda mesmo o nome dos labels e dos edits e dos item cada pagina, pra quase todos os itens do programa, gostaria ser for possivel, chamar ele como procedure ou função (global), pra escrever esse código uma vez só e chamar ele de qualquer página do TPageControl quando for preciso, obrigado a quem poder dar uma ajuda
var
Form1: TForm1;
letras : array[1..26] of char = ('A','B','C','D','E','F','G','H','I',
'J','K','L','M','N','O','P','Q','R',
'S','T','U','V','W','X','Y','Z');
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var i,j, num, numx : integer; s,s1 : string;
begin
i := 0;
j := 0;
numx := 0;
s := trim(UpperCase(Edit1.Text));
s := StringReplace(s, ' ', EmptyStr, [rfReplaceAll]);
for i := 1 to length(s) do
begin
for j := 1 to 26 do
begin
if s = letras[j] then
begin
if j <= 9 then
num := j;
if (j > 9) and (j <= 18) then
num := j - 9;
if j > 18 then
num := j - 18;
end;
end;
numx := numx + num;
end;
// VALOR DA SOMA
Label1.Caption := (inttostr(numx));
if (numx = 11) or (numx = 22) then
showmessage('Achei um numero mestre na SOMA => ' + inttostr(numx));
if numx > 9 then /// PRIMEIRA REDUÇÃO
begin
s1 := inttostr(numx);
numx := strtoint(s1[1]);
numx := numx + strtoint(s1[2]);
end;
if (numx = 11) or (numx = 22) then
showmessage('Achei um numero mestre na REDUÇÃO => ' + inttostr(numx));
if numx > 9 then /// SEGUNDA REDUÇÃO
begin
s1 := inttostr(numx);
numx := strtoint(s1[1]);
numx := numx + strtoint(s1[2]);
end;
// VALOR DA REDUÇÃO
Label2.Caption := (inttostr(numx));
end;
Pergunta
Visitante
olá todos, preciso da ajuda dos amigos
estou com programa a algum tempo e estou dando enxugada no código porque ficou muito grande pra eu fazer mantutenção e tenho muita coisa pra colocar nele ainda, estou usando Tpagecontrol e já tem várias paginas, e em cada pagina preciso repetir esse mesmo pedaço código várias vezes para cada item na página, só muda mesmo o nome dos labels e dos edits e dos item cada pagina, pra quase todos os itens do programa, gostaria ser for possivel, chamar ele como procedure ou função (global), pra escrever esse código uma vez só e chamar ele de qualquer página do TPageControl quando for preciso, obrigado a quem poder dar uma ajuda
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
letras : array[1..26] of char = ('A','B','C','D','E','F','G','H','I',
'J','K','L','M','N','O','P','Q','R',
'S','T','U','V','W','X','Y','Z');
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var i,j, num, numx : integer; s,s1 : string;
begin
i := 0;
j := 0;
numx := 0;
s := trim(UpperCase(Edit1.Text));
s := StringReplace(s, ' ', EmptyStr, [rfReplaceAll]);
for i := 1 to length(s) do
begin
for j := 1 to 26 do
begin
if s = letras[j] then
begin
if j <= 9 then
num := j;
if (j > 9) and (j <= 18) then
num := j - 9;
if j > 18 then
num := j - 18;
end;
end;
numx := numx + num;
end;
// VALOR DA SOMA
Label1.Caption := (inttostr(numx));
if (numx = 11) or (numx = 22) then
showmessage('Achei um numero mestre na SOMA => ' + inttostr(numx));
if numx > 9 then /// PRIMEIRA REDUÇÃO
begin
s1 := inttostr(numx);
numx := strtoint(s1[1]);
numx := numx + strtoint(s1[2]);
end;
if (numx = 11) or (numx = 22) then
showmessage('Achei um numero mestre na REDUÇÃO => ' + inttostr(numx));
if numx > 9 then /// SEGUNDA REDUÇÃO
begin
s1 := inttostr(numx);
numx := strtoint(s1[1]);
numx := numx + strtoint(s1[2]);
end;
// VALOR DA REDUÇÃO
Label2.Caption := (inttostr(numx));
end;
end.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.