Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Клуб профессиональных программистов :: Выпуск #139


Клуб профессиональных программистов «Весельчак У»
Информационная рассылка сайта и форума.  Выпуск 139.  2 августа 2012 г.

Здравствуйте, уважаемые читатели!



В разделе встраиваемых систем появилась новая тема: «Инструментальные средства разработки». Это сборник по аналогии с уже существующими «Книжная полка разработчика систем со встроенными микропроцессорами» и «Публикации на тему встроенных систем».


На «книжную полку» добавлено:



Публикаций добавлено:



В «средства разработки» добавлено:




Приятного чтения! Прощаемся с Вами до следующего выпуска.


С уважением, команда Клуба.


  • Программирование :: Неотложка
  • сканирую строку
    Код:
    swscanf_s("Y2=2.60000","%[^=]=%f",....,)

    результат
    Код:
    "Y2"
    2.5999999 //WTF

    а как-то сразу округлять возможно ?
  • Программирование :: Общий
  • Привет всем. Вопрос такой. Я вызываю в PowerShell компиляцию Visual Studio проекта но думаю как-бы получить результат компиляции. Или он удачныи или нет...
    Пока надумал только один вариант - проверять или собрался .exe файл... но это очень таки коварный подход...(если не изменяется директория компилированого проекта, чего я не могу обещать)
    Может есть более простой и надежный метод.. Спасибо
  • Программирование :: .NET технология от и до
  • Посоветуйте, пожалуйста, программу для работы со звуковыми файлами, которая:
     1. Позволяет создавать плагины.
     2. Стабильно работает при написании плагинов по установленным разработчикаи правилам.
     3. При выпуске новых версий не меняет основные правила написания плагинов.
     4. Есть подробные писания правил создания плагинов и примеры плагинов с исходными кодами.
     5. При написании плагинов можно было использовать C#.
     6. Была бы возможность использования функций программы типа FFT, фукнций визуализации и др.
  • Программирование :: .NET технология от и до :: WinForms
  • Есть у нас приложение, интенсивно работающее с памятью и DirectX (т.е. в том числе видеопамятью).

    И вот стоит в этом приложении вызвать стандартный OpenFileDialog в multiselect режиме, выбрать пару файлов в некоторых (но не всех подряд) папках, как стек процесса разрушается, а затем происходит глобальный сбой видеодрайвера и кратковременное отключение монитора до перезагрузки видеоподсистемы Windows. Причём наблюдается это не на всякой машине. Без вызова OpenFileDialog всё работает стабильно.

    0) Отчего сие?

    Это вопрос философский, риторический. Живо напоминает:
    Цитата: м/ф "Трое из Простоквашино"
    Мои папа и мама! Я живу хорошо, просто замечательно. У меня все есть, есть свой дом, он теплый. В нем одна комната и кухня. Я без вас очень скучаю, особенно по вечерам. А здоровье мое не очень. То лапы ломит, то хвост отваливается. А на днях я линять начал. Старая шерсть с меня сыпется, хоть в дом не заходи. Зато новая растет чистая, шелковистая, так что лохматость у меня повысилась. До свидания, ваш сын дядя Шарик.
    В любом случае такое поведение предвосхищает ожидания заказчика...

    1) Есть ли какие-то способы поправить дело без написания собственного диалога?
  • Программирование :: .NET технология от и до :: ASP.NET
  • привет.
    JQueryDatePicker -ом у меня не большие проблемы. Я с его помощью указываю дату
    и по этому дате идет селект все работает нормально только потом у JQueryDatePicker -а исчезает значок календарь.
    Как можно решить эту проблему? Спасибо за ранее за ответы.
  • Программирование :: C/C++
  • Не нашел раздела в C++ о программировании звука (о программировании звука нашел только в дельфи), решил сообщение сделать здесь. Есть VS 2010, скачал VST SDK Steinberg. Хотел бы для начала решить в своем первом плагине простую задачу изменения амплитуды фрагмента загруженного аудиофайла с отражением изменений на графике. В качестве редактора возьму, наверное, audasity или какой нибудь другой. Может быть кто-нибудь поможет и объяснит, как сделать первый простой VST плагин:
    1. В какие директории VS2010 или проекта какие файлы SDK нужно записывать?
    2. Как создается и настраивается проект для VST
    3. Какие библиотеки подключаются и т.д.?
    Детальной информации по созданию VST плагина мне найти не удалось.
  • Бился тут какое-то время о стену, пытаясь разгадать тайну невидимого сплиттера. Раньше не слишком задумывался о том, как выглядит этот элемент - в интерфейсах обычно как-то само собой понятно, за что можно потащить, чтобы изменить пропорции содержимого в окне.

    А тут стал набрасывать простенький инструмент и споткнулся о то, что ставлю сплиттер, разделяя два виджета - а его не видно, только при нащупывании границы курсор меняется на соответствующий. В Windows, оказывается, это норма жизни.

    Виджеты всё равно буду потом делать фреймами, чтобы видна была их граница, но нашёл на просторах Сети рецепт, как побороть недостаточную интуитивность сплиттера и подсказать пользователю, что здесь можно потащить: надо применить к сплиттеру стиль, отличный от Windows-стилей. В некоторых стилях разделительная полоска сплиттера содержит графический элемент, указывающий, что здесь можно ухватиться (в Linux это доступно в стиле по умолчанию, в отличие от, -- и в Макоси, полагаю, тоже).
    Мне по душе пришёлся QPlastiqueStyle, есть ещё QCleanlooksStyle и другие стили - можно поэкспериментировать.

    Такие вот грабли - может, кому будет полезно.
  • Программирование :: C/C++ :: ANSI С/С++
  • Здравствуйте. Есть такой код:
    Код: (cpp)
     setlocale( LC_CTYPE, "rus" );
    //Забираем 18 строку из RichTextBox находящегося в CDialog
    int LineIndex;
    int LineLength;
    int y=18;
    char *GS;
    size_t found;
    string str;
    LineIndex=SendMessageA(dlgEdit,EM_LINEINDEX,(WPARAM)y,0);
    LineLength=SendMessageA(dlgEdit,EM_LINELENGTH,(WPARAM)LineIndex,0);
    GS=new char[LineLength];
    GS[LineCount]='\0';
    *(DWORD*) GS=LineLength;
    SendMessageA(dlgEdit,EM_GETLINE,(WPARAM)y,(LPARAM)GS);
    //Строка выглядит примерно так "           Тип опоры:                                            скользящая"
    //Надо найти слово в полученной строке.
    // Следующие 2 метода не работают, видимо, потому что строка и слово на кириллице.

    if(strncmp(GS,"скользящая", 10)==0)cout<<"Found"<<endl;
    else cout<<"Not found!!"<<endl;
                  str=string(GS);
    found=str.find("скользящая");
    if(found!=string::npos) cout<<"Find sk"<<endl;
    else cout<<"Not Found sk"<<endl;

    Есть идея разбить  строку через strtok
    Код: (cpp)
    char chFind[]="скользящая";
    char *chWord;
    chWord=strtok(GS," ");
    while(chWord!=NULL){
             int x=0;
             for(x;x=strlen(chFind)-1;x++){
                    if(chWord[x]==chFind[x]) continue;
                    else break;
                   
             }
             if(x==stelen(chFind)-1) break; // Нашли.
             chWord=strtok(NULL," ");
    }

    Но вопрос в том, что наверняка есть менее топорное решение. К тому же слов для сравнения будет больше 10 и, что мне для каждого вызывать такой ужас?
  • Программирование :: Программирование 1С
  • Всем привет!

    Не получается вывести таблицу в указанном месте документа Ворд. То есть хотелось бы чтобы таблица нарисовалась вместо определенного поля.

    Макет был создан через AcitveDocument.

    Вот кусок кода который нашел в интернете:
    Код:
     
       АктивныйДокумент = ПолучитьМакет("Макет");
       КомОбъект = АктивныйДокумент.Получить();
      
       КомОбъект.Application.Visible=1;
       КомОбъект.Variables.Item("Номер").Value=СокрЛП(НомерДоговора);
       КомОбъект.Variables.Item("ДатаДог").Value=Формат(ДатаДоговора,"ДЛФ=DD");

    --------------------------------------------------
    --------------------------------------------------

    // и тут таблица
       Word = КомОбъект.Application;
       Документ = Word.ActiveDocument();
       Переместиться вниз на 400 строк
       Word.Selection.MoveDown(,400);
     
       Документ.Paragraphs.Add();
       Rng = Word.Selection.Range;
       //Формируем заголовок:
       Rng.InsertAfter("№*Наименование*Артикул*Количество*Цена*Сумма"); 
       Rng.InsertParagraphAfter();
       Rng.InsertAfter(
       Строка("Поле1")+
        "*"+Строка("Поле2")+
    "*"+1+"*"+Строка("Поле3")+
    "*"+ Строка("Поле4")+
    "*"+Строка("Поле5")
    );
       Rng.InsertParagraphAfter();

       
       Rng.ConvertToTable("*");
       Документ.Tables(1).AutoFormat(1);
       
       КомОбъект.Fields.UpDate();


    Таблица формируется на 400-ой строке. Как можно сделать чтобы таблица выводилась вместо созданного DocVariable.

    Надеюсь вы меня поняли )

    Заранее спасибо!
  • Программирование :: Программирование 1С :: 1С 8.x
  • Есть функция общего модуля, которая вызывается из СКД (в вычисляемом поле). Хочу кэшировать результат, возвращаемый функцией. Как известно, общие модули Stateless, переменную не объявишь.

    Надо каким-то образом передать в функцию параметр, который бы "жил" в модуле отчёта. Как это сделать?
  • Может, подскажите, как в запросе получить остатки по счету на каждый день месяца. Т.е. надо получить: день - остаток, день - остаток и т.д., даже если не было движухи.
    Надеялась, что запрос ниже поможет, но он только выводит строки на момент движения

    Код:
    ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Субконто1,
    ХозрасчетныйОстаткиИОбороты.Субконто2,
    ХозрасчетныйОстаткиИОбороты.Валюта,
    ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаНачальныйОстатокКт КАК ВалютнаяСуммаНачальныйОстатокКт,
    ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаКонечныйОстатокКт КАК ВалютнаяСуммаКонечныйОстатокКт,
    ХозрасчетныйОстаткиИОбороты.Период КАК Период
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Месяц, ДвиженияИГраницыПериода, Счет = &СЧЕТ67_21, , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
    ИТОГИ
    СУММА(ВалютнаяСуммаНачальныйОстатокКт),
    СУММА(ВалютнаяСуммаКонечныйОстатокКт)
    ПО
    Период ПЕРИОДАМИ(ДЕНЬ, &ДатаНач, &ДатаКон)
  • Программирование :: Программирование 1С :: 1С 8.2: Управляемое приложение
  • Задачу поставили перед мной, не могли бы Вы помочь. Есть документ Чек с реквизитами Касса (Справочник.Ссылка.Касса) и реквизитом ОстатокНаКассе(число). Необходимо при создании нового документа и при выборе соответствующей кассы,чтоб значение реквизита ОстатокНаКассе заполнялся из предыдущего документа.

    Добавлено через 36 минут:
    Мой вопрос, видимо, без внимания останется
  • Операционные системы :: Windows
  • Собственно, начиная с Vista на попытку это сделать говорит LastError = 5 (Access denied.)

    Например, SendMessage(hwnd, WM_CLOSE, null, null). Меня интересует сообщение WM_COPYDATA.

    Это теперь в принципе запрещено, или же надо как-то права настроить? Если настроить, то как?
  • Операционные системы :: Встраиваемые системы :: Android
  • Приветствую!
    Как бы не выглядел заголовок темы печально - тем не менее ситуация имеет место быть.
    Итак есть Android приложение, в котором много всего делает C++ по JNI. Есть C++ поток, в котором может возникнуть исключение std::exception, как мне дать Jav'e знать о этом? Как лучше обработать такие ситуации?

    Я представляю себе это так: в Java-части сделать какой нибудь класс ExceptionHandler, с методом, например, DisplayExceptionInfo(String excInfo), он будет писать в лог, и вызывать его в catch моего потока, передавая инфо о эксепшене.

    Подскажите, в правильном ли я направлении думаю, и есть ли альтернативы?
    Спасибо!
  • Направления программирования :: Drivers
  • Добрый день! Пишу драйвер виртуального СОМ порта (тут немного о нём http://forum.shelek.ru/index.php/topic,28632.0.html). В стандартном СОМ порте обрабатываются события по маскам EV_BREAK, EV_CTS, EV_DSR, EV_ERR... В тестовой программе я работаю с портом асинхронно. Ниже пример чтения с маской EV_TXEMPTY (Из буфера передачи передан последний символ).

    Во время установки идёт пакет IOCTL_SERIAL_SET_WAIT_MASK и во время WaitCommEvent IOCTL_SERIAL_WAIT_ON_MASK. В моём драйвере эти пакеты не обрабатываются, а в стандартном всё честно.

    В своём драйвере нужно тоже реализовать работу с масками, но нужно знать как система реагирует, кто ей сообщает, что событие по маске сработало и поток будет продолжать работу?

    Код:
    byte[] buffer = new byte[1024];
                COMSTAT comstat; //структура текущего состояния порта, в данной программе используется для определения количества принятых в порт байтов
                uint btr, mask, signal, temp; //переменная temp используется в качестве заглушки
                int tempRead = 0;
                overlpdRead.hEvent = CreateEvent(IntPtr.Zero, true, true, null); //создать сигнальный объект-событие для асинхронных операций
                SetCommMask(handle, EV_TXEMPTY);                            //установить маску на срабатывание по событию приёма байта в порт
                while (true) //пока поток не будет прерван, выполняем цикл
                {
                    WaitCommEvent(handle, out mask, ref overlpdRead);                //ожидать события приёма байта (это и есть перекрываемая операция)
                    signal = WaitForSingleObject(overlpdRead.hEvent, Timeout.Infinite); //приостановить поток до прихода байта
                    if (signal == WAIT_OBJECT_0)         //если событие прихода байта произошло
                    {
                        if (GetOverlappedResult(handle, ref overlpdRead, out temp, true)) //проверяем, успешно ли завершилась перекрываемая операция WaitCommEvent
                            if ((mask & EV_TXEMPTY) != 0) //если произошло именно событие прихода байта
                            {
                                ClearCommError(handle, out temp, out comstat); //нужно заполнить структуру COMSTAT
                                btr = comstat.cbInQue;                          //и получить из неё количество принятых байтов
                                if (btr>0)                          //если действительно есть байты для чтения
                                {
                                    fixed (byte* p = buffer)
                                    {
                                        ReadFile(handle, p, (int)btr, ref tempRead, ref overlpdRead);
  • Народ,кто-ибудь может поделиться информацией о том,как происходит монтирование дисков в Windows,- от обнаружения устройства на шине до подгрузки disk.sys и PartMng.sys?
  • Гром, SlavaI : Предлагаю все вопросы по IM драйверу вести в этой теме. Новичкам удобнее искать будет, да и самим можно будет из темы оч. удобный FAQ сделать. А лучше, Гром, зафиксируй эту тему наверху, чтобы она вниз не сползала.
  • Учимся программировать :: Начинающим
  • Итак, кусок кода

    Код:
    TCHAR *num;
    num = new TCHAR[40];
    memset (num, 0, sizeof(num));
    num[0] = 48;
    for (int i = 0; i < 9; i++)
    {
    m_listbox.AddString (num);
    m_listbox.SetCurSel(Page1->m_data.GetCount() - 1);
    num[0]++;
    UpdateData (false);
    }

    На выходе выдаёт столбик девяток, игнорируя UpdateData. Что я делаю не так?

В избранное