Войти
ПрограммированиеФорумОбщее

Работа с указателями в Delphi (2 стр)

Страницы: 1 2 3 4 Следующая »
#15
23:51, 19 апр. 2012

veth
> 2. при доступе к полям записи через указатель его надо-бы разадресовывать:
> fragm_^.position := position;
Дельфи сам разыменовывает, зачем лишние галочки писать?


#16
0:15, 20 апр. 2012
old_proger
> Иногда глючит - а причина в том, что десятью строками выше поставили (не поставили) необязательную в данном случае точку с запятой, и компилятору это не нравится.
Ух ты. А вы говорите С++ опасный.
void f1(){;;}
Вот поставил я не обязательную точку с запятой и ничего не глючит. (:
#17
0:38, 20 апр. 2012

laMer007
Ну так сколько лет компилятору - вот глюки и завелись.

#18
2:13, 20 апр. 2012

old_proger
>Искал. Долго искал. Но конкретный кусок кода достаточно простой и ... в общем выше все написано.
если хочешь помощи, то не рассказывай какой у тебя простой код, а просто покажи его весь.
весь код частиц.
ошибка не в дельфи и не в строке fragm_.position := position;
даю 100%

#19
10:16, 20 апр. 2012

old_proger
> break;

А если не одна а несколько частиц с state=false, может все-таки Continue?

Если все же break, то тогда зачем вообще нужна переменная flag, почему не просто Exit?

old_proger
> Все-таки Delphi иногда глючит. Как и любая программа.

Ошибка у тебя, инфа 100%

#20
11:09, 20 апр. 2012

Помню где-то читал забавную статистику от контор мажорных вроде ХП, ИБМ и прочих. Там говорилось, что 99% ошибок по вине программиста, 0.9% по вине средст разработки (АПИ) и 0.1% по вине ОС. С точностью цифр гарантий не даю, но порядок был именно такой.
Так что ошибка где-то в коде, и (что не исключено) в том куске, который нам не показан.

>>может все-таки Continue?
Какой смысл ставить continue в конце итерации цикла?

#21
11:26, 20 апр. 2012

Darthman
> Какой смысл ставить continue в конце итерации цикла?

Смысл в том чтобы проверить все частицы на условие ( state=false ).
Сейчас, если встретится частица со state=false , то программа выходит из цикла.

#22
15:13, 20 апр. 2012

Это была ирония. Я хотел сказать что в самом конце итерации цикла continue не имеет смысла.

#23
15:19, 20 апр. 2012

Как вариант что можно посмотреть:
Проверить  выделение и освобождение памяти для Tfragment;
Убедиться  что один  и тот же объект fragm проверяется когда глючит. Например может где то неявно происходит сортировка списка objects.

#24
16:28, 20 апр. 2012

old_proger
> Я говорил - делаю комментарием одну строку (это присваивание позиции частице в
> начальный момент времени), и плюсование life частицам идет совсем по другому.
> Разве это не глюк?
Не показатель вообще.
Ломаешь память где-то. Так совпало,что это сломанная память влияет на работу в случае если эта строчка компилируется.
Это никак не указывает на то, что проблема связана с системой частиц.

Было у меня такое.
В менюшке ломалась память, а косячили в итоге самонаводящиеся ракеты. О_о
Просто ломалась та область памяти, с которой работали ракеты.

old_proger
> В общем, глюк некритичный.
Глюк указывает на сломанную память.
А сломанная память не бывает не критичной.
Как минимум в рандомный момент времени будешь ловить AV.
А после небольшого изменения кода - вообще все сломается, т.к. распределение памяти изменится.

#25
18:00, 20 апр. 2012

костыль
> Смысл в том чтобы проверить все частицы на условие ( state=false ).
> Сейчас, если встретится частица со state=false , то программа выходит из цикла.
Все в порядке. Это процедура добавления фрагмента, она ищет первый "умерший" и использует его повторно. Если таковых нет - добавляет новый. Так что тут все ок.

#26
18:28, 20 апр. 2012

old_proger
> procedure TPowerEngine.RestartFragment(var fragm_ : PFragment);

Кстати, зачем указатель передавать по var?

#27
18:30, 20 апр. 2012

entryway
> {$O-} пробовал? Я неоднократно сталкивался с ошибками оптимизатора в делфи7.

Хоть одну назови. Только не надо про то, что переменные в отладчике не так показываются.
Я знаю только одну ошибку компилятора Дельфи7, она связана с WideString.

#28
18:32, 20 апр. 2012

old_proger
> if (objects.Count > 0) then
> for i := 0 to objects.Count - 1 do begin

А зачем первая проверка-то?
Что-то мне вспомнилось, как на лурке один нашёл страшную ошибку компилятора дельфи, что типа если убрать проверку, то для пустого списка программа вылетает. Потом оказалось, что этот кадр для счётчика цикла брал беззнаковую переменную, вот она и перебиралась не от 0 до -1 (т.е. ни разу), а от 0 до MaxUINT

#29
18:34, 20 апр. 2012

@!!ex
> Ломаешь память где-то.

Кстати, в дельфи память поломать - надо постараться. Это при условии, что автор не брезгует врубать в компиляторе галочку на Range Checking, да?

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.