Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2017, 10:53   #1
royun
Пользователь
 
Регистрация: 20.05.2011
Сообщений: 67
По умолчанию Как привести код к компактному виду

Здравствуйте. Как можно привести к компактному виду код ниже?
Код:
            if length(f4)<8 then
              begin
                case length(f4) of
                  1:begin
                      f4:='0000000'+f4;
                    end;
                  2:begin
                      f4:='000000'+f4;
                    end;
                  3:begin
                      f4:='00000'+f4;
                    end;
                  4:begin
                      f4:='0000'+f4;
                    end;
                  5:begin
                      f4:='000'+f4;
                    end;
                  6:begin
                      f4:='00'+f4;
                    end;
                  7:begin
                      f4:='0'+f4;
                    end;
                end;
              end;
            if length(f5)<8 then
              begin
                case length(f5) of
                  1:begin
                      f5:='0000000'+f5;
                    end;
                  2:begin
                      f5:='000000'+f5;
                    end;
                  3:begin
                      f5:='00000'+f5;
                    end;
                  4:begin
                      f5:='0000'+f5;
                    end;
                  5:begin
                      f5:='000'+f5;
                    end;
                  6:begin
                      f5:='00'+f5;
                    end;
                  7:begin
                      f5:='0'+f5;
                    end;
                end;
              end;
            if length(f6)<8 then
              begin
                case length(f6) of
                  1:begin
                      f6:='0000000'+f6;
                    end;
                  2:begin
                      f6:='000000'+f6;
                    end;
                  3:begin
                      f6:='00000'+f6;
                    end;
                  4:begin
                      f6:='0000'+f6;
                    end;
                  5:begin
                      f6:='000'+f6;
                    end;
                  6:begin
                      f6:='00'+f6;
                    end;
                  7:begin
                      f6:='0'+f6;
                    end;
                end;
              end;
royun вне форума Ответить с цитированием
Старый 13.06.2017, 10:59   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

RTFM!!!
https://www.thoughtco.com/add-leadin...format-1057555
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 13.06.2017, 11:08   #3
royun
Пользователь
 
Регистрация: 20.05.2011
Сообщений: 67
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Спасибо, иду читать.
royun вне форума Ответить с цитированием
Старый 13.06.2017, 11:18   #4
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
Как можно привести к компактному виду код ниже?
Ну, например вот эта часть
Код:
if length(f4)<8 then
              begin
                case length(f4) of
                  1:begin
                      f4:='0000000'+f4;
                    end;
                  2:begin
                      f4:='000000'+f4;
                    end;
                  3:begin
                      f4:='00000'+f4;
                    end;
                  4:begin
                      f4:='0000'+f4;
                    end;
                  5:begin
                      f4:='000'+f4;
                    end;
                  6:begin
                      f4:='00'+f4;
                    end;
                  7:begin
                      f4:='0'+f4;
                    end;
                end;
              end;
запросто сводится к паре строк:
Код:
for i:=1 to 8-Length(f4) do
f4:='0'+f4;
kropotkina-alice вне форума Ответить с цитированием
Старый 13.06.2017, 11:33   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

а если использовать предложенную по ссылке функцию LeftPad
Код:
function LeftPad(value: string; length:integer=8; pad:char='0'): string;
begin
   result := RightStr(StringOfChar(pad,length) + value, length );
end;
тогда ВЕСЬ код заменяется тремя строчками кода:
Код:
 f4 := LeftPad(f4);
 f5 := LeftPad(f5);
 f6 := LeftPad(f6);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.06.2017, 22:46   #6
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
а если использовать предложенную по ссылке функцию LeftPad
тогда ВЕСЬ код заменяется тремя строчками кода
Сергей, не буду спорить, но
Цитата:
Как можно привести к компактному виду код ниже?
Я поняла это как просьбу о модернизации собственного кода ТС, а не добавление "левых" функций...
kropotkina-alice вне форума Ответить с цитированием
Старый 15.06.2017, 22:05   #7
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

А если так, без цикла:
Код:
 i:= 8-Length(f4) ;
f4:=Copy('00000000',1,i) + f4;
digitalis вне форума Ответить с цитированием
Старый 15.06.2017, 22:51   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
А если так, без цикла
а где в моём сообщении цикл увидели?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.06.2017, 23:38   #9
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Это он про мое предложение...
Цитата:
А если так, без цикла
Вариантов решения много...

Последний раз редактировалось kropotkina-alice; 15.06.2017 в 23:40.
kropotkina-alice вне форума Ответить с цитированием
Старый 16.06.2017, 11:54   #10
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
а где в моём сообщении цикл увидели?
В посте #4 Алисы
Код:
for i:=1 to 8-Length(f4) do
f4:='0'+f4;
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно отредактировать код,привести его к рабочему виду. Работа с классами( Делфи ХЕ5) нуб7 Помощь студентам 21 24.10.2014 19:50
Привести систему к треугольному виду MrDelni Помощь студентам 1 25.03.2013 17:05
Как привести размер файла к стандартному виду? dolphin705 Общие вопросы Delphi 1 24.10.2011 14:25
Как привести к виду для счета? Диагностик Microsoft Office Excel 11 10.04.2009 14:57
Как привести числа к другому виду Людмилка Microsoft Office Excel 1 18.11.2008 10:19