+131
- 1
if (Edit40.Text<>t1) and (Edit38.Text<>t1) and (Edit36.Text<>t1) and (Edit34.Text<>t1) and (Edit32.Text<>t1) and (Edit30.Text<>t1) and (Edit28.Text<>t1) and (Edit26.Text<>t1) and (Edit24.Text<>t1) and (Edit22.Text<>t1) and (Edit20.Text<>t1) and (Edit18.Text<>t1) and (Edit16.Text<>t1) and (Edit14.Text<>t1) and (Edit12.Text<>t1) and (Edit10.Text<>t1) and (Edit8.Text<>t1) and (Edit6.Text<>t1) and (Edit4.Text<>t1) and (edit2.Text<>t1) ...
Старый мем с форума:
"Здрасте, вообщем такая проблемка:
У меня Unit10.pas занимает 13378 КБ (13.0 МБ)
И при работе в коде 10 формы после 5-10 изменений делфи начинает виснуть на 5-20 сек. (приходится вырезать весь текс кроме нужной процедуры и т.д, вставлять в блокнот, писать процедуру и затем обратно вставлять в делфи вырезанный текст из блокнота).
И компелируется тож долговато.
Всего 59988 строк.
На строчке 400-500 знаков (эт только там где условие, но часть условия(для удобства) переходит на 2 строчку (если все вместить, то будет примерно 35000 строк))
____________________________________
Постараюсь нормально сформулировать что хочу сделать.
Есть часть условия:
(код выше. прим. ReallyBugMeNot)
____________________________________
Оно повторяется если быть точным 4200 раз.
Изменяются только "номера\имена" эдитов (только четные от 2 до 240) и "t1" (t2, t3, t4, .. ,t35).
Хотелось бы задать переменную (Например "Z") и присвоить ей это условие, но так чтобы переменные "t1, t2, t3, .. ,t35)" и "имена\номера" эдитов задавались в каждой процедуре (всего 6 процедур), где находится оставшееся часть условия.
Можите подсказать как мне это реализовать?
Зарание спс."
Остается только удивлятся терпеливости человека, который позволил исходнику разростись до тринадцати мегов, прежде чем заметил, что что то не так.
Запостил: ReallyBugMeNot,
25 Февраля 2011
Анонимус 25.02.2011 17:03 # +7
программа моя была написала в файле noname1.pas.
в нем не было ни одной процедуры и ни одной функции. все переменные назывались a,b,c,d и что бы не заводить лишних переменных -- я их переиспользовал. Активно использовалост goto.
Когда файл стал слишком большой и компилятор отказался его компилировать -- я стал искать решение и так я понял зачем нужны процедуры.
Как хорошо, что в моем детстве нельзя было скомпилировать исходик на 13 мегов
TarasB 25.02.2011 17:14 # +1
Я даже сохранил, кажется, исходник моего первого лабиринтика! Только сюда он не влезет...
KirAmp 25.02.2011 18:32 # 0
ctm 01.03.2011 06:10 # 0
bugmenot 01.03.2011 13:23 # 0
ctm 01.03.2011 14:19 # 0
PS. в моем первом проекте (это был редактор карт для warcraft 2) было ~50 менюитемов с идиотской реализацией. не 240 едитов конечно, но все-таки. да и размер был килобайт 100...
цифры на порядок меньше - но принцип тот же:(
а тут.... видимо чел О-ОЧЕНЬ терпелив :)
bugmenot 01.03.2011 14:58 # 0
N выбирается по вкусу
а действия по борьбе с феноменом описаны в абсолютно любой книге
ctm 01.03.2011 17:18 # 0
бедный студент - ну скачай, читай с экрана, лениво читать - полно примеров - погугли!
интеренеты щас у всех быстрые и дешевые - не то что в 90-е.
в общем, мозгами думать не можем или не хотим:(
bugmenot 01.03.2011 19:03 # 0
ключевое в описанном - тупость, ибо надо: а) догадаться, что длинный модуль - неудобно б) удобнее - взять и поделить в) узнать, как поделить - проще, чем продолжать мучаться с длинным модулем
только пункт в) определенно требует высшей нервной деятельности
tr00_gr1m_doomster 01.03.2011 18:42 # 0
ахиреть, среди нас программист blizzard'а
ctm 02.03.2011 07:23 # 0
с другой стороны результат оказался вполне приличным в сравнении с оригиналом.
PS. на близзард никогда не работал:)
Kevin 25.02.2011 17:09 # +3
3.14159265 25.02.2011 17:53 # +5
________________________________________ ____________
>Здрасте, вообщем такая проблемка:
Здраствуйте, я хотел бы чтобы вы зделали игру
>И компелируется тож долговато.
И если пользователь играет эльфами...
>Всего 59988 строк.
Всего 4 зоны
>Можите подсказать как мне это реализовать? Зарание спс
Я джва года хочу такую игру. Можно...
итд..
Skelet0n 25.02.2011 22:28 # +7
1_and_0 25.02.2011 23:00 # −11
* ChanServ changes topic to 'Можно грабить корованы'
(c) http://bash.org.ru/quote/22171
1_and_0 26.02.2011 09:42 # −16
TarasB 26.02.2011 13:17 # +11
> bash.org.ru
Ёбаный пиздец...
3.14159265 26.02.2011 18:13 # +5
Весь ориджинал контент и креатив рунета давно куются на бошорке.Ну не набижал еще на /lm/ ну и что?
Skelet0n 27.02.2011 18:01 # 0
Я даже прослезился.
Петросян читает башорг. И не только читает, но и пересказывает!
3.14159265 28.02.2011 13:29 # 0
Skelet0n 28.02.2011 17:11 # 0
3.14159265 28.02.2011 18:03 # +3
3.14159265 28.02.2011 18:28 # −2
Весь вин теперь генерируется здесь:
http://vkontakte.ru/feed?section=popular
И еще большим вином стало ВНЕЗАПНОЕ появление там Андрея Романовича.
Skelet0n 28.02.2011 19:55 # 0
Хотя с первой позиции долго гыгыкал.
Lure Of Chaos 25.02.2011 23:42 # +3
как-то ухитрялся быть в курсе базовых возможностей каждого языка. ЧЯДНТ?
bugmenot 26.02.2011 01:32 # 0
ReallyBugMeNot 28.02.2011 11:52 # +1
1291 24.08.2011 22:58 # +1
1. Edits: array[0..do_xera] of TEdit.
2. Говнокод в Create()
Edits[0] := Edit1;
...
Edits[N] := EditNNN;
Зато потом всю эту хрень можно обрабатывать циклом.
Еще вариант:
for I := 0 to Controls.Count - 1 do
if Controls[i] is TEdit then ......
guest 24.03.2012 23:02 # 0
procedure TFormMain.Ed_KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var i,index:integer;
begin
index:=0;
if Key=VK_Return then
begin
//суть такова: в некоторых полях должны быть только числовые значения. Такие поля заносятся в EdMas в конструкторе формы. А имена у них всех вида ed_N.
for i:=0 to length(EdMas)-1 do
if pos(copy((Sender as TEdit).Name,4,length((Sender as TEdit).Name)-3),EdMas[i].Name)<>0 then index:=i;
//а эти числовые поля еще и по-разному надо обрабатывать
case index of:
...
Сколько угробил времени на эту хрень))