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

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


Клуб профессиональных программистов "Весельчак У"
Информационная рассылка сайта и форума.  Выпуск No75 (2009-08-17).

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

  • Программирование :: .NET технология от и до
  • При частом изменении текста в subitemах контрола ListView, работающего в режиме report, наблюдается мерцание контрола, подобное тому, которое можно наблюдать, когда по телевизору показывают телевизор. То есть, примерно два раза в минуту по ListView снизу вверх пробегает волна мерцания, причём она не зависит от частоты обновления текста.

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

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

    Существуют ли какие-нибудь практические подходы к решению данного вопроса?
    (когда я лет 10 назад делал это на MFC, такой проблемы вообще не возникало..  :dontknow:)


    Мышь обрабатываю в добавленном к основному (не перегруженном) обработчике,
    и в нём же вызываю функцию изменения текста в subitemах, которая делает это следующим образом:

    Код:
                if(m_Graph.m_Lines!=null)
                {
                    if (m_Graph.m_Lines[0].m_LVI != null)
                        m_Graph.m_Lines[0].m_LVI.SubItems[1].Text = m_Srz[si].Pgr_Str();

                    if (m_Graph.m_Lines[1].m_LVI != null)
                        m_Graph.m_Lines[1].m_LVI.SubItems[1].Text = m_Srz[si].Ptm_Str();

                    if (m_Graph.m_Lines[2].m_LVI != null)
                        m_Graph.m_Lines[2].m_LVI.SubItems[1].Text = m_Srz[si].Ptc_Str();

                    if (m_Graph.m_Lines[3].m_LVI != null)
                        m_Graph.m_Lines[3].m_LVI.SubItems[1].Text = m_Srz[si].Pur_Str();

                   // итд
                }



  • система довольно утрированная, поскольку это программа, написанная по заказу для курсового.

    Собственно, просьба - потыкаться и потестировать программу на наличие глюков, поскольку среда разработки C# для меня совсем новая. Экзешник тут, а исходники прикреплю сегодня или завтра (пишу комментарии), тогда потом это всё можно будет переместить в авторское ПО

    Про работу интерфейса намеренно ничего не говорю - так как это тоже тест его - на понятность. (На удобство интерфейса же не претендую ))) Самому многое не нравится)
  • Программирование :: С/С++
  • Я написал основную часть своей программы в Microsoft Visual Studio 2008
    на С++ и поместил её в DLL библиотеку, затем через сторонюю программу через встроенный в неё скриптовый интерфейс пытаюсь вызвать свою длл программу, но возникает либо внутренняя ошибка загрузки или доступа к функциям, либо вылет exe-шника. При этом через тот же интерфейс спокойно загружаются системные длл файлы, и из них можно пользоватся функциями. Ради эксперимента попросил друга(он на Delphi7 программирует) поэспериментировать с длл, написаными на делфи
    с ними программа работает без проблем. Как я понял, в С++ проблема с экспортными опциями  в делфи их по-моему около 5, разница в том, как грузятся параметры и кто опустошает стек в С++ знаю всего один возможный параметр extern "C"\extern"C++" если кто знает, как еще можно настроить экспортные функции, помогите, пожалуйста :help:
  • Программирование :: С/С++ :: WinAPI & Visual C++
  • Пытаюсь получить имя файла, но что-то не выходит. Примеры MSDN не работают
    Код:
    #include <windows.h>



    OPENFILENAME ofn;
    char szFile[260];
    HWND hwnd;
    HANDLE hf;
    wchar_t cFilter[] = L"*.*\0\0";

    inline void OpenWindow()
    {
    ZeroMemory(&ofn, sizeof(ofn));
    ofn.lStructSize = sizeof(ofn);
    ofn.hwndOwner = hwnd;
    ofn.lpstrFile = szFile;
    ofn.nMaxFile = sizeof(szFile);
    ofn.lpstrFilter = cFilter;
    ofn.nFilterIndex = 2;
    ofn.lpstrFileTitle = NULL;
    ofn.nMaxFileTitle = 0;
    ofn.lpstrInitialDir = NULL;
    ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
    return;
    }




    int main()
    {
        OpenWindow();
    if (GetOpenFileName(&ofn)==TRUE)
    hf = CreateFile(ofn.lpstrFile, GENERIC_READ, 0, (LPSECURITY_ATTRIBUTES) NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,(HANDLE) NULL);
    //тест
    ShellExecute(NULL, NULL, &ofn.lpstrFile, NULL, NULL, SW_SHOWMAXIMIZED);
        return 0;


    Да и ещё с преобразованием типов... Хотя в MSDN ofn.lpstrFile объявляется просто как char массив
    Код:
    1>main.cpp(16) : error C2440: =: невозможно преобразовать 'char [260]' в 'LPWSTR'
    1>main.cpp(35) : error C2664: ShellExecuteW: невозможно преобразовать параметр 3 из 'LPWSTR *' в 'LPCWSTR'
  • 1. Как получать сообщения другого окна?
    Приложение запускает ИЕ через ShellExecuteA(hWnd,"open",PATH,NULL,NULL,SW_MAXIMIZE), а потом ждет нажатия кнопки мыши, кое-где написано что первый аргумент и указывает на родительское окно, которое должно получать сообщения, однако при закрытии hWnd, IE продолжает работать, ну и конечно сообщений никаких не получает...
    Это ведь можно как-то делать без хуков?

    2.Как заставить окно IE перейти по адресу? Может быть, есть какое-нибудь сообщение(SendMessage)? Или через SetWindowCaption для адресной строки?


    3. Можете предложить несколько идей по сохранению картинки с сайта, о которой я знаю лишь ее координаты?
    Эмулировать копирование в буффер обмена, а потом сохранять? Или есть пути проще?

    Заранее благодарен.

  • Добрый вечер! Возник такой вопрос: как с помощью функции BASS_ChannelSetPosition() библиотеки bass.dll произвести прокрутку трека... Я делаю так:
    Код:
    switch(LOWORD(wparam))
    {
    case TB_PAGEUP:
    pos_song --;
    break;

    case TB_PAGEDOWN:
    pos_song ++;
    break;

    case TB_THUMBPOSITION:
    case TB_THUMBTRACK:
    pos_song  = HIWORD(wparam);
    break;
    }

    BASS_ChannelSetPosition(stream, pos_song, BASS_POS_BYTE);
    но так не получается...после протяжки ползунка трекбара трек начинает играть заново...Заранее благодарен:yes:
          
  • Помогите решить проблему.

    Использую MFC

    Сделал свой класc:
    Код:
    class CComboBoxMy : public CComboBox
    {
    public:
    UINT number;
    };

    На форме имею 4е ComboBox от моего класса CComboBoxMy .

    В OnInitDialog() пронумеровал все четыре ComboBox

    В MESSAGE MAP добавил:
    Код:
     ON_CBN_SELCHANGE(IDC_D1,
    OnCbnSelchangeD1)
    ON_CBN_SELCHANGE(IDC_D2, OnCbnSelchangeD1)
    ON_CBN_SELCHANGE(IDC_D3, OnCbnSelchangeD1)
    ON_CBN_SELCHANGE(IDC_D4, OnCbnSelchangeD1)

    И Создал функцию по событию OnChange для ComboBox
    Код:
    void CdpcDlg::OnCbnSelchangeD1()
    {

    }

    Теперь какой-бы ComboBox я ни использовал-бы вызовется одна функция OnCbnSelchangeD1()

    Теперь, собственно, сама задача.
    Как сделать так, чтобы в функции я получил номер используемого ComboBox ?

    Я сначало написал так:
    Код:
    void CdpcDlg::OnCbnSelchangeD1()
    {
    CComboBoxMy* h_wnd;
            int j;

    h_wnd =  (CComboBoxMy*) ::GetFocus();
    j = h_wnd->number;
    }

    Но так не работает :(
    Подскажите как получить в обработчике события number моего ComboBox который вызвал событие.
  • Программирование :: Delphi
  • Здравствуйте. Нужно в панели статусбара изменить цвет шрифта. Не могу найти в настройках ничего похожего. Или Дельфи-7 глючит?  Или голову напекло? Подскажите, плз. 
  • Добрый вечер!
    Наверное, многие с этим сталкивались: при написании кода я прописываю положение объекта определенным образом. При разворачивании окна происходит естественное перемещение объектов влево-вверх. Как этого избежать? Помогите, пожалуйста. :)
  • Сам я делфи не знаю, но попросили узнать решение проблемы.

    Дано:
    шаблон .rtf где находится таблица примерно следующего вида:
    %str% | %name%
    %str% | %name%
    ...

    (упрощено, но суть ясна, думаю).

    Затем в самой делфе-программе есть цикл, который перебирает все строки из БД, кот.нужно вставить в таблицу.
    Но если использовать функцию replacestring (вроде такая - замена по регуляркам), то в таблице в .rtf получается одна повторяющася строка.

    Может, как-то можно сделать, чтобы регулярка меняла совпадение только 1 раз, а потом был следующий проход цикла и регулярка меняла уже 2 строку.
    Или как-то по-другому решить задачу...

    Прошу прощения за пост вопроса, не зная матчасти. Спасибо заранее.
  • Программирование :: Программирование 1С :: 1С 7.x
  • Задача следующая:
    есть отчет "Обороты счета",там задаем период,номер счета(51)...выводится "обороты по счету 51",нажимаем на расшифровку ячейки 51 го счета,выводится "журнал проводок по 51 счету"...опять же нажимаем на расшифровку,получаем "операция(Выписка)"
    вот отсюда мне нужно выудить вид договора, контрагента, сумму, дату и тд...
    Какие нужно использовать функции\процедуры,и как узнать идентификаторы ячеек этой операции?
  • Программа 1С бюджетная конфигурация
    Проблема в том, что в справочнике договоров есть совпадения по номеру договоров, из-за этого не получается нормально выгрузить в документ
    Код программы
    Если     СпрКонтрагенты.НайтиПоКоду(НомерДоговора) = 1 Тогда   
       Док.Контрагент = СпрКонтрагенты.ТекущийЭлемент();
                
    Если СпрДоговоры.НайтиПоНаименованию(Номердоговора)= 1 Тогда
       Док.НомерДого = СпрДоговоры.ТекущийЭлемент();
       Док.ОснованиеРасчетов = СпрДоговоры.ТекущийЭлемент();
    Если    Док.ОснованиеРасчетов.ПринадлежитГруппе("002")=1 Тогда
            Док.ОснованиеРасчетов = СпрДоговоры.ТекущийЭлемент();
    Иначе
    Если СпрДоговоры.НайтиПоКоду(НомерДоговора) = 1 Тогда
       Док.ОснованиеРасчетов = СпрДоговоры.ТекущийЭлемент();
    КонецЕсли;
    КонецЕсли;КонецЕсли;   
     
  • Подскажите, пожалуйста, начинающему програмисту 1с 7.7!
    Не могу запустить модуль в отладчике. Приходится каждый раз загружать 1С Предприятие.
    Почему-то в отладчике недоступны кнопки выполнения (ни на панели, ни так - F5, F7).
    Из-за чего это может быть? Может какой-то компонент не установлен?
  • Программирование :: Программирование 1С :: 1С 8.x
  • Есть набор формул, по которым должны вычисляться значения в Документе 1С. Каким образом реализовать алгоритм вычисления?
    например, если есть формула W=(Q1-Q2)*100/Q1-Q где Q - вес пустой емкости, Q1 - вес с навеской до высушивания емкости, Q2 - вес с навеской после высушивания емкости.
    как сделать что бы значения с "Поле ввода" подставлялись в формулу?
  • Направления программирования :: Drivers
  • Доброго времени суток всем драйверописателям.

    У меня недавно возникла проблема с Passthru работающим на машине с установленым 100Mbit'ой сетевухой (Realtek RTL8139 Family PCI Fast Ethernet NIC), причем исключительно на входящий трафик. Описываю ситуацию: заглушил все, что мог и получил...

    Пакет приходит и попадает в PtReceive, где я тут же вызываю NdisMEthIndicateReceive.
    Далее Вызывается MPTransferData, где опять же вызывается NdisTransferData.
    Потом происходит возврат в PtReceive и, наконец, все комплитится (PtReceiveComplete с функцией NdisMEthIndicateReceiveComplete).
    В отладчике посмотрел, что в основном работа тормозится при возврате в PtReceive из MPTransferData.
    С другими сетевухами не проверял, но есть подозрение, что подобное случится на всех 100Mbit'ых.

    На 1Gbit'ых работает все нормально, но там пакеты проходят через функцию PtReceivePacket, где, насколько я понял, обрабатываются сразу цепочки пакетов.

    В связи с этим у меня пара вопросов:
    1. Как можно ли ускорить работу в PtReceive?
    2. Можно ли направить пакеты через PtReceivePacket (можно ли сформировать цепочки из отдельных пакетов)?

    З.Ы. Очень нужно... :confused:
  • Практические разделы :: Базы данных
  • как устанавливать созданные для таблицы триггеры для конкретного поля этой таблицы? Вот sql-код
    самой таблицы Laboratory:

    -- Table: "Laboratory"

    -- DROP TABLE "Laboratory";

    CREATE TABLE "Laboratory"
    (
      "Num" integer,
      "Name_supervisor" text,
      "Name_lab" text,
      "Code_lab" integer NOT NULL,
      CONSTRAINT "Laboratory_pkey" PRIMARY KEY ("Code_lab")
    )
    WITH (OIDS=FALSE);
    ALTER TABLE "Laboratory" OWNER TO postgres;

    -- Trigger: id_lab on "Laboratory"

    -- DROP TRIGGER id_lab ON "Laboratory";

    CREATE TRIGGER id_lab
      BEFORE INSERT
      ON "Laboratory"
      FOR EACH ROW
      EXECUTE PROCEDURE autoinc();
     
    ##==
    а вот триггера, созданного для таблицы Laboratory:
    -- Trigger: id_lab on "Laboratory"

    -- DROP TRIGGER id_lab ON "Laboratory";

    CREATE TRIGGER id_lab
      BEFORE INSERT
      ON "Laboratory"
      FOR EACH ROW
      EXECUTE PROCEDURE autoinc();

    Как установить для поля Code_lab автоинкремент - триггер id_lab?  :confused:
  • Что-то не понимаю, в чем моя ошибка :fie: . Имеются 2 таблички Сотрудник и Комната, вот sql-код:
    -- Table: "Collaborator"

    -- DROP TABLE "Collaborator";

    CREATE TABLE "Collaborator"
    (
      "Name" text,
      office_phone text,
      inside_phone text,
      home_phone text,
      business text,
      "level" text,
      "Code_col" integer NOT NULL,
      CONSTRAINT "Code_col" PRIMARY KEY ("Code_col"),
      CONSTRAINT "Code_room" FOREIGN KEY ("Code_room")
    )
    WITH (OIDS=FALSE);
    ALTER TABLE "Collaborator" OWNER TO postgres;
    ////////////////////////////////////////
    -- Table: "Room"

    -- DROP TABLE "Room";

    CREATE TABLE "Room"
    (
      "Number" integer,
      "Code_room" integer NOT NULL,
      CONSTRAINT "Code_room" PRIMARY KEY ("Code_room")
    )
    WITH (OIDS=FALSE);
    ALTER TABLE "Room" OWNER TO postgres;
    ///////////////////
    Т.е. таблицы связываются через внешний ключ Code_room, но почему-то скрипт ругается на ошибку в 16 строке таблицы Collabarator (Сотрудник).  :spy:
  • Практические разделы :: Железо
  • Купил ноут Acer 5738z, смотрю, а на диске на котором установлена Windows Vista (лицензионная), занято 42 Гб памяти (винт на 250 - больше о нем ничего не известно), выделил все папки и файлы на диске (включая скрытые), "взвесил", вышло 16 гигабайт. Проверил акронисом на поврежденные сектора кластеры и ошибки, таковых акронис не обнаружил. Скажите, уважаемые форумчане, что это за ерунда такая и как с этим бороться?
  • Здравствуйте всем!


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

    И кстати, раньше все работало без проблем.


    Звуковая карта RealteK HD Audio. В интернете все что было написано все испробывал, но не помогло. И поэтому решил обратиться к вам, обычно я всегда нахожу ответы в вашем форуме.



    Заранее спасибо!   
  • Помогите, пожалуйста, разобраться со следующей проблемой!!!
     Суть ее вот в чем:
    Винда не видит флешки как доп. съемные устройства, съемные диски.
    Т.е., вставляю Любую флешку в USB-порт, будь то накопитель или кард-ридер от фотоаппарата. Система сообщает, что найдено новое устр. (сообщ. в правом нижнем углу соотв.). И на этом все! Ежели нажать на это сообщение, или значок в прав. нижнем углу, то запускается мастер уст. нов. оборуд-я, который при этом, ничего не устанавливает, не находит, а просит вставить уст. диск с виндой.
    Соответственно, никакие доп. диски съемные не появляются в проводнике. Порты рабочие, т.к. мышь, клава, принтер с них работают. Винда ХР с СП2.
    Думал, что нужны какие-то дрова к ним, но, как оказалось, нужны только для 98 винды.

    Подскажите, в чем может быть проблема и как это исправить?
  • Учимся программировать :: Начинающим
  • Существует 2 класса, один из них определяет параметры объекта, второй заполняет эти параметры, количество объектов динамическое, сами объекты должны быть доступны глобально. Как объявить массив классов параметров объекта так, чтобы они были доступны глобально???
    Вот то, что есть
    Код:
    class cCharacter{
      public:
            int cType;
    int cXScrPos;
    int cYScrPos;
    int cXPos;  
    int cYPos;    
    int cIDonMap;
    int cID;
            cCharacter(void);
            cCharacter(void* lpObjData);
    };
    class cCharacters{
    public:
            struct sChar{
           void* lplpChar;
           int Count;
            } Char;
            struct slpChar{
           void* lpFirstObject;
           void* lpLastObject;
            } lpChar;
            cCharacters(void);
            int GetCharacters(void);
    };
  • Сейчас у меня стоит VC 2005, уже давненько заметил весьма странную проблему, связанную с работой debugger-а с типом double. Простой пример: есть число 846.346, я хочу снять с него целую часть. Отнимаю от него 846, теоретически у меня должен получиться результат 0,346. Вместо этого получается 34600000000643. Короче, первая же мат операция портит исходное число. Поначалу мне показалось это странноватым, но я списал это на некачественный взлом или, допустим, плохую совместимость с АМД, но, в принципе, меня это не очень трогало.
    При отладке мне главное: проверить логику, а неправильность работы калькулятора исправлял, если надо было, вручную или дописывал заглушку, но сейчас началась какая-то совсем беда: у меня уже и релизы начали работать так же. Если кто знает, в чем тут дело, подскажите, пожалуйста, насчет процессора или самой программы. Сомнительно, чтобы дело было в них с момента, когда впервые заметил, я сменил несколько компиляторов (устанавливал с других дисков версии теже 6,0 и 2005) и полностью сменил железо на компе процессор АМД, но поколение уже другое.
    Вот я и думаю, может это какая-то хитрая настройка компилятора по умолчанию неправильно установлена?
  • Привет. Чего-то я запутался совсем.
    Не всё понятно про конструктор копии, объясните пожалуйста.

    Вот есть некий класс
    Код:
    class one
    {
       int *p;
    public:
       one(int i) {p=new int(i);} /*обычный конструктор, выделяет память для члена p и инициализирует её значением i*/
       ~one() {delete p;}
       one(const one &obj) //конструктор копии
       {
           p=new int;  /*тут p - это чей член? this->p или p объекта копии, который создаётся внутри этого конструктора копии? Если первое, то не ясно, получается раннее выделенная память (обычным конструктором) уже остаётся без указателся, так как этот указатель уже указывает на другую область, получается утечка? Значит, надо было перед этой инструкцией сначало освободить память, на которую указывает p: delete p;?
    */
           *p=*obj.p;
       }
    };
  • Клубное :: Общение :: Литературный форум
  • Друзья дали с напутствием "получишь удовольствие" ;-) Подтверждаю - таки получила ;-)
    При этом уже успела пообщаться с несколькими знакомыми, которым книга совсем не понравилась - слишком много мистики.
    Мистика действительно присутствует, но как мне показалось, она там уместна и не зашкаливает.
    Но основное, что мне понравилось - прекрасный русский (давно уже не читала ничего современного в таком стиле) и сама идея.
  • Пусть будет тема, где можно предложить книгу для архива и обсудить вопросы добавления, обработки источника и т.п.

    Флуд нежелателен!



    Я тут для себя переформатировал "Ярослав Гашек. Похождения бравого солдата Швейка." в 4-х частях. Исходник взял с lib.ru, обработал, перевел в HTML, наложил стили. Плюс к этому еще с конвертировал в PDF для чтения.
    Т.е. в наличии HTML и PDF версии. Хотелось бы поделиться плодами своего труда. Надо кому-нибудь?

    HTML в utf-8 весит 2.34 МБ, а PDF - 4.32 МБ. Все вместе в архиве весит 4.81 МБ.

    Не сделать ли нам в архиве раздел художественных книг?

А теперь прощаемся с Вами до следующего выпуска.


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


В избранное