Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-12-2010
vivamotos vivamotos is offline
Miembro
 
Registrado: ago 2006
Posts: 150
Poder: 18
vivamotos Va por buen camino
Crear series dinamicamente

Buenos días,

Tengo problemas al crear series dinamicamente mirad mi codigo

Código:
//grafico es el TChart
TFastLineSeries *SerieLineas;
grafico->SeriesList->Clear();
for(indice=1;indice<x;indice++)
{
           //creo las series dependiendo de x
           SerieLineas=new TFastLineSeries(grafico);
           SerieLineas->ParentChart=grafico;
           SerieLineas->LinePen->Width=3;
           SerieLineas->Marks->Visible=true;
           SerieLineas->Marks->FontSeriesColor=true;
           SerieLineas->Marks->Font->Size=7;
           SerieLineas->Marks->Transparent=true;
           SerieLineas->Marks->Style=smsValue;
           SerieLineas->Color=taula_colors[indice];
           SerieLineas->Title=aux;

           grafico->Series[indice]->Add(tal...)
}
Hasta aquí todo correcto, me genera el gráfico de maravilla pero siempre al cerrar el programa me da un "access violation"!.

Si no genero el grafico se cierra bien, pero a la que lo genero y cierro el programa patapam (ESTO a veces)

Quisiera saber si lo estoy haciendo bien.

Grácias.
Responder Con Cita
  #2  
Antiguo 24-12-2010
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
hola,
las liberas en algun lado?
Responder Con Cita
  #3  
Antiguo 24-12-2010
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Poder: 21
Toni Va por buen camino
Por el fracmento de codigo que nos enseñas veo que gestionas mal los punteros, ya que estas realizando varias (x) asignaciones a un mismo puntero dentro del bucle.

Es decir si x=3, estas haciendo 3 asignaciones de memoria al puntero SeriesList con el problema que no podras liberar la memoria despues puesto que el puntero solo apuntara a la ultima asignacion de memoria.

Código Delphi [-]
//grafico es el TChart
TFastLineSeries *SerieLineas;
grafico->SeriesList->Clear();
for(indice=1;indice{
           //creo las series dependiendo de x
           SerieLineas=new TFastLineSeries(grafico);
           SerieLineas->ParentChart=grafico;
           SerieLineas->LinePen->Width=3;
           SerieLineas->Marks->Visible=true;
           SerieLineas->Marks->FontSeriesColor=true;
           SerieLineas->Marks->Font->Size=7;
           SerieLineas->Marks->Transparent=true;
           SerieLineas->Marks->Style=smsValue;
           SerieLineas->Color=taula_colors[indice];
           SerieLineas->Title=aux;

           grafico->Series[indice]->Add(tal...)
}

De esta otra forma puedes despues liberar la memoria que asignaste en cada SerieLineas.

Código Delphi [-]
//grafico es el TChart
TFastLineSeries *SerieLineas[10];  /* suponiendo que x nunca sera mayor de 10 */
grafico->SeriesList->Clear();
for(indice=1;indice{
           //creo las series dependiendo de x
           SerieLineas[indice-1]=new TFastLineSeries(grafico);
           SerieLineas[indice-1]->ParentChart=grafico;
           SerieLineas[indice-1]->LinePen->Width=3;
           SerieLineas[indice-1]->Marks->Visible=true;
           SerieLineas[indice-1]->Marks->FontSeriesColor=true;
           SerieLineas[indice-1]->Marks->Font->Size=7;
           SerieLineas[indice-1]->Marks->Transparent=true;
           SerieLineas[indice-1]->Marks->Style=smsValue;
           SerieLineas[indice-1]->Color=taula_colors[indice];
           SerieLineas[indice-1]->Title=aux;

           grafico->Series[indice]->Add(tal...)
}

..................


for(indice=1;indice{
           //elimino las series dependiendo de x
           delete SerieLineas[indice-1];
}

Espero se sirva de ayuda.
__________________
Saludos,

Bitman
Responder Con Cita
  #4  
Antiguo 24-12-2010
vivamotos vivamotos is offline
Miembro
 
Registrado: ago 2006
Posts: 150
Poder: 18
vivamotos Va por buen camino
Gracias

Muchísimas grácias!!,

Grácias por la rapidez y la gran sabíduria que teneís ha funcionado perfectamente. Ese ejemplo lo vi de alguna web pero claro al cerrar el programa petaba, como que no la liberaba.

Pero bueno ya esta ahora.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
crear MaterialLibrary dinamicamente Isuri Varios 13 22-04-2009 21:42:33
Crear Frame Dinámicamente chinchan C++ Builder 2 09-05-2008 14:07:08
Crear ODBC dinámicamente? HccSoft Conexión con bases de datos 3 18-03-2008 15:19:32
Crear form dinamicamente karocs Varios 1 15-09-2005 20:15:18
crear popups dinamicamente. tango01 OOP 2 06-01-2004 16:33:03


La franja horaria es GMT +2. Ahora son las 14:20:23.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi