1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

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

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

  1. Again

    Again Гость

    Репутация:
    0
    Код:
    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

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

    Again Гость

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


    Добавлено: В общем вот конечный код, что я пытался сделать
    Код:
    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

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

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