Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];

Вниз

Самооптимизация   Найти похожие ветки 

 
Green_Templar ©   (2005-03-09 15:55) [0]

Намучался я с этой проблемой 3 часа :)
Смысл был перегнать значения из unit2.stringgrid1 в массив unit1.bara специальным алгоритмом. Алгоритм был абсолютно правильный, но часть массива оно заполняло, а часть нет. Решилась проблема удивительно глупо - я перенёс алгоритм чуть дальше, и весь массив стал заполняться. Это при том, что unit2 и bara упоминаются только в этом алгоритме переноса! %| Что вообще с такими "глюками" делать?
В ходе моих поисков меня также удивила строка примерно такого содержания: отказано в доступе к unit2.stringgrid1.cells[a,b] due to optimization. Это что же, Дэлфи само решает к каким переменным мне иметь доступ, а к каким нет? >:( Как это отключить?
А вчера тоже абсолютно правильным алгоритмом у меня загружался спрайт с мусором. Долго ломал голову, в итоге оказывается нужно было просто перезагрузить.
Ну нужно ж с кем-то горем поделиться :)


 
Antonn ©   (2005-03-09 15:57) [1]

ни че не понял...


 
Green_Templar ©   (2005-03-09 16:02) [2]

Вот и я ничего не понял!!!


 
Ольга   (2005-03-09 16:10) [3]


> Как это отключить?

Если речь об оптимизации, то
Project Options ->Compiler ->Code Generation ->Optimization


 
Erik1 ©   (2005-03-09 17:17) [4]

А я понял, глюки при отладке наложились на глюки в "абсолютно правильном алгоритме", а незнание опртимизации переменых компилятором, породило увереность в мистических явлениях. А офицально заявляю, что это слухи и суевения!
 Наверника неинацианализируеш все переменые, напрасно надесь на копилятор.


 
Плохиш ©   (2005-03-09 17:33) [5]

Почему описание этого горя сделано не в "Потрепаться"?


 
MU ©   (2005-03-09 18:02) [6]


> Плохиш ©   (09.03.05 17:33) [5]
> Почему описание этого горя сделано не в "Потрепаться"?

Надо завести "Поплакаться"


 
Virgo_Style ©   (2005-03-09 20:08) [7]

Просто кое-кому надо все же заняться сабжем (самооптимизацией), я полагаю...


 
Green_Templar ©   (2005-03-09 23:56) [8]

Ольга, сэнкс.
Эрик1, что можно неинициализировать в алгоритме
var bara:array[0..1,1..3] of trect;

for a:=1 to form2.StringGrid1.RowCount-1 do for b:=1 to 8 do
case b mod 4 of
1:val(form2.StringGrid1.Cells[b,a],unit1.bara[b div 4,a].Left,i);
2:val(form2.StringGrid1.Cells[b,a],unit1.bara[b div 4,a].Top,i);
3:val(form2.StringGrid1.Cells[b,a],unit1.bara[b div 4,a].Right,i);
0:val(form2.StringGrid1.Cells[b,a],unit1.bara[b div 4-1,a].Bottom,i);
end;
???
Вроде только stringgrid. Все значения стринггрида-числа, заносились как раз перед этим алгоритмом. Я отодвинул алгоритм дальше - всё стало работать, до этого все поля bara[0,1] и bara[0,2] имели нулевые значения! Может ли такое быть, что программа просто не успевает инициализировать стринггрид полностью?
Плохишь, ваше заявление уже само по себе трёп.
Му, спасибо за сострадание ;)
Virgo_Style, "мы все знаем кто это и не будем тыкать пальцем (чтобы не замацать монитор)"?


 
Shaman_Naydak   (2005-03-10 01:18) [9]

1. А если RowCount будет больше 4... что тогда?
2. нулевой столбец - фиксированный чтоль?
3. стринггрид работает синхронно,  а вот успели или нет - это тебе виднее исходя из алгоритма
4. поставил бы ты нулевой case 1м в список, либо заменил на else

а лучше бы переписал бы код... уж больно некрасивый


 
Erik1 ©   (2005-03-10 12:01) [10]

А что в bara записано, как заполняется? И обращайся нармально к переменым. unit1 точно ненужен, а где у тебя form2 определен я незнаю, но думаю, что тоже в unit1. Тогда можно form2 опустить, StringGrid1.Cells[b,a] вынести из case. Что за переменая i вобще непонятно. Вобщем, рядом с этем алгоритмом нельзя ставить слово "абсолютно".


 
Green_Templar ©   (2005-03-11 00:24) [11]

Хорошо, алгоритм изменил до
for a:=1 to form2.StringGrid1.RowCount-1 do for b:=1 to 8 do begin
case b mod 4 of
0:val(form2.StringGrid1.Cells[b,a],unit1.bara[b div 4-1,a].Bottom,i);
1:val(form2.StringGrid1.Cells[b,a],unit1.bara[b div 4,a].Left,i);
2:val(form2.StringGrid1.Cells[b,a],unit1.bara[b div 4,a].Top,i);
3:val(form2.StringGrid1.Cells[b,a],unit1.bara[b div 4,a].Right,i);
end;
if i<>0 then showmessage("form2.Stringgrid1.cells["+inttostr(b)+","+inttostr(a)+"] invalid value. ("+form2.StringGrid1.Cells[b,a]+")");
end;

Заносятся данные в стринггрид for b:=1 to form2.StringGrid1.RowCount-1 do for a:=1 to 8 do begin read(playerfile,c);form2.stringgrid1.cells[a,b]:=inttostr(c);end;
Если алгоритм писать сразу после этой строчки, будет то, что я говорил. С - интегер.
Юнит2 юзэс юнит1. Юнит1 и форм2 из разных юнитов :) Я не обрезал юнит1 бо точно такой же алгоритм используется в обработчике нажатий кнопки в юните2. Раз такое дело, то я наверно вообще его в отдельную библиотеку запихну :)
Моя оценка сего алгоритма есть моим субъективным мнением и не претендует на истинность, впрочем, как и ваша :)
Если роукаунт>4, то массив я увеличиваю в размерах :)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.043 c
3-1109089238
Bogdan
2005-02-22 19:20
2005.03.27
Редактирование записи.


1-1110815904
mordush
2005-03-14 18:58
2005.03.27
Поисковик


4-1108026222
Stanislav
2005-02-10 12:03
2005.03.27
Запись данных на диск не создавая файла


1-1110489591
GL00m
2005-03-11 00:19
2005.03.27
Не могу сконвертить 01Dec04 в TDate...


1-1110965012
Zhekson
2005-03-16 12:23
2005.03.27
почему не ставится стиль fsBold?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский