|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.04.2012, 12:19 | #1 |
Пользователь
Регистрация: 14.10.2011
Сообщений: 77
|
Доступ к переменным
Программа состоит из нескольких форм и отдельных модулей. Кампиляция никаких ошибок не выдаёт, но при выполнении, не всегда и не на всех компьютерах, возникает ошибка при обращении к глобальным переменным в соседних модулях. Ошибка неявная, программа продолжает выполнение, ОС не выдаёт никаких сообщений, но чтение значения переменной возвращает 0. Не всегда и явной закономерности я не заметил. Скажем, возвращается пустая строка, где должен быть прописан путь к файлу, строка с каким-либо текстовым значением и есть подозрение, что не только строковые переменные. Даже под отладчиком.
Причём зависит от конкретной реализации ОС. По крайней мере, такое ощущение. Может какие-то опции капиляции изменить, кто подскажет? |
12.04.2012, 12:53 | #2 |
Форумчанин
Регистрация: 25.08.2010
Сообщений: 258
|
А как именно вы описываете глоб. переменные - var в interfaces?
|
12.04.2012, 13:01 | #3 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Проще кинуть проект, и указать какие переменные обычно шалят. Вряд ли есть сразу рецепт.
Пока предполагаю, что ошибки в коде из-за глобальности доступа к переменным. Почитать http://www.gunsmoker.ru/2011/04/blog-post.html |
12.04.2012, 13:02 | #4 |
Пользователь
Регистрация: 14.10.2011
Сообщений: 77
|
А вот тут я что-то не подумал.
Вот так: Код:
___________ Код нужно оформлять по правилам: тегом [CODE]..[/СODE] (это кнопочка с решёточкой #) Не забывайте об этом! Модератор. Последний раз редактировалось Serge_Bliznykov; 12.04.2012 в 15:31. |
12.04.2012, 13:11 | #5 |
Форумчанин
Регистрация: 25.08.2010
Сообщений: 258
|
Хорошо и где именно затык? Какая переменная обнуляется?
|
12.04.2012, 13:24 | #6 |
Пользователь
Регистрация: 14.10.2011
Сообщений: 77
|
Я сумел отследить на отладчике только один момент. Глобальная строковая переменная, определяющая путь к программной папке, инициализируется при создании формы и должна быть доступна всем другим модулям. Но одна из процедур в другом модуле при обращении к этой строковой переменной получает пустую строку. Хотя другие процедуры в этом же модуле получают нормальный путь. Причём только на отдельных компьютерах. Грешить на ОС я бы стал в последнюю очередь.
И это не единичная переменная. Теряется переменная, содержащая строковое представление кода выхода, булевая переменная, определяющая необходимость заверщения процедуры. Все они глобальные в модуле главной формы. |
12.04.2012, 14:21 | #7 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Мб конфликт имён где-то ? Т.е. у Вас где-то лежит ещё какая-то переменная с этим же именем , и в той процедуре видимость переменных другая и читает из другой переменной (неинициализированной)
Попробуйте везде, где критично, проставить имя_модуля.имя_переменной |
12.04.2012, 14:43 | #8 |
мальчик-помогай =)
Форумчанин
Регистрация: 16.09.2010
Сообщений: 522
|
ТС, поменяй порядок модулей в uses... твои модули должны идти в самом конце списка
смотри не только в модуле формы, а и в файле где строки "application.run" (Project - View Source) проблема в порядке initialization-секций |
12.04.2012, 16:54 | #9 |
Пользователь
Регистрация: 14.10.2011
Сообщений: 77
|
[QUOTE=phomm;1020231]Мб конфликт имён где-то ? Т.е. у Вас где-то лежит ещё какая-то переменная с этим же именем , и в той процедуре видимость переменных другая и читает из другой переменной (неинициализированной)
Попробуйте везде, где критично, проставить имя_модуля.имя_переменной[/QUOT] Тоже может быть, попробую. Только почему проблемма не на всех компах? |
12.04.2012, 16:58 | #10 | |
Пользователь
Регистрация: 14.10.2011
Сообщений: 77
|
Цитата:
Код:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
доступ к переменным из scanf | zl@dey | Общие вопросы C/C++ | 3 | 21.12.2011 13:49 |
Вопрос по переменным | ronston | Общие вопросы C/C++ | 6 | 06.10.2010 10:27 |
Доступ функций к глобальным переменным | Utkin | Общие вопросы по программированию, компьютерный форум | 74 | 19.04.2010 07:59 |
присвоить из бд переменным | akimov_aleks | БД в Delphi | 6 | 07.04.2010 08:24 |
Доступ к переменным | RealSHELS | Общие вопросы Delphi | 4 | 15.06.2008 13:14 |