Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1199
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ну да. В том совете я тоже не смог влёт разобраться. Если вообще никак, то можно и так сделать. Но всё-же лучше разобраться как сделать структуру внутри структуры. Достаточно спросить как это сделать. Заодно и я чего-то ещё узнаю...
Спрашиваю ))))
Попробовал сделать "по своему".
Первая структура и 3 массива считываются нормально (при условии, что массивы приёмники не динамические, иначе в первый массив считываются все данные, записанные после структуры).
Однако, если записей больше, то
выдаёт чёрте чё...
Создать структуру, в которой вместо массивов будет структура. Сначала каждый массив упаковать в свою структуру. Затем полученную структуру упаковать в результирующую структуру. Распаковывать в обратном порядке.
Артём, можно пример? С учётом, что размер массивов динамический.
Спрашиваю ))))
Попробовал сделать "по своему".
Первая структура и 3 массива считываются нормально (при условии, что массивы приёмники не динамические, иначе в первый массив считываются все данные, записанные после структуры).
Однако, если записей больше, то
выдаёт чёрте чё...
Вы пытаетесь писать 4 разных файла, а открываете только один. Простите.... слов приличных нет.
Вы пытаетесь писать 4 разных файла, а открываете только один. Простите.... слов приличных нет.
Я пишу всё в один файл. Запись, с последующим чтением, нескольких структур в один файл проходит нормально.
Я пишу всё в один файл. Запись, с последующим чтением, нескольких структур в один файл проходит нормально.
Но читается массив от начала до конца. Как вы его разбиваете на 3 части? Как вы записали структуру и в тот-же файл умудрились записать массив? Я самоучка, много чего не знаю, но то, что это разные форматы данных, как-то подозреваю.
Я допускаю, что можно исхитриться и вот так, открыв файл для записи один раз впихнуть в него три массива, но так просто его частями не прочитаешь.
Но читается массив от начала до конца. Как вы его разбиваете на 3 части? Как вы записали структуру и в тот-же файл умудрились записать массив? Я самоучка, много чего не знаю, но то, что это разные форматы данных, как-то подозреваю.
Я допускаю, что можно исхитриться и вот так, открыв файл для записи один раз впихнуть в него три массива, но так просто его частями не прочитаешь.
Я же говорю, если в один файл записать только 1 структуру и 3 массива, то потом их оттуда можно прочитать (с условием, что для чтения массивов нужно указать размер каждого из них). Но вот фокус с записью и последующим чтением нескольких таких последовательностей у меня не прокатил. Возможно, нужно двигать указатель, но это уже напряжно...
Я же говорю, если в один файл записать только 1 структуру и 3 массива, то потом их оттуда можно прочитать (с условием, что для чтения массивов нужно указать размер каждого из них). Но вот фокус с записью и последующим чтением нескольких таких последовательностей у меня не прокатил. Возможно, нужно двигать указатель, но это уже напряжно...
Как это напряжно? Лошадиных сил не хватает? А как вы можете быть уверены что запись прошла успешно и как вы это предполагаете, если прочесть не получилось? Насколько мне известно .bin файл глазками не посмотришь.
Артём, можно пример? С учётом, что размер массивов динамический.
Нет, пока примеров не будет - сам ещё не делал, и когда буду делать, буду описывать в статьях. И будет ещё не скоро. Факт в том, что записывать в файл при помощи FileWriteStruct() можно только POD-структуры. Т.е. - простые структуры, не содержащие строки, динамические массивы, виртуальные функции, а также указатели на объекты и функции.
А это значит, что нужно придумывать и тестировать. Но направление я написал. Над реализацией нужно думать.
Нет, пока примеров не будет - сам ещё не делал, и когда буду делать, буду описывать в статьях. И будет ещё не скоро. Факт в том, что записывать в файл при помощи FileWriteStruct() можно только POD-структуры. Т.е. - простые структуры, не содержащие строки, динамические массивы, виртуальные функции, а также указатели на объекты и функции.
А это значит, что нужно придумывать и тестировать. Но направление я написал. Над реализацией нужно думать.
Выходит что как ни крути, а задача не решаема. Ведь у Сергея в примере внутри три динамических массива. Хоть как выстраивай структуру в структуре, она так и останется с динамическим массивом.
А вот если создать массив структур, то проблема решается записью массива. FileWriteArray(). Это уже проверено и в документации чётко сказано о записи массива структур.
Но читается массив от начала до конца. Как вы его разбиваете на 3 части? Как вы записали структуру и в тот-же файл умудрились записать массив? Я самоучка, много чего не знаю, но то, что это разные форматы данных, как-то подозреваю.
Я допускаю, что можно исхитриться и вот так, открыв файл для записи один раз впихнуть в него три массива, но так просто его частями не прочитаешь.
в бинарный файл можете писать любые структуры, массивы, даже отдельные переменные - и все в один файл
НО при чтении Вы должны именно в этом же порядке и читать данные
все будет работать
не смотрел дамп файла при записи с помощью FileWriteArray() , скорее всего размер массива в первых байтах будет записан - но проще просто тестовый скрипт составить, там с десяток строк кода ;)