- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 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;
}
xaionaro 27.11.2010 17:24 # +1
Хотя даже не смотря на то, что лень читать, сразу в глаза бросается моветон: использование delete вместе c malloc (вместо delete/new или free/malloc)
andremacareno 27.11.2010 18:02 # +2
Govnoeb 27.11.2010 20:03 # 0
xaionaro 28.11.2010 12:30 # 0
P.S.: Я не плюсойд, и недостаточно компетентен, чтобы с полной уверенностью сказать, как именно поведёт себя программа в столь редком (и вряд ли документированном) случае...
rat4 28.11.2010 14:16 # +1
absolut 27.11.2010 19:10 # 0
Еще например 21 и 24 строки отличаются только расширениями.
Govnoeb 27.11.2010 20:05 # 0
absolut 28.11.2010 11:36 # 0
xaionaro 28.11.2010 12:22 # 0
absolut 28.11.2010 14:23 # 0
Sauron 28.11.2010 23:33 # 0
gegMOPO4 30.11.2010 17:32 # 0