Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.08.17;
Скачать: CL | DM;

Вниз

Модальные формы и видимость глобальных переменных   Найти похожие ветки 

 
leonidus   (2008-07-14 15:36) [0]

Столкнулся со странной проблемой, в главной форме приложения описана глобальная переменная: Photos_FileList:tstrings, она используется и в других формах проекта. Так вот если другая форма (например Unit2) вызвана из главной методом Show то я не могу обратиться к переменной Photos_FileList в модуле Unit2 т.к. получаю при этом AV, но стоит мне вызвать Unit2 через ShowModal как доступ появляется. Во-первых хотелось бы понять причину такого поведения, а во вторых меня просто не устраивает вызов через ShowModal, т.к. в этом случае вызывающая форма остается на экране а мне  надо ее закрыть и открыть Unit2.


 
Плохиш ©   (2008-07-14 15:39) [1]


> т.к. получаю при этом AV


>  мне  надо ее закрыть и открыть Unit2.

Ну значит и не надо ум=ничтожать объект с адресом в Photos_FileList, при закрытии формы...


 
Правильный$Вася   (2008-07-14 15:42) [2]


>  главной форме приложения описана глобальная переменная:
>  Photos_FileList:tstrings

в форме нет переменных, есть свойства
если же ты опишешь это как переменную, тогда фавкт существования формы не будет иметь значения, и к этойпеременной можно юудет обращаться произвольно


 
Поросенок Винни-Пух ©   (2008-07-14 15:42) [3]

> т.к. получаю при этом AV

Это на 100000% никак не связано с модальностью/немодальностью


 
Поросенок Винни-Пух ©   (2008-07-14 15:54) [4]

фик знает что там у тебя наваяно. вот одна из версий:

list := TstringList.Create;
Form2.Show;
list.free;

list := TstringList.Create;
Form2.ShowModal;
list.free;

В первом случае при обращении в Form2 к списку будет та ерунда, что и у тебя.
Угадай почему.


 
leonidus   (2008-07-14 15:54) [5]

Плохиш, метод Photos_FileList.Free вообще нигде не используется т.е. Photos_FileList вообще не уничтожается (это я только что заметил и уже исправил, но ошибка осталась.)

Правильный$Вася, не понимаю вас, я и так описал Photos_FileList как переменную в разделе var главной формы.

Поросенок Винни-Пух согласен что не должна такая чисто интерфейсная фишка как модальность давать такие серьезные вещи как AV...


 
Поросенок Винни-Пух ©   (2008-07-14 15:54) [6]

у тебя ошибка в программе


 
Плохиш ©   (2008-07-14 15:57) [7]


> leonidus   (14.07.08 15:54) [5]
> Плохиш, метод Photos_FileList.Free вообще нигде не используется

Что ж не удивительно, что не программа, а сплошной глюкодром...

PS. У тебя ошибка в 17й строке.


 
Плохиш ©   (2008-07-14 15:59) [8]

Хм, выделение не правильно сделал, да и пофик...


 
Anatoly Podgoretsky ©   (2008-07-14 16:12) [9]


> у тебя ошибка в программе

Одназначно, но не только там.


 
icWasya ©   (2008-07-14 16:40) [10]

а где написан
Photos_FileList:=TstringList.Create;


 
Поросенок Винни-Пух ©   (2008-07-14 16:41) [11]

Гораздо интереснее где написано Free


 
Поросенок Винни-Пух ©   (2008-07-14 16:43) [12]

А вот кстати и разгадка:

а во вторых меня просто не устраивает вызов через ShowModal, т.к. в этом случае вызывающая форма остается на экране а мне  надо ее закрыть и открыть Unit2.


 
Плохиш ©   (2008-07-14 16:44) [13]


> Поросенок Винни-Пух ©   (14.07.08 16:41) [11]
> Гораздо интереснее где написано Free

Для получения битой ссылки, Free писать не обязательно...


 
Поросенок Винни-Пух ©   (2008-07-14 16:44) [14]

То есть там у него так и есть как протелепатировано в [4]



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

Текущий архив: 2008.08.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
1-1196789989
Elhat
2007-12-04 20:39
2008.08.17
Определение многопользовательской / однопользовательской Windows


2-1216031084
small
2008-07-14 14:24
2008.08.17
TXPMAnifest


2-1215718154
IvanS
2008-07-10 23:29
2008.08.17
packed record в строку


1-1196765671
LexXL
2007-12-04 13:54
2008.08.17
подскажите компонент


2-1216036098
small
2008-07-14 15:48
2008.08.17
локальная сеть