+1000
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
if(SpokaneFileList->Strings[i].SubString(1,8).ToInt() < 1000){
imageFolder="00000\\";
}else if (SpokaneFileList->Strings[i].SubString(1,8).ToInt() < 2000){
imageFolder="00001\\";
}else if (SpokaneFileList->Strings[i].SubString(1,8).ToInt() < 3000){
imageFolder="00002\\";
}else if (SpokaneFileList->Strings[i].SubString(1,8).ToInt() < 4000){
....
imageFolder="00034\\";
}else if (SpokaneFileList->Strings[i].SubString(1,8).ToInt() < 36000){
imageFolder="00035\\";
}else if (SpokaneFileList->Strings[i].SubString(1,8).ToInt() < 37000){
imageFolder="00036\\";
}
Сегодня чувствую себя сказочным героем (Гераклом) в весьма не сказочно обкаканном месте (авгиевых конюшнях),
которому надо это место отмыть до блеска...
меняю куски наподобие такого, как выше, каждый длиной по 75 строк - на вот такую конструкцию собственного сочинения -
int sfFactor = SpokaneFileList->Strings[i].SubString(1,8).ToInt();
int imageFolder = StringHelper::NormalizeString(IntToStr(s fFactor/1000), 5, "0", true, true) + "\\";
- FYI функция StringHelper::NormalizeString() занимает 19 строк.
На добивание:
такие куски встречаются в программе около 20 раз (!!!)
Индийский код - не признак национальности, а способ мышления...
Запостил: dm-ua,
19 Декабря 2011
defecate-plusplus 19.12.2011 12:02 # −2
хочешь руками разверни говноцикл 37 раз, хочешь к int imageFolder присвой строку, хочешь в 19 строках напиши велосипед того, что могло занять одну с помощью std::ostringstream или, прости господи, даже sprintf
TarasB 19.12.2011 12:07 # +2
defecate-plusplus 19.12.2011 12:11 # 0
> FYI функция StringHelper::NormalizeString() занимает 19 строк.
я придумываю??
defecate-plusplus 19.12.2011 12:20 # +6
разве
SubString(1,8).ToInt(), потом /1000, потом обратно к строке - не проще ли сразу SubString(1,5)
как раз 5 символов и получится
TarasB 19.12.2011 14:12 # 0
TarasB 19.12.2011 14:12 # 0
defecate-plusplus 19.12.2011 14:16 # +1
хватит тупить
defecate-plusplus 19.12.2011 14:30 # +2
TarasB 19.12.2011 15:41 # +4
dm-ua 19.12.2011 12:13 # 0
насчет sprintf - спасибо за идею, NormalizeString() перепишу :) она у меня немножко умнее чем sprintf, и используется не только для этого, так что там будет не один sprintf(), а четыре
dm-ua 19.12.2011 12:21 # +1
самый изящный способ -
AnsiString imageFolder = SpokaneFileList->Strings[i].SubString(1,5) + "\\";
чувствую себя индусом :(
defecate-plusplus 19.12.2011 12:25 # 0
defecate-plusplus 19.12.2011 12:25 # 0
defecate-plusplus 19.12.2011 12:34 # +1
bugmenot 04.01.2012 18:18 # −2
defecate-plusplus 04.01.2012 18:37 # +1
defecate-plusplus 19.12.2011 12:20 # +4
и да
разве
SubString(1,8).ToInt(), потом /1000, потом обратно к строке - не проще ли сразу SubString(1,5)
как раз 5 символов и получится
[i]dm-ua 19.12.2011 12:21 # 0
О
самый изящный способ -
AnsiString imageFolder = SpokaneFileList->Strings.SubString(1,5) + "\\";
чувствую себя индусом :(
bugmenot 04.01.2012 20:19 # +3
ты постил, постишь и будешь постить какую-то хуйню
roman-kashitsyn 19.12.2011 12:34 # 0
тут вообще вся модель данных под вопросом
dm-ua 19.12.2011 12:49 # 0
Только менять нельзя, такой глубокий рефакторинг кастомер не оплатит.
Кстати, автор исходного говнокода, доставшегося мне по наследству - америкос, а не индус
dm-ua 19.12.2011 13:03 # +1
.....
else if(tempFile->Strings[j].ToInt() < 98000){
sourceDir = "00097\\";
}
else if(tempFile->Strings[j].ToInt() < 99000){
sourceDir = "00098\\";
}
else if(tempFile->Strings[j].ToInt() < 100000){
sourceDir = "00099\\";
}
guest8 09.04.2019 12:25 # −999