Как дописать данные в файл? Пробовала открыть с помощью команды FileOpen("SomeFile.txt",FILE_BIN|FILE_SHARE_READ|FILE_ANSI); - файл открывается. Хэндл - 1. Но при записи в файл (FileWriteString(lnFHW,"Some String"); - данные не пишутся. Если же открыть файл с флагом FILE_WRITE - файл открывается нулевой длины, т.е. ранее записанные данные пропадают. Это так и задумано или ошибка в программе?
Как дописать данные в файл? Пробовала открыть с помощью команды
FileOpen("SomeFile.txt",FILE_BIN|FILE_SHARE_READ|FILE_ANSI); - файл открывается. Хэндл - 1. Но при записи в файл
(FileWriteString(lnFHW,"Some String"); - данные не пишутся. Если же
открыть файл с флагом FILE_WRITE - файл открывается нулевой длины, т.е.
ранее записанные данные пропадают. Это так и задумано или ошибка в программе?
Всего
доброго.
Разобралась, нужно писать сразу при открытии и FILE_WRITE|FILE_READ. Только тогда не понятно назначение параметра FILE_BIN.
Разобралась, нужно писать сразу при открытии и FILE_WRITE|FILE_READ. Только тогда не понятно назначение параметра FILE_BIN.
Вы выбрали не самый очевидный способ открытия файла на чтение и запись.
Флаги открытия файлов
Значения флагов, определяющих режим работы с
файлом. Флаги определены следующим образом:
Идентификатор
Описание
FILE_READ
Файл открывается для
чтения
FILE_WRITE
Файл открывается для
записи
FILE_BIN
Двоичный режим чтения-записи (без
преобразования из строки и в строку)
FILE_CSV
Файл типа csv (все записанные
элементы преобразуются к строкам соответствующего типа, unicode или ansi, и
разделяются разделителем)
FILE_TXT
Простой текстовый файл (тот же csv,
однако разделитель не принимается во внимание)
FILE_ANSI
Строки типа ANSI (однобайтовые
символы)
FILE_UNICODE
Строки типа UNICODE (двухбайтовые
символы)
FILE_SHARE_READ
Совместный доступ по чтению со
стороны нескольких программ
FILE_SHARE_WRITE
Совместный доступ по записи со
стороны нескольких программ
FILE_REWRITE
Возможность перезаписывания файла
функциями FileCopy и FileMove. Файл должен существовать или открываться для
записи. В противном случае файл открыт не будет
FILE_COMMON
Расположение файла в общей папке всех
клиентских терминалов
Как дописать данные в файл? Пробовала открыть с помощью команды
FileOpen("SomeFile.txt",FILE_BIN|FILE_SHARE_READ|FILE_ANSI); - файл открывается. Хэндл - 1. Но при записи в файл
(FileWriteString(lnFHW,"Some String"); - данные не пишутся. Если же
открыть файл с флагом FILE_WRITE - файл открывается нулевой длины, т.е.
ранее записанные данные пропадают. Это так и задумано или ошибка в программе?
Всего
доброго.
Если сильно не ломать голову то сначала считываем содержимое файла (открыв его при помощи FILE_SHARE_READ),а затем создаем новый файл и пишем в него все что нужно (при помощи FILE_WRITE).
PS
Хотя по логике вещей кроме FileOpen, FileCopy и FileDelete следует предусмотреть и FileCreate.
При этом так чтобы FileOpen открывал уже существующий файл для чтения и записи (без удаления содержимого), а FileCreate создавал/переписывал файл...
Или я что-то не понимаю или для объекта "Label" не корректно работает вот этот код
Руками проверил, корректно работает только "CORNER_LEFT_UPPER".
PS
Билд 212....
В разделе "Справочник MQL5 / Стандартные константы, перечисления и структуры / Константы объектов / Угол привязки " есть пример скрипта, который расставляет метки по четырем углам. Запустите его у себя.
void CreateLabel(long chart_id,string name,int chart_corner,string text_label,int x_ord,int y_ord){//---ObjectCreate(chart_id,name,OBJ_LABEL,0,0,0);
ResetLastError();if(!ObjectSetInteger(chart_id,name,OBJPROP_CORNER,chart_corner))Print("Не удалось установить угол привязки для объекта",
name,", ошибка",GetLastError());
ObjectSetInteger(chart_id,name,OBJPROP_XDISTANCE,x_ord);
ObjectSetInteger(chart_id,name,OBJPROP_YDISTANCE,y_ord);
ObjectSetString(chart_id,name,OBJPROP_TEXT,text_label);}//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+void OnStart(){//---int height=ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0);int width=ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0);string arrows[4]={"LEFT_UPPER","RIGHT_UPPER","RIGHT_LOWER","LEFT_LOWER"};
CreateLabel(0,arrows[0],CORNER_LEFT_UPPER,"0",50,50);
CreateLabel(0,arrows[1],CORNER_RIGHT_UPPER,"1",50,50);
CreateLabel(0,arrows[2],CORNER_RIGHT_LOWER,"2",50,50);
CreateLabel(0,arrows[3],CORNER_LEFT_LOWER,"3",50,50);}
В разделе "Справочник MQL5 / Стандартные константы, перечисления и структуры / Константы объектов / Угол привязки " есть пример скрипта, который расставляет метки по четырем углам. Запустите его у себя.
Спасибо, разобрался. Не сразу обратил внимание на все параметры у Label (в старом коде отсутствовал OBJPROP_ANCHOR и другие приятные мелочи).....
Добрый день. Вопрос MQL5 - запись данных в файл.
Как дописать данные в файл? Пробовала открыть с помощью команды FileOpen("SomeFile.txt",FILE_BIN|FILE_SHARE_READ|FILE_ANSI); - файл открывается. Хэндл - 1. Но при записи в файл (FileWriteString(lnFHW,"Some String"); - данные не пишутся. Если же открыть файл с флагом FILE_WRITE - файл открывается нулевой длины, т.е. ранее записанные данные пропадают. Это так и задумано или ошибка в программе?
Всего доброго.
FILE_READ|FILE_WRITE
Добрый день. Вопрос MQL5 - запись данных в файл.
Как дописать данные в файл? Пробовала открыть с помощью команды FileOpen("SomeFile.txt",FILE_BIN|FILE_SHARE_READ|FILE_ANSI); - файл открывается. Хэндл - 1. Но при записи в файл (FileWriteString(lnFHW,"Some String"); - данные не пишутся. Если же открыть файл с флагом FILE_WRITE - файл открывается нулевой длины, т.е. ранее записанные данные пропадают. Это так и задумано или ошибка в программе?
Всего доброго.
Разобралась, нужно писать сразу при открытии и FILE_WRITE|FILE_READ. Только тогда не понятно назначение параметра FILE_BIN.
Разобралась, нужно писать сразу при открытии и FILE_WRITE|FILE_READ. Только тогда не понятно назначение параметра FILE_BIN.
FILE_BIN указывает на то, что числа, вещественные и целые, записываются в файл как есть, в двоичном формате, без преобразования в текстовый формат.
Разобралась, нужно писать сразу при открытии и FILE_WRITE|FILE_READ. Только тогда не понятно назначение параметра FILE_BIN.
Вы выбрали не самый очевидный способ открытия файла на чтение и запись.
Флаги открытия файлов
Значения флагов, определяющих режим работы с файлом. Флаги определены следующим образом:
Идентификатор
Описание
FILE_READ
Файл открывается для чтения
FILE_WRITE
Файл открывается для записи
FILE_BIN
Двоичный режим чтения-записи (без преобразования из строки и в строку)
FILE_CSV
Файл типа csv (все записанные элементы преобразуются к строкам соответствующего типа, unicode или ansi, и разделяются разделителем)
FILE_TXT
Простой текстовый файл (тот же csv, однако разделитель не принимается во внимание)
FILE_ANSI
Строки типа ANSI (однобайтовые символы)
FILE_UNICODE
Строки типа UNICODE (двухбайтовые символы)
FILE_SHARE_READ
Совместный доступ по чтению со стороны нескольких программ
FILE_SHARE_WRITE
Совместный доступ по записи со стороны нескольких программ
FILE_REWRITE
Возможность перезаписывания файла функциями FileCopy и FileMove. Файл должен существовать или открываться для записи. В противном случае файл открыт не будет
FILE_COMMON
Расположение файла в общей папке всех клиентских терминалов
Добрый день. Вопрос MQL5 - запись данных в файл.
Как дописать данные в файл? Пробовала открыть с помощью команды FileOpen("SomeFile.txt",FILE_BIN|FILE_SHARE_READ|FILE_ANSI); - файл открывается. Хэндл - 1. Но при записи в файл (FileWriteString(lnFHW,"Some String"); - данные не пишутся. Если же открыть файл с флагом FILE_WRITE - файл открывается нулевой длины, т.е. ранее записанные данные пропадают. Это так и задумано или ошибка в программе?
Всего доброго.
Если сильно не ломать голову то сначала считываем содержимое файла (открыв его при помощи FILE_SHARE_READ),а затем создаем новый файл и пишем в него все что нужно (при помощи FILE_WRITE).
PS
Хотя по логике вещей кроме FileOpen, FileCopy и FileDelete следует предусмотреть и FileCreate.
При этом так чтобы FileOpen открывал уже существующий файл для чтения и записи (без удаления содержимого), а FileCreate создавал/переписывал файл...
Или я что-то не понимаю или для объекта "Label" не корректно работает вот этот код
Руками проверил, корректно работает только "CORNER_LEFT_UPPER".
PS
Билд 212....
В разделе "Справочник MQL5 / Стандартные константы, перечисления и структуры / Константы объектов / Угол привязки " есть пример скрипта, который расставляет метки по четырем углам. Запустите его у себя.
А еще не мешало бы добавить OBJPROP_WIDTH и OBJPROP_HEIGHT для button, label, и др. подобных объектов.
Для полноценности. Отсутствие этих свойств сильно ограничивает возможности.
В разделе "Справочник MQL5 / Стандартные константы, перечисления и структуры / Константы объектов / Угол привязки " есть пример скрипта, который расставляет метки по четырем углам. Запустите его у себя.
Спасибо, разобрался. Не сразу обратил внимание на все параметры у Label (в старом коде отсутствовал OBJPROP_ANCHOR и другие приятные мелочи).....
А еще не мешало бы добавить OBJPROP_WIDTH и OBJPROP_HEIGHT для button, label, и др. подобных объектов.
Для полноценности. Отсутствие этих свойств сильно ограничивает возможности.
OBJPROP_XSIZE и OBJPROP_YSIZE