1. C++ / Говнокод #4768

    +157

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    void CVC6_SampleCodeDlg::OnButtonSaveframe() 
    {
    	// TODO: Add your control notification handler code here
    	SYSTEMTIME lpSysTime;
    	GetLocalTime(&lpSysTime);
    
    	long Dims = SafeArrayGetDim(pvBuffer.parray);
    	if(Dims != 1)
    		return;
    
    	char *pbuf = (char*)malloc(m_FrameSize);
    	char *pfinal = pbuf;
    	for(long i=0;i<m_FrameSize;i++)
    	{
    		SafeArrayGetElement(pvBuffer.parray, &i, pfinal++);
    	}
    	
    	FILE* fSaveFile;
    	CString saveName;
    	if(m_vportsdk.GetGetStreamType() == 1)
    		saveName.Format(".//%d%d%d_%d%d%d.mpg4",lpSysTime.wYear, lpSysTime.wMonth, lpSysTime.wDay,
    			lpSysTime.wHour, lpSysTime.wMinute, lpSysTime.wSecond);
    	else if(m_vportsdk.GetGetStreamType() == 2)
    		saveName.Format(".//%d%d%d_%d%d%d.jpg",lpSysTime.wYear, lpSysTime.wMonth, lpSysTime.wDay,
    			lpSysTime.wHour, lpSysTime.wMinute, lpSysTime.wSecond);
    
    	if((fSaveFile = fopen((LPCTSTR)saveName,"wb"))!=NULL)
    	{
    		fwrite(pbuf, 1, m_FrameSize, fSaveFile);
    		fclose(fSaveFile);
    	}
    	SafeArrayUnaccessData(pvBuffer.parray);
    	delete pbuf;
    	pbuf = NULL;
    }

    VPort ActiveX SDK PLUS от Moxa
    часть 5. Хватит пока :)

    absolut, 27 Ноября 2010

    Комментарии (12)
  2. C++ / Говнокод #4767

    +154

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    void CVC6_SampleCodeDlg::OnButtonSetpreset() 
    {
    	// TODO: Add your control notification handler code here
    	CComboBox *pCombobox = (CComboBox *) GetDlgItem(IDC_COMBO_PRESETNAME);
    	CString strPresetName;
    	GetDlgItem(IDC_EDIT_PRESETNAME)->GetWindowText(strPresetName);
    	if(strPresetName != "")
    		m_vportsdk.SavePresetPosition(strPresetName, (pCombobox->GetCurSel()+1));
    	else{
    		GetDlgItem(IDC_COMBO_PRESETNAME)->GetWindowText(strPresetName);
    		m_vportsdk.SavePresetPosition(strPresetName, (pCombobox->GetCurSel()+1));
    	}
    }

    VPort ActiveX SDK PLUS от Moxa
    часть 4

    absolut, 27 Ноября 2010

    Комментарии (0)
  3. C++ / Говнокод #4766

    +155

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    void CVC6_SampleCodeDlg::OnCHECKForceGDI() 
    {
    	// TODO: Add your control notification handler code here
    	CButton *pBut = (CButton *) GetDlgItem(IDC_CHECK_ForceGDI);
    	m_vportsdk.SetForceGDI(pBut->GetCheck());	
    	if(pBut->GetCheck() == 0)
    		m_ForceGDI = false;
    	else if(pBut->GetCheck() == 1)
    		m_ForceGDI = true;
    }

    VPort ActiveX SDK PLUS от Moxa
    часть 3

    absolut, 27 Ноября 2010

    Комментарии (3)
  4. C++ / Говнокод #4765

    +156

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    void CVC6_SampleCodeDlg::Onbuttonstartrecord() 
    {
    	// TODO: Add your control notification handler code here
    	CString strFileName, strFileTime, strFileSize, strTemp;
    
    	GetDlgItem(IDC_EDIT_filepath)->GetWindowText(strFileName);
    	GetDlgItem(IDC_EDIT_filetime)->GetWindowText(strFileTime);
    	GetDlgItem(IDC_EDIT_filelength)->GetWindowText(strFileSize);
    	GetDlgItem(IDC_button_startrecord)->GetWindowText(strTemp);
    
    	m_vportsdk.SetRecordVideoPath(strFileName);
    	m_vportsdk.SetRecordMaxFileTimeLength(atoi(strFileTime));
    	m_vportsdk.SetRecordMaxFileSize(atoi(strFileSize));
    
    	CComboBox *pRecordType = (CComboBox *) GetDlgItem(IDC_COMBO_recordtype);
    	if(strTemp == "Start Record"){
    		if(pRecordType->GetCurSel() == 0)
    			m_vportsdk.StartRecording(0);
    		else
    			m_vportsdk.StartRecording(1);
    		GetDlgItem(IDC_button_startrecord)->SetWindowText("Stop Record");
    	}
    	else{
    		if(pRecordType->GetCurSel() == 0)
    			m_vportsdk.StopRecording(0);
    		else
    			m_vportsdk.StopRecording(1);
    		GetDlgItem(IDC_button_startrecord)->SetWindowText("Start Record");
    	}
    }

    VPort ActiveX SDK PLUS от Moxa
    часть 2

    absolut, 27 Ноября 2010

    Комментарии (3)
  5. C++ / Говнокод #4748

    +158

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    QTextEdit *qte = new QTextEdit();
                    qte->setHtml(doc->toHtml());
                    qte->selectAll();
                    qte->textCursor().mergeBlockFormat(format);
                    qte->setTextColor(this->getTextForecolor());
                    doc->setHtml(qte->toHtml());
                    delete qte;

    Задание цвета текста QTextDocument (doc) через анал.

    des-1008d, 25 Ноября 2010

    Комментарии (5)
  6. C++ / Говнокод #4729

    +174

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    // used to set or reset batch mode
    void SetIsBatch(bool bSet)
    {
        if(bSet)
        {
            if(m_Chart.GetIsBatched())
                return;
            else
            {
                m_Chart.SetIsBatched(TRUE);
            }
        }
        else
        {
           if(m_Chart.GetIsBatched())
           {
               m_Chart.SetIsBatched(FALSE);
           }
           else
               return;
        }
    }

    Shumway, 24 Ноября 2010

    Комментарии (21)
  7. C++ / Говнокод #4724

    +155

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    void XmlElementHandler::startElement(
                        const XMLCh* const uri,
                        const XMLCh* const localname,
                        const XMLCh* const qname,
                        const XERCES_CPP_NAMESPACE_QUALIFIER Attributes& attrs
                        )
    {
      static XmlContext *context = XmlContext::getInstance();
      static XmlParser *parser = XmlParser::getInstance();

    оптимизируем обращения к синглтонам. потому что одной невидимой глобальной переменной явно не достаточно. вот такое щасце в 30+ методах на реализации интерфейса к Xerces-C.

    Dummy00001, 23 Ноября 2010

    Комментарии (14)
  8. C++ / Говнокод #4723

    +179

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    if(
        (s.Find("/0")!=-1)||
        (s.Find("Log10(-")!=-1)||
        (s.Find("Log10(0")!=-1))//stupid user error
    {
    }

    Проверка, есть ли в формуле, введенной пользователем, деление на 0, логарифм от отрицательного числа или логарифм от нуля. Стиль и комментарии автора сохранены.

    Shumway, 23 Ноября 2010

    Комментарии (13)
  9. C++ / Говнокод #4722

    +165

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    //Set different text depending on how long on progressbar progress is
    if (dwStepPercent < 25)
        byText=0;
    else if (dwStepPercent < 50)
        byText=1;
    else if (dwStepPercent < 75)
        byText=2;
    else
        byText=3;

    Отличный способ не делить.

    Shumway, 23 Ноября 2010

    Комментарии (2)
  10. C++ / Говнокод #4719

    +155

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    /* use <first> of a [std::pair] */
    template<typename _type_, typename _pred_>
    struct use_first {
    	use_first(_type_ val, _pred_ pred) { value = val; predicate = pred; }
    	
    	template<typename _first_type_, typename _second_type_>
    	bool operator()(const std::pair<_first_type_, _second_type_> &pr)
    	{
    		return predicate(pr.first, value);
    	}
    
    private:
    	_type_ value;
    	_pred_ predicate;
    };
    
    /* factory function: use it to init a [use_first] object */
    template<typename _type_, typename _pred_>
    use_first<_type_, _pred_> make_use_first(_type_ value, _pred_ pred)
    {
    	return use_first<_type_, _pred_>(value, pred);
    }
    
    /* usage of [use_first] */
    std::vector< std::pair<int, int> > lol;
    std::vector< std::pair<int, int> >::iterator = std::find_if(lol.begin(), lol.end(), make_use_first(0, std::equal_to()));

    собственно была проблема в том, что в контейнерах(например std::vector, std::deque) хранятся пары(std::pair) и зачастую нужно организовать какие-либо действия либо по первому(first), либо по второму(second) члену из std::pair.
    приведен код только для first, ибо код для second немного похож

    в итоге получилось сие поделие, а еще я люблю обмазаться несвежим....

    Govnoeb, 23 Ноября 2010

    Комментарии (3)