| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Чтение и запись INI-файла |
| Автор: Vladimir_K 6.1.2007, 20:24 | ||
| Подскажите, как правильно читать и записывать данные в INI-файлы. Использую в своем модуле U_MA (имя формы F_MA) такую процедуру чтения:
Содержимое INI-файла: [F_MA] ON_OF_MA1=1 ON_OF_MA2=0 ON_OF_MA3=0 ON_OF_MA4=0 ON_OF_MA5=0 ON_OF_MA6=0 ON_OF_MA7=0 ON_OF_MA8=0 ON_OF_MA9=0 ON_OF_MA10=0 Все работает нормально. Но когда пытаюсь прочитать данные из этого INI-файла, но из другого модуля - ничего не выходит: переменная liValue = -1 и данные не читаются. Может быть надо как-то указывать адрес или еще что... Подскажите, пожалуйста! |
| Автор: Guedda 6.1.2007, 21:24 |
| http://forum.vingrad.ru/index.php?showtopic=21411&view=findpost&p=686471 |
| Автор: Vladimir_K 6.1.2007, 23:38 | ||
Эта функция не читает мой INI-файл
Как указать адрес INI-файла, откуда нужно читать данные? |
| Автор: Sunvas 6.1.2007, 23:44 |
Полным путем к твоему файлу. Добавлено @ 23:45 Возможно в сумме ты пропустил "/" поэтому и не читается. |
| Автор: Vladimir_K 6.1.2007, 23:48 | ||||
Не знаю, этот код я нашел в Инете, частично работает... iniSettings: TINIFile; Отсюда: [F_MA] ON_OF_MA1=1 ON_OF_MA2=0 ON_OF_MA3=0 ON_OF_MA4=0 ON_OF_MA5=0 ON_OF_MA6=0 ON_OF_MA7=0 ON_OF_MA8=0 ON_OF_MA9=0 ON_OF_MA10=0 берутся данные, и записываются в переменные MA_YN1...MA_YN10(см. код в самом начале):
'Col_MA1' - это тоже данные в INI-файле, я использую эту строку
для проверки, что INI-файл не пустой. |
| Автор: Sunvas 6.1.2007, 23:49 |
| Кажется нашел ошибку, почему из другого модуля не читается: Ведь глобальная перемення name в разных модулях разная. |
| Автор: Vladimir_K 6.1.2007, 23:50 | ||||
Указывал и полный путь - не работает. Добавлено @ 23:53
Но эта переменная явно не объявлена. Как быть? |
| Автор: Sunvas 6.1.2007, 23:54 | ||
Это какая-то полу-функция. Ведь переменные IniFile, ON_OF_MA1 в ней не прописаны. Добавлено @ 23:55 Это переменная относиться к класу формы. Т.е. чтобы она стала глобально пропиши перед ней из какого класса она берется. Добавлено @ 23:56
|
| Автор: Vladimir_K 7.1.2007, 00:21 | ||
Вот так?
вылетает ошибка: Method identifier expected |
| Автор: VICTAR 7.1.2007, 00:28 |
ну уж тоды не "/", а "\" |
| Автор: Sunvas 7.1.2007, 00:29 |
Точно. Вот что делает с людьми Интернет и постоянное написание длинных ЮРЛов.. |
| Автор: Vladimir_K 7.1.2007, 00:38 | ||||
Так - ошибка при компиляции;
Так - во время выполнения программы, при обработке данной строки. Добавлено @ 00:40 Да у меня вообще без слэша, и работает, но только в одном модуле... |
| Автор: VICTAR 7.1.2007, 00:42 | ||
А что непонятного? Для твоего IniFile
Или я что-то не понял? |
| Автор: Sunvas 7.1.2007, 00:50 | ||||
А ты так сделай:
|
| Автор: Vladimir_K 7.1.2007, 00:51 | ||
Прописал так (в том модуле (Graph), в котором не читалось):
кажись заработало! Завтра уже буду подробнее разбираться. Спасибо огромное! |
| Автор: Vladimir_K 7.1.2007, 00:57 | ||
Так - ошибка при компиляции. |
| Автор: VICTAR 7.1.2007, 01:02 |
| Vladimir_K, если все-таки не получиться, выложи целиком содержимое IniFile`a. Посмотрим. |
| Автор: Sunvas 7.1.2007, 01:05 | ||
Мыслим дальше. Убери "T" Т.е.
|
| Автор: aktuba 7.1.2007, 09:54 | ||||||||
Ошибка в этой строке и очень простая. Функция ReadInteger выглядит примерно так:
Т.е., в функции указывается секция модуля данных, считываемый параметр и значение по умолчанию (если такого параметра нет). НО, у тебя на месте секции стоит Name. Delphi под ним подразумевает Self.Name - имя формы! А т.к. в Ini-файле секция у тебя называется также, как имя формы - в первом случае работает. Но, во втором модуле, где форма называется иначе, не работает, т.к. в Ini-файле нет секции с названием другой формы. Чтобы работало и там и там сделай так:
|
| Автор: Sunvas 7.1.2007, 12:45 | ||
Тоже самое говорил я. Поэтому предлагал перед name прописать имя самой формы. |
| Автор: Vladimir_K 7.1.2007, 19:19 | ||
| Друзья мои, прописывал я имя формы перед Name - если, например TGraph.Name - появляется ошибка при компилляции программы, если Graph.Name - ошибка при выполнении программы! Сделал так:
и заработало великолепно! Уже проверил. Все дело было в правильном указании имени модуля: 'F_MA' Теперь данные можно читать и из модуля Graph. Еще раз спасибо за помощь и участие! |