Форум: "Начинающим";
Текущий архив: 2008.08.17;
Скачать: [xml.tar.bz2];
ВнизМодальные формы и видимость глобальных переменных Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.042 c