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) RSS

    • Лень читать...
      Хотя даже не смотря на то, что лень читать, сразу в глаза бросается моветон: использование delete вместе c malloc (вместо delete/new или free/malloc)
      Ответить
      • А что, можно использовать delete с malloc() без бубнов?
        Ответить
        • нельзя -> http://www.gotw.ca/gotw/009.htm
          Ответить
        • Лично я никогда не пробывал, однако исходя из общих соображений, мне кажется, что как повезёт. Если звёзды сложатся так, что это будет работать без проблем, значит повезло, если нет - не повезло. Поэтому не смотря на то, что допустим это работает, я и назвал использование такой пары моветоном.

          P.S.: Я не плюсойд, и недостаточно компетентен, чтобы с полной уверенностью сказать, как именно поведёт себя программа в столь редком (и вряд ли документированном) случае...
          Ответить
          • Случай документирован: the behavior is undefined
            Ответить
      • Лень читать, но при этом не лень писать? :-)
        Еще например 21 и 24 строки отличаются только расширениями.
        Ответить
        • это называется копипаста. копипаста - баян
          Ответить
        • На написание поста я потратил гораздо меньше времени и умственных усилий, чем вникать в этот код, и в тот же ниже от того же автора.
          Ответить
          • Тут, по большому счету, всё на поверхности. Однако "вникать" и "читать" это всё же не одно и то же.
            Ответить
    • winAPI такое winAPI
      Ответить
    • Имя метода GetGetStreamType тоже понравилось.
      Ответить

    Добавить комментарий