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

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

Again

Гость
#1
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 раз нажимать на всплывающем окне ОК... Подскажите, пожалуйста, выход из ситуации.
 

lazybiz

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

Again

Гость
#3
В массиве нет элемента со значением 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 );
}
 

a0z

Well-Known Member
15.03.2011
108
0
38
Minsk
#4
Убрать цикл. Записывать массив за раз. Типа этого:
WriteFile(hFile, mas, sizeof(mas), &dwBytesWrite, NULL)