• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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)
 
Мы в соцсетях:

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