Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Уменьшить размер кода


Автор: Dobermann 4.6.2008, 16:40
Прога выводит 2 алфавита побуквенно
Код

var
  Form1: TForm1;
    i,j: integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if RadioButton1.Checked then
    begin
       inc(i);
       label1.Caption:=label1.Caption+chr(i);
    end
    else
  if radioButton2.Checked then
    begin
       inc(j);
       label1.Caption:=label1.Caption+chr(j);
    end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
label1.Caption:='';
i:=191;
j:=64;
end;

begin
i:=191;
j:=64;

end.

Хотел узнать, как можно максимально сократить код процедуры вывода, но чтобы программа работала аналогично?!?!?! smile 

Автор: elestrago 4.6.2008, 18:09
чтобы получить нормальный ответ, надо задать нормальный вопрос....

я так понял что у тебя процедура вывода 

вот 

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  if RadioButton1.Checked then
    begin
       inc(i);
       label1.Caption:=label1.Caption+chr(i);
    end
    else
  if radioButton2.Checked then
    begin
       inc(j);
       label1.Caption:=label1.Caption+chr(j);
    end;
end;


да и вообще что то я не догоню чего ты хочеш добится!! опиши все поподробней smile

Автор: mr.Anderson 4.6.2008, 19:03
Dobermann, итак.

1. Опиши ситуацию подробнее.
2. Зачем использовать i и j как переменные. Заведи как константы. А лучше вообще попробуй обойтись без них.
3. Называй объекты нормальными именами.
4. Точно опиши, что делает программа и что хранит каждое поле/переключатель.

Автор: Dobermann 4.6.2008, 19:16
Цитата

я так понял что у тебя процедура вывода 

да
Цитата

обойтись без них

покажи как?
Цитата

Опиши ситуацию подробнее

сделать процедуру вывода не в 10 строк, а в 2....

Автор: mr.Anderson 4.6.2008, 19:29
Цитата
сделать процедуру вывода не в 10 строк, а в 2.... 

Что делает программа. Что принимает, что выводит. Какой интерфейс (что за переключатели в коде). Детали, детали мне. В 2 строки ты ее вряд ли сделаешь, но сократить можно при желании, но надо прогу видеть.
Цитата
покажи как?

Повторяю, телепатические навыки у меня развиты слабо.

Автор: Dobermann 4.6.2008, 20:01
Цитата

Что делает программа

Я ведь написал...самый первый пост, самое первое предложение...
2 радиобаттона(1-рус.яз, 2-англ.яз), 1 лэйбл,  2 баттона(одна для стирания лэйбла, другая для вывода алфавита побуквенно). Ну и радиобаттонами переключаем алфавиты...

Автор: mr.Anderson 4.6.2008, 21:47
Цитата
Я ведь написал...

Если я задал дополнительный вопрос, значит, твоей информации в первом посте недостаточно. По описанным компонентам наконец-то въехал в смысл.

Думаю, короче не напишешь уже. В две строчки точно не впихнешь.

Автор: THandle 4.6.2008, 22:13
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  Value : integer;
begin
  Value := 191; inc(i);
  if RadioButton2.Checked then
    Value := Value - 127;
  Label1.Caption := Label1.Caption + Chr(Value + i);
end;



Код

procedure TForm1.Button2Click(Sender: TObject);
begin
  i := 0;
end;


Добавлено через 2 минуты и 10 секунд
Если ни одни RadioButton не выделен, то будут идти русские.

Так. Вот еще кстати:

Код

var
  Form1: TForm1;
  i : integer = 0;

{...}


Плюс можно сократить убрав переменную Value.

Автор: Dobermann 4.6.2008, 22:52
THandle Спасибо  smile   smile 

Автор: THandle 5.6.2008, 07:21
Dobermann, извини, я протупил вчера. Вот почти в 2 строки:

Код

var
  Form1: TForm1;
  i : integer = 191;

procedure TForm1.Button1Click(Sender: TObject);
begin
  inc(i);
  Label1.Caption := Label1.Caption + Chr(i - Integer(RadioButton2.Checked) * 127);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  i := 191;
end;


Плюс могу еще кучу чуть более длинных вариантов дать.

Автор: mr.Anderson 5.6.2008, 10:19
THandle,  smile 

Автор: Dobermann 5.6.2008, 10:48
THandle,  smile  smile  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)