Похоже где то я не прав !?

 
Похоже где то я не прав !?
В эксперте создаю файл, где первое поле каждой записи есть величина Time для соответствующего бара. Поскольку дело не заладилось то сразу после создания очередной записи читаю ее первое поле, выделяю Year, Month и Hour и сравниаю их с текущими - они совсем разные ??? Вот этот код:

Handle = FileOpen ("FileH1",",");
FileSeek (Handle,0,SEEK_END);
FileWrite (Handle,Time,Bar,.........);
FileSeek (Handle,1,Seek_End);
CTime = FileReadNumber(Handle);
Print ("Year: ",TimeYear(CTime)," Month: ",TimeMonth(CTime)," Hour: ",TimeHour(CTime));
Print ("Year: ",TimeYear(Time)," Month: ",TimeMonth(Time)," Hour: ",TimeHour(Time));
FileClose (Handle);

Насколько я понимаю - значени полученные из Time длжны совпадать со значениями из файла, но они абсолютно РАЗНЫЕ ??

В чем может быть моя ошибка ?
 
вообще-то для того, чтобы прочитать данные надо правильно установить указатель
что означает Ваша инструкция FileSeek (Handle,1,Seek_End)?
То, что после записи Вы передвинули указатель на 1 байт за пределы файла.
Вам надо бы использовать FileSeek (Handle,0,SEEK_SET);
 
В продолжение моего вопроса
Предложенный вами вариант годится для первой записи файла.
Насколько я понимаю, после создания очередной записи (FileWrite) указатель находится после этой последней записи. Чтобы последующей командой FileReadNumber прочитать эту последнюю запись я и пытаюсь вернуть указатель на шаг (запись) назад. Удобнее это сделать от конца файла (если конечно командой FileSeek можно перемещать указатель назад). Если движение назад возможно, то как будет выглядеть команда
FileSeek ? Так: FileSeek (Handle,-1,Seek_End) ?
 
И еще о работе с файлами
Команда FileSeek всегда устанавливает указатель на начало соответствующей записи (на первое поле) или это зависит от того
на каком поле находился указатель перед выполнением этой команды ? Например перед командой FileSeek указатель стоял на
втором поле текущей записи, выдали команду FileSeek (Handle,5,Seek_Cur) и указатель вновь на втором поле, но уже записи через 5 после текущей ?
 
есть функция FileTell, которая возвращает текущее положение указателя
FileSeek (Handle,-1,Seek_End) переместит указатель на один байт назад. А Вы-то записали точно больше одного байта.
 
файловые функции ничего не знают о полях и записях
FileSeek(Handle,5,SEEK_CUR) переместит указатель на 5 байтов после текущего положения
Причина обращения: