Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Cambiar tipo de Serie para mostrar en un TChart

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Cambiar tipo de Serie para mostrar en un TChart Responder citando

Hola. Tengo un TChart que muestra una serie de datos guardados en un TBarSeries (Series1). Para cambiar el tipo de la serie, en http://www.steema.com/support/faq/NewVCL/FAQ_VCL_SERIES.htm#Q5 me proponen usar
Código:
ChangeSeriesType( Series1, __classid(TBarSeries) );
siendo TBarSeries el tipo en el que quiero convertir mi serie (podría ser TPieSeries, THorizBarSeries, TLineSeries, ...).

No hay ningún error al compilar y es muy rápido redibujando el TChart con el nuevo tipo de serie, sin embargo al compilar me produce el Warning
Cita:
[C++ Warning] Principal.cpp(202): W8030 Temporary used for parameter 'ASeries' in call to '_fastcall ChangeSeriesType(TChartSeries * &,TMetaClass *)'
y no he encontrado el modo de quitármelo.

¿Alguna sugerencia?

Gracias
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Código:
ChangeSeriesType(static_cast<TChartSeries*>(Series1),
                 __classid(TBarSeries));

o bien:
Código:
TChartSeries* serie = Series1;
ChangeSeriesType(serie, __classid(TBarSeries));
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias _Leo, más rápido casi que la ayuda del Builder !!!

Para elegir convenientemente la respuesta ¿no consume más recursos la segunda solución que aportas? No vuelvo a usar la nueva serie en la función en que llamo a ChangeSeriesType().

Saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Si, la segunda al compilarla ocupa 7 bytes mas:
Código:
// 26 bytes
mov  eax, [ebp-0x04]
mov  edx, [eax+0x000002fc]
mov  [ebp-0x0c], edx
lea  eax, [ebp-0x0c]
mov  edx, [Series::TBarSeries::]
call Chart::ChangeSeriesType(Teengine::TChartSeries*&, const System::TMetaClass*)

Y la primera:
Código:
// 19 bytes
mov  eax, [ebp-0x04]
add  eax, [Series::TBarSeries::]
call Chart::ChangeSeriesType(Teengine::TChartSeries*&, const System::TMetaClass*)
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Por añadir un dato mas, la segunda es lo mismo que hace el compilador al dar el aviso, solo que al hacerlo nosotros mismos ya no sale el aviso.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Cuánto me queda por aprender ... (seguro que saber ensamblador me haría mejorar mis programas pero no tengo tiempo, de momento).

En mi pregunta hablaba más bien de recursos de memoria del PC (mi aplicación de momento tiene dos hilos de ejecución y bastantes componentes, además de ir guardando en memoria unos cuantos mapas y vectores (o listas, aún no lo tengo probado ni decidido) que podrían contener centenares (¿miles?) de datos. También usa muchos recursos de CPU pues se trata de algoritmos que recorren exhaustivamente los mapas buscando datos, añadiendo nuevos y actualizándo los existentes).

No sé si al guardar una copia de Series1 se toma más memoria RAM o realmente el proceso ya toma esa "zona extra de memoria" para hacer copias temporales al usar static_cast<TChartSeries*>(Series1). ¿Cómo puedo averiguar el uso de memoria de mi programa en ejecución sin preguntarte cada vez que tenga dudas existenciales de este tipo.

Gracias de nuevo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

No me complico mucho en esto, uso la lista de procesos del administrador de tareas de Windows, añadiendo o quitando las columnas que necesite en cada momento según el tipo de recursos que quiero controlar.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Lo dicho, queda mucho que aprender ... tampoco conocía las opciones del administrador de tareas ni se me ocurría que me podía dar tanta información.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.