ajuda arrumar code

Delphi

20/05/2016

olá pessoal bom dias!

queria ajuda para arruma este código deixar ele mais limpo, tipo com menos if e end e begin seria possivel

Delphi Seattle 10

procedure Tfrm_ATLC.FormCreate(Sender: TObject);
begin
//if OpenDialog1.Execute then
    Memo1.Lines.LoadFromFile('C:\Users\2016pcs\Desktop\2.txt');
  Checando;
end;

procedure Tfrm_ATLC.IncerirRenomear;
var
  i: integer;
  Espaco,s: string;
begin
  if CB_spacoNumero.Checked = true then
  Espaco:= ' '
  else
  Espaco:= '';

  for I := 0 to StrToInt(Label5.Caption) do
begin
s := Memo1.Lines[i];

    if (inicio1.Checked = true) and (inicio2.Checked = true) and (fimA.Checked = true) and (fimB.Checked = true) then
     Memo1.Lines[i] := Espaco+IntToStr(i+1)+Espaco + Edit1.Text +Espaco+IntToStr(i+1)+Espaco+ Edit2.Text +s +Espaco+IntToStr(i+1)+Espaco+ Edit3.Text +Espaco+IntToStr(i+1)+Espaco+ Edit4.Text
   else
    if (inicio1.Checked = true) and (inicio2.Checked = false) and (fimA.Checked = true) and (fimB.Checked = true) then
     Memo1.Lines[i] := Espaco+IntToStr(i+1)+Espaco+ Edit1.Text + Edit2.Text +s +Espaco+IntToStr(i+1)+Espaco+ Edit3.Text +Espaco+IntToStr(i+1)+Espaco+ Edit4.Text
   else
    if (inicio1.Checked = true) and (inicio2.Checked = false) and (fimA.Checked = false) and (fimB.Checked = true) then
     Memo1.Lines[i] := Espaco+IntToStr(i+1)+Espaco+ Edit1.Text + Edit2.Text +s + Edit3.Text +Espaco+IntToStr(i+1)+Espaco+ Edit4.Text
   else
    if (inicio1.Checked = true) and (inicio2.Checked = true) and (fimA.Checked = false) and (fimB.Checked = true) then
     Memo1.Lines[i] := Espaco+IntToStr(i+1)+Espaco+ Edit1.Text +Espaco+IntToStr(i+1)+Espaco+ Edit2.Text +s + Edit3.Text +Espaco+IntToStr(i+1)+Espaco+ Edit4.Text
   else
    if (inicio1.Checked = true) and (inicio2.Checked = true) and (fimA.Checked = false) and (fimB.Checked = false) then
     Memo1.Lines[i] := Espaco+IntToStr(i+1)+Espaco+ Edit1.Text +Espaco+IntToStr(i+1)+Espaco+ Edit2.Text +s + Edit3.Text + Edit4.Text
   else
    if (inicio1.Checked = true) and (inicio2.Checked = false) and (fimA.Checked = true) and (fimB.Checked = false) then
     Memo1.Lines[i] := Espaco+IntToStr(i+1)+Espaco+ Edit1.Text + Edit2.Text +s +Espaco+IntToStr(i+1)+Espaco+ Edit3.Text + Edit4.Text
   else
    if (inicio1.Checked = true) and (inicio2.Checked = true) and (fimA.Checked = true) and (fimB.Checked = false) then
     Memo1.Lines[i] := Espaco+IntToStr(i+1)+Espaco+ Edit1.Text +Espaco+IntToStr(i+1)+Espaco+ Edit2.Text +s +Espaco+IntToStr(i+1)+Espaco+ Edit3.Text + Edit4.Text
   else //true     8
    if (inicio1.Checked = true) and (inicio2.Checked = false) and (fimA.Checked = false) and (fimB.Checked = false) then
     Memo1.Lines[i] := Espaco+IntToStr(i+1)+Espaco+ Edit1.Text + Edit2.Text +s + Edit3.Text + Edit4.Text
   else
    if (inicio1.Checked = false) and (inicio2.Checked = false) and (fimA.Checked = false) and (fimB.Checked = false) then
     Memo1.Lines[i] :=  Edit1.Text + Edit2.Text +s + Edit3.Text + Edit4.Text
   else
    if (inicio1.Checked = false) and (inicio2.Checked = false) and (fimA.Checked = false) and (fimB.Checked = true) then
     Memo1.Lines[i] := Edit1.Text + Edit2.Text +s + Edit3.Text +Espaco+IntToStr(i+1)+Espaco+ Edit4.Text
   else
    if (inicio1.Checked = false) and (inicio2.Checked = false) and (fimA.Checked = true) and (fimB.Checked = false) then
     Memo1.Lines[i] := Edit1.Text + Edit2.Text +s +Espaco+IntToStr(i+1)+Espaco+ Edit3.Text + Edit4.Text
   else
    if (inicio1.Checked = false) and (inicio2.Checked = false) and (fimA.Checked = true) and (fimB.Checked = true) then
     Memo1.Lines[i] := Edit1.Text + Edit2.Text +s +Espaco+IntToStr(i+1)+Espaco+ Edit3.Text +Espaco+IntToStr(i+1)+Espaco+ Edit4.Text
   else
    if (inicio1.Checked = false) and (inicio2.Checked = true) and (fimA.Checked = true) and (fimB.Checked = true) then
     Memo1.Lines[i] := Edit1.Text +Espaco+IntToStr(i+1)+Espaco+ Edit2.Text +s +Espaco+IntToStr(i+1)+Espaco+ Edit3.Text +Espaco+IntToStr(i+1)+Espaco+ Edit4.Text
   else
    if (inicio1.Checked = false) and (inicio2.Checked = true) and (fimA.Checked = false) and (fimB.Checked = false) then
     Memo1.Lines[i] := Edit1.Text +Espaco+IntToStr(i+1)+Espaco+ Edit2.Text +s + Edit3.Text + Edit4.Text
   else
    if (inicio1.Checked = false) and (inicio2.Checked = true) and (fimA.Checked = true) and (fimB.Checked = false) then
     Memo1.Lines[i] := Edit1.Text +Espaco+IntToStr(i+1)+Espaco+ Edit2.Text +s +Espaco+IntToStr(i+1)+Espaco+ Edit3.Text + Edit4.Text
   else
    if (inicio1.Checked = false) and (inicio2.Checked = true) and (fimA.Checked = false) and (fimB.Checked = true) then
     Memo1.Lines[i] := Edit1.Text +Espaco+IntToStr(i+1)+Espaco+ Edit2.Text +s + Edit3.Text +Espaco+IntToStr(i+1)+Espaco+ Edit4.Text
end;
end;
Cgm2k7 2013

Cgm2k7 2013

Curtidas 3

Respostas

Luiz Menin

Luiz Menin

20/05/2016

Creio que o objetivo do fórum é sanar dúvidas e consequentemente melhorar o código dos usuários, não o contrário.
GOSTEI 0
Cgm2k7 2013

Cgm2k7 2013

20/05/2016

obrigado amigo pela resposta
mas não estou pedindo só para fica bonito não
pois com resultado final vou aprende com fazer também
foi para isso que postei o pedido aqui...
GOSTEI 0
Luiz Menin

Luiz Menin

20/05/2016

Não entendi direito o que teu algoritmo faz, mas veja se isso resolve:

var
  i: integer;
  Espaco,s, tmp : string;
begin
  if CB_spacoNumero.Checked = true then
  Espaco:= ' '
  else
  Espaco:= '';
 
  for I := 0 to StrToInt(Label5.Caption) do
begin
  s     := Memo1.Lines[i];
  tmp := EmptyStr;

  if inicio1.Checked then
    tmp := tmp + Espaco+IntToStr(i+1)+Espaco+ Edit1.Text
  else
    tmp := tmp + Edit1.Text;

  if inicio2.Checked then
    tmp := tmp + Espaco+IntToStr(i+1)+Espaco+ Edit2.Text
  else
    tmp := tmp + Edit2.Text;

  tmp := tmp + s;

  if fimA.Checked then
    tmp := tmp + Espaco+ IntToStr(i+1)+Espaco+ Edit3.Text
  else
    tmp := tmp + Edit3.Text;

  if fimB.Checked then
    tmp := tmp + Espaco+IntToStr(i+1)+Espaco+ Edit4.Text
  else
    tmp := tmp + Edit4.Text;

  Memo1.Lines[i] := tmp
end;
end;
GOSTEI 0
Cgm2k7 2013

Cgm2k7 2013

20/05/2016

Muito obrigado amigo pela atenção mas não é isso:
Vou tentar explica.

no memo1 tem varias linha de texto estou acrescentando a esta linha um contado e mais texto
(comando ou qualquer outra coisa ex:
em outro projeto meu preciso adicionar varias linha assim:
case X of
1 : AdicinarCidade('Montes Claros', '1');
2 : AdicinarCidade('Abaeté', '2');
3 : AdicinarCidade('Bocaiuva', '3');
......... etc mais de 1000 cidades)
aff ter que digitar tantos comandos assim é dificio..
Continuando...
estou fazendo este aplicativo que ajuda a cria este comandos automático tipo

eu insiro os textos das cidade em um memo1 adiciono os comando automático com este aplicativo.

já esta tudo certo esta funcionado perfeitamente o que eu queria se é que tem como é diminuir a quantidade de if e else
que no caso vai ter 4 contador numérico onde o usuário habilitado de acordo com a quantidade de contado numéricos ou comando que deseja
então são 4x4 = 16 combinações diferente como não sei outra maneira coloquei 12 if e else. Já vi em algum forum por ai umas boas maneira de
trabalhar com if e else mais não consegui achar. Se pode me ajuda agradeço amigo...

procedure Tfrm_ATLC.Checando;
var espaco2, linha: string;
Y: integer;
begin
 Memo3.Clear;
   for Y := 0 to 3 do
begin
    linha := self.Memo1.Lines.Strings[Y];
 if CB_spacoNumero.Checked = true then
 espaco2:= ' '
 else
 espaco2:= '';

    if (inicio1.Checked = true) and (inicio2.Checked = true) and (fimA.Checked = true) and (fimB.Checked = true) then
     Memo3.Lines.Add(IntToStr(Y+1)+espaco2+ Edit1.Text+IntToStr(Y+1) +espaco2+ Edit2.Text+linha+ espaco2+IntToStr(Y+1)+Edit3.Text+ espaco2+ IntToStr(Y+1)+Edit4.Text)
   else
    if (inicio1.Checked = true) and (inicio2.Checked = false) and (fimA.Checked = true) and (fimB.Checked = true) then
     Memo3.Lines.Add(IntToStr(Y+1)+espaco2+ Edit1.Text +espaco2+ Edit2.Text+linha+ espaco2+IntToStr(Y+1)+Edit3.Text+ espaco2+IntToStr(Y+1) + Edit4.Text)
   else
    if (inicio1.Checked = true) and (inicio2.Checked = false) and (fimA.Checked = false) and (fimB.Checked = true) then
     Memo3.Lines.Add(IntToStr(Y+1)+espaco2+ Edit1.Text +espaco2+ Edit2.Text+linha +espaco2+Edit3.Text+IntToStr(Y+1) +espaco2+ Edit4.Text)
   else
    if (inicio1.Checked = true) and (inicio2.Checked = true) and (fimA.Checked = false) and (fimB.Checked = true) then
     Memo3.Lines.Add(IntToStr(Y+1)+espaco2+ Edit1.Text+IntToStr(Y+1) +espaco2+ Edit2.Text+linha +espaco2+Edit3.Text+IntToStr(Y+1) +espaco2+ Edit4.Text)
   else
    if (inicio1.Checked = true) and (inicio2.Checked = true) and (fimA.Checked = false) and (fimB.Checked = false) then
     Memo3.Lines.Add(IntToStr(Y+1)+espaco2+ Edit1.Text+IntToStr(Y+1) +espaco2+ Edit2.Text+linha +espaco2+Edit3.Text +espaco2+ Edit4.Text)
   else
    if (inicio1.Checked = true) and (inicio2.Checked = false) and (fimA.Checked = true) and (fimB.Checked = false) then
     Memo3.Lines.Add(IntToStr(Y+1)+espaco2+ Edit1.Text +espaco2+ Edit2.Text+linha+ espaco2+ IntToStr(Y+1) +Edit3.Text +espaco2+ Edit4.Text)
   else
    if (inicio1.Checked = true) and (inicio2.Checked = true) and (fimA.Checked = true) and (fimB.Checked = false) then
     Memo3.Lines.Add(IntToStr(Y+1)+espaco2+ Edit1.Text+IntToStr(Y+1) +espaco2+ Edit2.Text+linha +espaco2+IntToStr(Y+1)+Edit3.Text +espaco2+ Edit4.Text)
   else //true     8
    if (inicio1.Checked = true) and (inicio2.Checked = false) and (fimA.Checked = false) and (fimB.Checked = false) then
     Memo3.Lines.Add(IntToStr(Y+1)+espaco2+ Edit1.Text +espaco2+ Edit2.Text+linha+ espaco2+Edit3.Text +espaco2+ Edit4.Text)
   else
    if (inicio1.Checked = false) and (inicio2.Checked = false) and (fimA.Checked = false) and (fimB.Checked = false) then
     Memo3.Lines.Add(espaco2+ Edit1.Text +espaco2+ Edit2.Text+linha +espaco2+Edit3.Text +espaco2+ Edit4.Text)
   else
    if (inicio1.Checked = false) and (inicio2.Checked = false) and (fimA.Checked = false) and (fimB.Checked = true) then
     Memo3.Lines.Add(espaco2+ Edit1.Text +espaco2+ Edit2.Text+linha +espaco2+Edit3.Text +espaco2+IntToStr(Y+1)+ Edit4.Text)
   else
    if (inicio1.Checked = false) and (inicio2.Checked = false) and (fimA.Checked = true) and (fimB.Checked = false) then
     Memo3.Lines.Add(espaco2+ Edit1.Text +espaco2+ Edit2.Text+linha +espaco2+IntToStr(Y+1)+Edit3.Text +espaco2+ Edit4.Text)
   else
    if (inicio1.Checked = false) and (inicio2.Checked = false) and (fimA.Checked = true) and (fimB.Checked = true) then
     Memo3.Lines.Add(espaco2+ Edit1.Text +espaco2+ Edit2.Text+linha +espaco2+IntToStr(Y+1)+Edit3.Text +espaco2+IntToStr(Y+1)+ Edit4.Text)
   else
    if (inicio1.Checked = false) and (inicio2.Checked = true) and (fimA.Checked = true) and (fimB.Checked = true) then
     Memo3.Lines.Add(espaco2+ Edit1.Text+IntToStr(Y+1) +espaco2+ Edit2.Text+linha +espaco2+IntToStr(Y+1)+Edit3.Text +espaco2+IntToStr(Y+1)+ Edit4.Text)
   else
    if (inicio1.Checked = false) and (inicio2.Checked = true) and (fimA.Checked = false) and (fimB.Checked = false) then
     Memo3.Lines.Add(espaco2+ Edit1.Text+IntToStr(Y+1) +espaco2+ Edit2.Text+linha +espaco2+Edit3.Text +espaco2+ Edit4.Text)
   else
    if (inicio1.Checked = false) and (inicio2.Checked = true) and (fimA.Checked = true) and (fimB.Checked = false) then
     Memo3.Lines.Add(espaco2+ Edit1.Text+IntToStr(Y+1) +espaco2+Edit2.Text+linha +espaco2+IntToStr(Y+1)+Edit3.Text +espaco2+ Edit4.Text)
   else
    if (inicio1.Checked = false) and (inicio2.Checked = true) and (fimA.Checked = false) and (fimB.Checked = true) then
    Memo3.Lines.Add(espaco2+ Edit1.Text+IntToStr(Y+1)+ espaco2+ Edit2.Text+linha +espaco2+Edit3.Text +espaco2+IntToStr(Y+1)+ Edit4.Text);

    self.Memo1.Lines.Strings[Y] := linha;
end;
GOSTEI 0
Cgm2k7 2013

Cgm2k7 2013

20/05/2016

errei desculpa não 12 não é 16 if e else
kkkkkkkk
GOSTEI 0
POSTAR