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 por
CPideFechas 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: Funciona
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  = 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]