• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Messagebox & Запись Массива Чисел В Файл

  • Автор темы Again
  • Дата начала
A

Again

C++:
int mas[] = {48, 49, 50, 51, 52, 53, 54 ,55, 56, 57};
for (int i = 0; i < 10; ++i){
DWORD dwBytesWrite;
if(!WriteFile(
hFile,			  
&mas[i],				 
sizeof(i),		  
&dwBytesWrite,	  
(LPOVERLAPPED)NULL  
)){	
MessageBox::Show( "Couldn't write information into File A.", "Write information into file",
MessageBoxButtons::OK, MessageBoxIcon::Exclamation );	
break;
}	
else {
MessageBox::Show( "Information has been write into File A.", "Write information into file",
MessageBoxButtons::OK, MessageBoxIcon::Information );
break;
}
}
При записи брейков, в файл пишет только 0 (т.е. первое число массива), если же их убрать то нужно будет 10 раз нажимать на всплывающем окне ОК... Подскажите, пожалуйста, выход из ситуации.
 
L

lazybiz

Каких таких брейков? Ты о чем?
В массиве нет элемента со значением 0.
У тебя в любом из двух случаев завершения функции WriteFile всплывает MessageBox.
 
A

Again

В массиве нет элемента со значением 0.
В массиве запись начинается с 48, т.е. код числа 0.
У тебя в любом из двух случаев завершения функции WriteFile всплывает MessageBox.
Если внимательней посмотреть на код то Вы увидите 2 разных MessageBox-а...
Ну я вообще то спрашиваю, как можно преобразовать код таким образом, что бы MessageBox-ы выводились при успешной и при неудачной записи в файл не 10 раз, а 1. Может это можно, как-нить записать не используя цикла?..


Добавлено: В общем вот конечный код, что я пытался сделать
C++:
if(!WriteFile(
hFile,			  
&mas,				 
sizeof(*mas)*10,		  
&dwBytesWrite,	  
(LPOVERLAPPED)NULL  
))
{	
MessageBox::Show( "Couldn't write information into File A.", "Write information into file",
MessageBoxButtons::OK, MessageBoxIcon::Exclamation );	
}	
else{
MessageBox::Show( "Information has been write into File A.", "Write information into file",
MessageBoxButtons::OK, MessageBoxIcon::Information );
}
 
A

a0z

Убрать цикл. Записывать массив за раз. Типа этого:
WriteFile(hFile, mas, sizeof(mas), &dwBytesWrite, NULL)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!