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

Тема в разделе "MS Visual C++", создана пользователем Again, 17 апр 2012.

  1. Again

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

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Каких таких брейков? Ты о чем?
    В массиве нет элемента со значением 0.
    У тебя в любом из двух случаев завершения функции WriteFile всплывает MessageBox.
     
  3. Again

    Again Гость

    В массиве запись начинается с 48, т.е. код числа 0.
    Если внимательней посмотреть на код то Вы увидите 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 );
    }
     
  4. a0z

    a0z Well-Known Member

    Регистрация:
    15 мар 2011
    Сообщения:
    109
    Симпатии:
    0
    Убрать цикл. Записывать массив за раз. Типа этого:
    WriteFile(hFile, mas, sizeof(mas), &dwBytesWrite, NULL)
     
Загрузка...

Поделиться этой страницей