parent nodes: CPlusPlusApuntesC | WikiSIGC
Cambiar punteros por variables locales
Motivo, no usar el heap cuando no es necesario
Author: César TM
Date: Marzo/2009
Sí una variable puntero se crea (new) y se destruye (delete) en la misma función, puede ser sustituída por una variable local que no use la memoria heap sino la stack
Diálogos de petición de información
CPideFechas * diaf = new CPideFechas( TRUE, FALSE, (CWnd*)DameMainFrame() ); //VenPadre
CString cad = _T( "Fecha de liquidación" );
diaf->m_gen = DameGen();
diaf->cadena = cad;
diaf->tipocondicion = 1;
if( diaf->DoModal() != IDOK )
{
delete diaf;
return;
}
COleDateTime fecha1 = diaf->infecha1;
COleDateTime fecha2 = diaf->infecha2;
delete diaf;
Se puede sustituir porCPideFechas diaf( TRUE, FALSE, (CWnd*)DameMainFrame() ); //VenPadre
diaf.m_gen = DameGen();
diaf.cadena = _T( "Fecha de liquidación" );
diaf.tipocondicion = 1;
if( diaf.DoModal() != IDOK )
{
return;
}
COleDateTime fecha1 = diaf.infecha1;
COleDateTime fecha2 = diaf.infecha2;
Crear un RecordSet sin usar punteros
Ver artículo en CInDaoRecordset
NO CAMBIAR PARAM, HILO, INWLIS, ETC
Los cambios en informes de SIGC fallan así que dejarlo como punteros
ORIGINAL: Funcionavoid CConsultaFactuleg::OnImprimir()
{
if(!UpdateData(TRUE))
return;
CHiloInformes * hilo = (CHiloInformes*)AfxBeginThread(RUNTIME_CLASS(CHiloInformes));
hilo->m_wpadre = this;
hilo->m_gen = DameGen();
DameApp()->InsertaHilo(hilo);
CParamInformes * par = new CParamInformes;
par->m_id = 0;
par->m_tipo_informe = 6; //listados de facturación
par->m_clase_informe = 6002; //listado de arqueo de legalizaciones
par->m_sql = _T( "" );
par->m_where.Format( _T("%ld,%s,%s,"), m_id_serie, m_fecha1.Format(_T("%d/%m/%Y")), m_fecha2.Format(_T("%d/%m/%Y")));
par->m_texto_condiciones.Format(_T("Fecha factura entre el %s y el %s"), m_fecha1.Format(_T("%d/%m/%Y")), m_fecha2.Format(_T("%d/%m/%Y")));
hilo->PostThreadMessage(WM_INICIA_HILO, 1000L, (LPARAM)par);
}
MODIFICADO: Cagada. Pete gordo de Microsoft colegio.exe, la memoria no se puede read.void CConsultaFactuleg::OnImprimir()
{
if(!UpdateData(TRUE))
return;
CHiloInformes * hilo = (CHiloInformes*)AfxBeginThread(RUNTIME_CLASS(CHiloInformes));
hilo->m_wpadre = this;
hilo->m_gen = DameGen();
DameApp()->InsertaHilo(hilo);
CParamInformes par;
par.m_id = 0;
par.m_tipo_informe = 6; //listados de facturación
par.m_clase_informe = 6002; //listado de arqueo de legalizaciones
par.m_sql = _T( "" );
par.m_where.Format( _T("%ld,%s,%s,"), m_id_serie, m_fecha1.Format(_T("%d/%m/%Y")), m_fecha2.Format(_T("%d/%m/%Y")));
par.m_texto_condiciones.Format(_T("Fecha factura entre el %s y el %s"), m_fecha1.Format(_T("%d/%m/%Y")), m_fecha2.Format(_T("%d/%m/%Y")));
hilo->PostThreadMessage(WM_INICIA_HILO, 1000L, (LPARAM)&par);
}
_________________________________________________________________________________________________________
CPlusPlusApuntesC, WikiSIGC
[camelCaseWordsEnabled: false]