Форум: "Начинающим";
Текущий архив: 2009.06.14;
Скачать: [xml.tar.bz2];
ВнизПроблема с ООП Access Violation Найти похожие ветки
← →
Rembo (2009-04-27 02:07) [0]Сделал класс, несколько методов, куча переменных.
Сделал штук 50 экземпляров его, все норм работало, но в какой то момент появилась аномалия:
myclass1:=TMyClass.Create;
myclass1.var1:=1;
myclass1.method1;
myclass1.var2:=5;<<<Access Violation Exception!!!
Но! Если не выполнять метод method1 или после него заново инициолизировать класс ошибки не будет.
Так же этот глюк возникает не у всех экземпляров. Появление ошибки зависит от порядка объявления экземпляров, но как именно я не понял.
Еще могу сказать что в method1 вызываеться функция из дллки (directx), если ее убрать аномалия исчезнет.
Вот функция:
hret:=D3DXCreateTextureFromFileEx(FD3DDevice,PChar(fname),0,0,0,0,D3DFMT_A8R8G8B 8,D3DPOOL_MANAGED, D3DX_DEFAULT,D3DX_DEFAULT,0,inf,nil,tex);
hret возвращает что мол все ок.
Прошу помоч, а еще прошу не перенносить тему в "построение игр".
Заранее благодарен.
← →
Германн © (2009-04-27 02:45) [1]
>
> Rembo (27.04.09 02:07)
>
> Сделал класс, несколько методов, куча переменных.
> Сделал штук 50 экземпляров его, все норм работало, но в
> какой то момент появилась аномалия:
> myclass1:=TMyClass.Create;
> myclass1.var1:=1;
> myclass1.method1;
> myclass1.var2:=5;<<<Access Violation Exception!!!
> Но! Если не выполнять метод method1 или после него заново
> инициолизировать класс ошибки не будет.
> Так же этот глюк возникает не у всех экземпляров. Появление
> ошибки зависит от порядка объявления экземпляров, но как
> именно я не понял.
← →
Германн © (2009-04-27 02:48) [2]А сам код привести стесняешься?
аАи как?
← →
First blood (2009-04-27 02:54) [3]
> myclass1.var2:=5;<<<Access Violation Exception!!!
Проблема не здесь, это глюк встроенного отладчика.
Проблема при выходе изmyclass1.method1;
. Копайте её.
← →
Rembo (2009-04-27 09:22) [4]Пасиб за помощь, проблему локализовал и решил вроде бы...
В D3DXCreateTextureFromFileEx использовалась запись inf типа PD3DXImageInfo = ^TD3DXImageInfo;
и в методе я ее я так и назвал PD3DXImageInfo, а ща допер что создаю пустой указатель, передаю его в функцию и пытаюсь чето получить из него)
Решение:
inf:TD3DXImageInfo;
...
D3DXCreateTextureFromFileEx(....,@inf);
Ну вот почему компилятор так просто все не объяснил
← →
KSergey © (2009-04-27 10:50) [5]> Rembo (27.04.09 09:22) [4]
> Ну вот почему компилятор так просто все не объяснил
Что компилятор не объяснил? Формально код правильный.
Однако у меня сильное подозрение, что warning комилятор таки выкидывал, но кто ж их читает?
← →
Anatoly Podgoretsky © (2009-04-27 11:20) [6]> KSergey (27.04.2009 10:50:05) [5]
Лучше предположить, что warning-и просто не включены.
← →
Rembo (2009-04-27 12:01) [7]Так они отключаютсья?0о
Только что вернул все назад запустил, еррор, НИИДИНОГО ВАРНИНГА НЕБЫЛО!
[Hint] graph.pas(389): Value assigned to "a" never used
[Hint] graph.pas(388): Value assigned to "time" never used
[Hint] graph.pas(343): Variable "xxx" is declared but never used in "TTxt.inittxt"
[Hint] graph.pas(490): Variable "I" is declared but never used in "TSprite.send"
[Hint] graph.pas(490): Variable "k" is declared but never used in "TSprite.send"
[Hint] graph.pas(653): Variable "i" is declared but never used in "initbtns"
[Hint] graph.pas(663): Variable "j" is declared but never used in "graphinit"
[Hint] graph.pas(664): Variable "k" is declared but never used in "graphinit"
← →
First blood (2009-04-27 12:22) [8]
> Rembo (27.04.09 09:22) [4]
> D3DXCreateTextureFromFileEx(....,@inf);
> Ну вот почему компилятор так просто все не объяснил
А это уже зависит от того как описана в хидере эта функция, а также думаю от настроек компилятора [x] Typed @ operator
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.06.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c