![]() |
|
![]() ![]() ![]() |
|
NuShaman |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 18.6.2008 Где: Екатеринбург Репутация: нет Всего: нет |
Всем добрый день!
Есть 2 функции, первая периодически записывает в трэде в текстовый файл, вторая - по нажатию кнопки оператором сохраняет параметры в INI-файл. Был замечен случай ошибки в записи, когда содержимое INI-файла прописалось в файл, открытый fopen.txt. После чего идут несколько нулевых байт, потом идут FF по адресам E800-EFFF и 00 по адресам F000-2EE48. Программа выполняется на промышленной материнке под Windows 98, на образе DRVSPACE.000, загруженному в оперативную память. Объём ОЗУ = 256 Мб. Привожу сокращенный код этих функций.
Пути к директориям FullPathPrograms и FullPathStatistic задаются при запуске программы и впоследствии не меняются. Вижу следующие пути решения проблемы, которые могут устранить возникновение этой ошибки, но могут и не устранить: * Файл stat_out открывать и не закрывать. Таким образом, устранится возможность использования stat_out при открытии INI-файла. * Запись байтами (53 байта), а не текстом (262 байта). * Записывать в stat_out сразу одним буфером. * Обработка ошибок. ferror. Написал программу только с аналогичными функциями, запустил на материнке - ошибок не возникало, при этом она работала несколько часов гораздо активнее, нежели тестируемая программа. Кто-нибудь сталкивался с такой проблемой? |
||||
|
|||||
mrbrooks |
|
||||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
NuShaman,
мне не нравится это строчка
что в данном случае ProgramName? Добавлено через 3 минуты и 26 секунд я бы сделал так:
Добавлено через 5 минут и 45 секунд да и не стоит забывать что ini-файл уже должен быть - то есть сам он не создастся при вызове конструктора |
||||
|
|||||
NuShaman |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 18.6.2008 Где: Екатеринбург Репутация: нет Всего: нет |
ProgramName - это название файла программы, оно одно и то же в обоих функциях, но поскольку пути к директориям FullPathPrograms и FullPathStatistic разные и не меняются, то возможен лишь какой-то сбой в памяти при использовании этих переменных, из-за чего записывая в один файл, информация попала в другой. |
||||
|
|||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
а где же имя файла? посмотри мой предыдущий пост. |
|||
|
||||
NuShaman |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 18.6.2008 Где: Екатеринбург Репутация: нет Всего: нет |
ProgramName - переменная типа AnsiString, может содержать, например, "123456.mhp" или "asrgaerhasertnwrt.mhp", вообщем любое название с расширением MHP. INI-файл уже создан. |
|||
|
||||
Rififi |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 1 Всего: 36 |
NuShaman,
эти функции пишут в один файл или в разные? что вот это такое я вообще не понял: "содержимое INI-файла прописалось в файл, открытый fopen.txt" |
|||
|
||||
NuShaman |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 18.6.2008 Где: Екатеринбург Репутация: нет Всего: нет |
Обе функции пишут в разные файлы (Название у этих двух файлов одно и то же, но в разных папках: FullPathPrograms и FullPathStatistic). В приложении также используется COM-порт, много объёмных TImage, очень много переменных и массивов, что якобы может привести к сбою в памяти. Добавлено через 6 минут и 1 секунду Вот фрагмент, когда содержимое INI-файла прописалось в файл статистики.
|
||||
|
|||||
NuShaman |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 18.6.2008 Где: Екатеринбург Репутация: нет Всего: нет |
Решение такое:
Использую компонент TFileStream и записываю одним буфером в 56 байт (числа в цифровом, а не в текстовом виде). Всех с наступившим 2009 годом! Любви и успехов! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |