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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2009, 16:10   #1
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
Злость неизвестный глюк(или Дельфи не любит мой модуль)

написал модуль для чтения моделей формата PIE(модуль сырой...нужно было тупо чтение+структуры)

отрывок из файла(procedure TPcPIEv2File.LoadFromFile(FileName: string)
Код:
     t:=Copy(s,1,Pos(' ',s)-1);
     FLevels[i].Polygons[j].flags[1]:=false;
     FLevels[i].Polygons[j].flags[2]:=false;
     FLevels[i].Polygons[j].flags[3]:=false;
     if (t='200')or(t='a00')or(t='10200')or(t='10a00') then FLevels[i].Polygons[j].Flags[1]:=true
      else if (t='2a00')or(t='2200') then begin FLevels[i].Polygons[j].Flags[1]:=true; FLevels[i].Polygons[j].Flags[2]:=true; end
       else if (t='4a00')or(t='4200') then begin FLevels[i].Polygons[j].Flags[1]:=true; FLevels[i].Polygons[j].Flags[3]:=true; end
        else begin FLevels[i].Polygons[j].Flags[1]:=true;FLevels[i].Polygons[j].Flags[2]:=true;FLevels[i].Polygons[j].Flags[3]:=true; end;
     Delete(s,1,Pos(' ',s));
     SetLength(FLevels[i].Polygons[j].Points,StrToInt(Copy(s,1,Pos(' ',s)-1)));
     SetLength(FLevels[i].Polygons[j].TexturePoints,StrToInt(Copy(s,1,Pos(' ',s)-1)));
     Delete(s,1,Pos(' ',s));
     for k:=0 to Length(FLevels[i].Polygons[j].Points)-1 do
      begin
       FLevels[i].Polygons[j].Points[k]:=StrToInt(Copy(s,1,Pos(' ',s)-1));
       Delete(s,1,Pos(' ',s));
      end;

и наблюдаю следующие чудеса:
1)именно в этом модуле перестают работать динамические подсказки(параметры процедур...где что обьявленно и тд)
2)при трассировке, когда выполняется строки из модуля, выделяется всегда строка, которая уже выполнилась...а не та которая должна
3)самое странное!
файл читается успешно...
далее ставлю наблюдение при трассировке(P:TPcPIEv2File)
смотрю сразу целиком массив P.FLevels[0].Polygons
тогда вижу что, допустим P.FLevels[0].Polygons[2].Points[4]=18
ставлю наблюдение именно за P.FLevels[0].Polygons[2].Points[4]
и вижу что она равна...числу...побольше 17 миллионов(хотя при первом наблюдении(за полным массивом) вижу что она по прежнему равна 18-ти)

и еще!

ставлю точку останова на выделенной строке
при первой остановке(естественно с момента как P.FLevels[0].Polygons[2].Points[4] начинает сущкствовать) вижу положенные 18...а далее чередуется 18 и эти миллионы...хотя ничто не изменяетэто значение...

что за чудо?(этот модуль во вложении)
Вложения
Тип файла: rar PIEv2.rar (1.5 Кб, 7 просмотров)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.07.2009, 16:23   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Обычно от таких глюков помогает Rebuild
Black Fregat вне форума Ответить с цитированием
Старый 23.07.2009, 16:43   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

перепостройка не помогает...и это тут вообще не причем(в Дельфи такого не разу не видел...а вот в Сях слышал не редко)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.07.2009, 17:10   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
и наблюдаю следующие чудеса:
Мда... я тоже на такое напарывался.
Иногда помогает отключение оптимизации, но вот с подсказками бывает беда, такое впечатление что они зависят от билда оси...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.07.2009, 17:19   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

отключение оптимизации не помогло

неужели придется все переписывать?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.07.2009, 17:29   #6
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Тож такое происходило иногда помогало вместо например:
ListBox1. писать Form1.Listbox.

Кароч Делфи тупо не видела компонент и приходилось дописывать Form1.

Хотя не факт.. Тупо метод проб.
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 23.07.2009, 17:33   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

тут компоненты вообще не используются
только массивы.

и меня напрягает что в массиве P.FLevels[0].Polygons[2]
у P.FLevels[0].Polygons[2].Points[4] одно значение(если смотреть всю структуру в целом)
а если именно P.FLevels[0].Polygons[2].Points[4] то значение другое(вообще левое)

--------------------------------------------

а насчет компонент это смотря как процедуру оформляешь
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.07.2009, 21:16   #8
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

У меня тоже нередко Delphi глючит. Как-то писала ошибку чтения файла хотя все написано было правильно. Удалил несколько строчек кода вообще не связанных с файлом и код заработал!?!? Помогла перезагрузка.
Вадим Буренков вне форума Ответить с цитированием
Старый 23.07.2009, 22:01   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

неужели безнадега?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.07.2009, 01:19   #10
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Бывает...

Если "перестают работать динамические подсказки", то это уже нехорошо...
Хотя часто бывает - просто что-то забыл заранее объявить.....
Цитата:
перепостройка не помогает...
Всмысле "перепостройка"..?

Когда начинает твориться что-то подобное, я делаю новый проект и переношу содержимое всех процедур и функций (можно через блокнот) в новый проект - после этого довольно часто всё становится нормально, хотя не изменилось ни одного символа...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Глюк schoolpak или я чего то не знаю? DsDevis Паскаль, Turbo Pascal, PascalABC.NET 20 09.05.2022 10:10
Ини файл ошибка(глюк или что?) dr.Chas Общие вопросы Delphi 10 18.06.2008 08:09
Мой собственный модуль работы с сообщениями Sibedir Софт 7 17.11.2007 01:23
Глюк? Или я туплю? Nick93.93 Общие вопросы Delphi 6 04.03.2007 14:28