Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Чтение из файла Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
Сергей



Зарегистрирован: 16.03.2008
Сообщения: 168

СообщениеДобавлено: Вс Дек 28, 2008 11:04 pm Ответить с цитатой Вернуться к началу

Олег подскажи пожалуйста, читаю внешний файл данной формулой:
fh = fopen( "e:/ddd.txt", "r");
if( fh )
{
while( ! feof( fh ) )
{
X=StrRight(fgets( fh ), 4);
printf( X );
Q=StrToNum( X );
}
}
else
{
printf("ERROR: file can not be found (does not exist)");
}

файл постоянно наполняется числами, формула берет последние 4 из них, все нормально до поры до времени, потом вываливается сообщение об ошибке что Q не определена. Время появления ошибки разное с количеством строк в файле никак не связана.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Дек 29, 2008 2:08 pm Ответить с цитатой Вернуться к началу

Хм. Не знаю в чем дело. Как правило такоая ошибка возникает когда в функцию StrToNum() попадают не текстовые данные или пустое значение. Не текстовым данным взятся вроде неоткуда. Логично попробовать вставить перед StrToNum() проверку на непустое значение.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Сергей



Зарегистрирован: 16.03.2008
Сообщения: 168

СообщениеДобавлено: Пн Дек 29, 2008 10:56 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Хм. Не знаю в чем дело. Как правило такоая ошибка возникает когда в функцию StrToNum() попадают не текстовые данные или пустое значение. Не текстовым данным взятся вроде неоткуда. Логично попробовать вставить перед StrToNum() проверку на непустое значение.

Как?)
Подскажи, а может такое действо вызывать символ переход на новую строку, мы его не видим но в любом текстовом файле он обязательно присутствует?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вт Дек 30, 2008 12:11 am Ответить с цитатой Вернуться к началу

Блин. Откровенно говоря я не очень силен в чтении файлов и вообще работе с текстовыми данными... Попробовал сэммулировать подобную ошибку - нифига не вышло Sad
В результате раздумий предлогаю немного изменить формулу. Вдруг поможет.
Код:

fh = fopen( "C:/ddd.txt", "r");
X = Null;
if( fh )
{
   while( ! feof( fh ) )
   {
      X=StrRight(fgets( fh ), 4);
      printf( X );
      Q=StrToNum( X );
   }
}
else
{
   printf("ERROR: file can not be found (does not exist)");
}


_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
BabyBear
Советник


Зарегистрирован: 10.12.2008
Сообщения: 53

СообщениеДобавлено: Вт Дек 30, 2008 4:23 pm Ответить с цитатой Вернуться к началу

Факт такой - число не читается из файла.
причины, например, такие
- число написано не полностью или вообще не записано
причина может быть в записывающей программе, скорее всего она пыталась записать, когда ами заблокировал файл для своего чтения.
- число там записано, но прочитать его нельзя, так как записывающая программа заблокировала доступ к файлу на время записи. и ами не может открыть файл.
Всё это нужно тестровать на конкретном компьютере.
Для начала , я бы записывал все события в новый файл и посмотрел, в какой строке появляетя ошибка.
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Сергей



Зарегистрирован: 16.03.2008
Сообщения: 168

СообщениеДобавлено: Вт Дек 30, 2008 5:51 pm Ответить с цитатой Вернуться к началу

BabyBear писал(а):
Факт такой - число не читается из файла.
причины, например, такие
- число написано не полностью или вообще не записано
причина может быть в записывающей программе, скорее всего она пыталась записать, когда ами заблокировал файл для своего чтения.
- число там записано, но прочитать его нельзя, так как записывающая программа заблокировала доступ к файлу на время записи. и ами не может открыть файл.
Всё это нужно тестровать на конкретном компьютере.
Для начала , я бы записывал все события в новый файл и посмотрел, в какой строке появляетя ошибка.

Все не то, она его по началу читает, запись не производится потом в какой то момент бац и выпадает хотя этот файл никто не трогает, возможен конфликт доступа к диску или переполнение где то.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вт Дек 30, 2008 5:56 pm Ответить с цитатой Вернуться к началу

А раз в этот файл запись производится не так часто, то может не читать его каждый раз а сперва проверить на дату/время последнего изменения функцией fgetstatus() и если она изменилась только тогда читать?

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Сергей



Зарегистрирован: 16.03.2008
Сообщения: 168

СообщениеДобавлено: Вт Дек 30, 2008 6:33 pm Ответить с цитатой Вернуться к началу

000 писал(а):
А раз в этот файл запись производится не так часто, то может не читать его каждый раз а сперва проверить на дату/время последнего изменения функцией fgetstatus() и если она изменилась только тогда читать?

Не думаю что выход, все равно когда нибудь произойдет конфликт. Ладно фиг с ним с этим файлом, лучше сумму с утра сам руками забивать буду)
Пора водку пить)
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вт Дек 30, 2008 6:48 pm Ответить с цитатой Вернуться к началу

Ну если это только раз в день надо делать, то руками надежнее полюбому.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Сергей



Зарегистрирован: 16.03.2008
Сообщения: 168

СообщениеДобавлено: Вт Дек 30, 2008 7:38 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Ну если это только раз в день надо делать, то руками надежнее полюбому.

Обленился)
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen