Скачать MetaTrader 5

Как прочитать ANSI файл?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
yu-sha
1073
yu-sha  

В Блокноте создаю файл. Содержимое "1234567890". Проводник показывает размер 10 байт.

  string s="";
  int fh=FileOpen("1.txt",FILE_READ || FILE_ANSI || FILE_TXT);
  while (!FileIsEnding(fh)) 
    StringAdd(s,FileReadString(fh));

В переменной s - 5-тисимвольный  Unicode.

Подскажите, плз, где ошибка? 

В справке по FileReadString() написано Если файл открыт с флагом FILE_ANSI, то прочитанная строка преобразовывается в Unicode. 

yu-sha
1073
yu-sha  

Другой вариант:

  int fh=FileOpen("1.txt",FILE_READ || FILE_BIN);
  uchar text[];
  uint c=FileReadArray(fh,text);

 Возвращает с=4294967295, text[] пустой

В справке 

FileReadArray

Читает массивы любых типов, кроме строковых (может быть массив структур, не содержащих строки и динамические массивы), из бинарного файла с текущего положения файлового указателя.

Возвращаемое значение

Количество прочитанных элементов. По умолчанию, читает весь массив (cnt=WHOLE_ARRAY). 

Rashid Umarov
Админ
12664
Rashid Umarov  

Правильно нужно  так:

  string s="";
  int fh=FileOpen("1.txt",FILE_READ | FILE_ANSI | FILE_TXT);
  while (!FileIsEnding(fh)) 
    StringAdd(s,FileReadString(fh));

yu-sha
1073
yu-sha  

mql5, Rosh, спасибо 

Слишком много синтаксисов в голове ... нужна перезагрузка ))

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий