Скачать MetaTrader 5

Объясните пожалуйста о байтах.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Вся история MQL5.community в одном месте!
Forex Trader
114255
Forex Trader 2006.09.29 21:30 
Хочу записать в файл целые числа а потом прочитать только два последних числа. Делаю это таким образом

int fwrite=FileOpen("Data.txt",FILE_CSV|FILE_WRITE);
for(int i=1;i<=9;i++) FileWrite(fwrite,i);
FileClose(fwrite);

int fread=FileOpen("Data.txt",FILE_CSV|FILE_READ);
int Line0=FileReadNumber(fread);
int Line1=FileReadNumber(fread);
Print(Line0,Line1);
FileClose(fread);

Получаю 1,2. То есть чтение происходит с начала файла. Добавляем команду FileSeek(fread,0,SEEK_END) перед чтением:

int fwrite=FileOpen("Data.txt",FILE_CSV|FILE_WRITE);
for(int i=1;i<=9;i++) FileWrite(fwrite,i);
FileClose(fwrite);

int fread=FileOpen("Data.txt",FILE_CSV|FILE_READ);
FileSeek(fread,0,SEEK_END);
int Line0=FileReadNumber(fread);
int Line1=FileReadNumber(fread);
Print(Line0,Line1);
FileClose(fread);

Получаю 0,0. Говорю себе: Ага! Надо смещать позицию чтения в FileSeek. Только вот разработчики дали эту возможность смещать позицию только в байтах, а ни встроках. Нахожу в документации что "Размер целого числа может быть 1, 2 или 4 байта". А у меня какое? 4? Изменяем на FileSeek(fread,-8,SEEK_END), Получаем 0,8. Откуда 0 здесь взялся. Смотрю файл откуда данные берутся (Data.txt). Вижу

1
2
3
4
5
6
7
8
9

Короче ничего не понимаю сколько нужно байтов указывать в FileSeek. Моя цель прочитать только два последних числа (8 и 9 в данном случае). Не хотелось бы организовывать цикл и считывать все строки до окончания файла т.к. файл может быть очень длинным. Пожалуйста объясните как можно прочитать только два последних числа используя FileSeek.
Forex Trader
114255
Forex Trader 2006.09.30 07:33  
значит, там текст.
тогда 1 символ = 1 байт, а перевод строки = 2 байта, итого 3 байта на строчку.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий