Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 24/12/2010
vivamotos vivamotos is offline
Miembro
 
Join Date: Aug 2006
Posts: 150
Poder: 21
vivamotos Va por buen camino
Crear series dinamicamente

Buenos días,

Tengo problemas al crear series dinamicamente mirad mi codigo

Code:
//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.
Reply With Quote
  #2  
Old 24/12/2010
[coso] coso is offline
Miembro Premium
 
Join Date: May 2008
Location: Girona
Posts: 1,678
Poder: 0
coso Va por buen camino
hola,
las liberas en algun lado?
Reply With Quote
  #3  
Old 24/12/2010
Toni Toni is offline
Miembro
 
Join Date: May 2003
Location: Barcelona - España
Posts: 364
Poder: 24
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
Reply With Quote
  #4  
Old 24/12/2010
vivamotos vivamotos is offline
Miembro
 
Join Date: Aug 2006
Posts: 150
Poder: 21
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.
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
crear MaterialLibrary dinamicamente Isuri Varios 13 22/04/2009 21:42
Crear Frame Dinámicamente chinchan C++ Builder 2 09/05/2008 14:07
Crear ODBC dinámicamente? HccSoft Conexión con bases de datos 3 18/03/2008 15:19
Crear form dinamicamente karocs Varios 1 15/09/2005 20:15
crear popups dinamicamente. tango01 OOP 2 06/01/2004 16:33


All times are GMT +2. The time now is 12:34.


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