Ты ж сразу закрыл файл после первого элемента !
ааааа, ео-ма-ео... невнимательный
Да и результат операции обязательно требует проверки...
Тебе зачем функция FileWrite() возвращает значение ? Почему оно не проверяется ? И если значение не равно требуемому, надо вызывать функцию
GetLastError()
Да и результат операции обязательно требует проверки...
Тебе зачем функция FileWrite() возвращает значение ? Почему оно не проверяется ? И если значение не равно требуемому, надо вызывать
функцию GetLastError()
типа так:
int writeErr= FileWrite(fileHandle, names[i]); if (writeErr==0) PrintFormat("ошибка во время записи. Код ошибки: %d",GetLastError());
Но при этом же будет запись продолжаться?
типа так:
Но при этом же будет запись продолжаться?
Да, будет продолжаться, если сможет (вдруг у тебя на диске не хватает места ?).
Проверять лучше не по нулевому результату, а по записанной длине. Скажем, первые байты могут записаться, а дальше - места не хватит, возникнет
ошибка, но программа этого не заметит, поскольку вернется ненулевое значение.
Да, будет продолжаться, если сможет (вдруг у тебя на диске не хватает места ?).
Проверять лучше не по нулевому результату, а по записанной длине. Скажем, первые байты могут записаться, а дальше - места не хватит, возникнет
ошибка, но программа этого не заметит, поскольку вернется ненулевое значение.
int writeErr= FileWrite(fileHandle, names[i]); if (writeErr!=4) PrintFormat("ошибка во время записи. Количество записанных байтов: %d Код ошибки: %d",writeErr, GetLastError());
Так?
Можно и так. Но, рекомендую сравнивать через sizeof()
Вместо 4 (если будете писать не строки) лучше использовать:
Для записи строк вместо FileWrite лучше использовать FileWriteString.
Выходит так:
ResetLastError(); int writeErr= FileWrite(fileHandle, names[i]); if (writeErr!=sizeof(names)) PrintFormat("Ошибка во время записи. Количество записанных байтов: %d Код ошибки: %d",writeErr, GetLastError());
Я так понимаю sizeof возвращает размер типа переменной? sizeof будет одинаковым для переменной типа
int и массива (в т.ч. многомерного) типа int ?
Для записи строк вместо FileWrite лучше использовать FileWriteString.
Для смешанной записи (string, int) - File Write только подходит?
Как все интересно!) Спасибо!
Выходит так:
Я так понимаю sizeof возвращает размер типа переменной? sizeof будет одинаковым для переменной типа int и массива (в т.ч. многомерного) типа int ?
sizeof() вернет количество байт, соответствующих указанному типу данных. Для строки это всегда будет одно и то же значение, т. к. определяется только размер указателя на строку, а не длина строки:
string sTest = "Какую строку не вводи, а получишь 12"; Alert("Size of ", sTest, " is ", sizeof(sTest));
Результат:
2019.08.05 11:27:15.495 Test (NZDUSD,M1) Alert: Size of Какую строку не вводи, а получишь 12 is 12
Для смешанной записи (string, int) - File Write только подходит?
Да, только FileWrite. Но тогда придется позаботиться о сериализации строк и их массивов. Наиболее простой вариант - StringToShortArray(). Но это не универсально. Нужно осторожно походить к таким моментам.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Но записывает только первый элемент. Вставлял в конце "\n" - не помогает. Подскажите как правильно записать отчет...