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 12-01-2006
aoiTo aoiTo is offline
Miembro
 
Registrado: jul 2004
Ubicación: Cádiz - España
Posts: 21
Poder: 0
aoiTo Va por buen camino
Problemas con AnsiString

Siguiendo vuestro consejo, y despues de dar un vistazo a la guia de estilo, vuelvo a escribir el mensaje.
Lo dicho, este es el codigo:

Código:
#ifndef _TALBUM_
#define _TALBUM_

   typedef struct{
      AnsiString Album;
      AnsiString Grupo;
      AnsiString Estilo;
      AnsiString Cover;
      int Formato;
   }tAlbum;

   tAlbum *Catalogo;

#endif
Código:
void __fastcall TfrmCMusica::FormActivate(TObject *Sender)
{
 int i=0,j;
 AnsiString disco;

 if(!access("album.txt",0)){
    memoAux->Lines->LoadFromFile("album.txt");
    i = memoAux->Lines->Count;
 }

 //Reservamos memoria para el vector
 Catalogo=(tAlbum*)malloc(sizeof(tAlbum)*i);

 //Inicializamos el vector con los discos que ya tenemos guardados
 for(j=0;j<i;j++){
    disco = memoAux->Lines->operator [](j);
    Catalogo[j].Album = disco.SubString(1,disco.Pos(":")-1);
    disco.Delete(1,disco.Pos(":"));

    Catalogo[j].Grupo = disco.SubString(1,disco.Pos(":")-1);/*aqui falla*/
    disco.Delete(1,disco.Pos(":"));

    Catalogo[j].Estilo = disco.SubString(1,disco.Pos(":")-1);
    disco.Delete(1,disco.Pos(":"));
    Catalogo[j].Formato= disco.ToInt();
 }

}
Pues eso que falla al ejecutar en el ligar indicado y no se porque sera, porque (segun creo) no hay que reservar memoria para un AnsiString, pero lo que ya no entiendo es porque al declarar Catalogo como un array estatico si funciona.
A ver si ahora me podeis ayudar, que me perdonen los que se hayan molestado.
Responder Con Cita
  #2  
Antiguo 18-01-2006
Sonic Sonic is offline
Miembro
 
Registrado: may 2004
Posts: 40
Poder: 0
Sonic Va por buen camino
Buenas aoiTo!

Muchas gracias por remodelar tu mensaje. La verdad es que hacía ya tiempo que no usaba la función malloc para reservar memoria. No he podido dedicarle mucho tiempo a tu problema por lo que aún no comprendo el motivo, pero lo que sí puedo es aportar un par de soluciones:

He comprobado que si en vez de reservar memoria con la función malloc lo haces con la función calloc o con la función new, no da esos problemas, por si no conoces estas funciones (si conoces malloc me extraña que no conozcas calloc, pero por si las moscas) te pongo un ejemplo aplicado.

En el caso del calloc:

Código:
Catalogo= (tAlbum *)calloc(i,sizeof(tAlbum));
y en el caso del new

Código:
Catalogo= (tAlbum *)new tAlbum[i];
y ya continuando con la explicación te cuento que la memoria reservada con calloc se libera con la orden free igual que al usar malloc, pero que si lo que has usado a sido new (la opción que te recomiendo), la forma de liberar la memoria es así:

Código:
delete [] Catalogo;

Espero que te sirva de ayuda, seguramente esta tarde le dedique un poco más de tiempo a ver si consigo darle alguna explicación al problema.

Hasta la próxima!
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
Problemas y mas problemas... zugazua2001 Impresión 3 22-12-2006 20:46:36
pen drive problemas... Vivi Varios 8 08-11-2005 15:55:01
problemas al compilar con delphi 6 tras cambiar a windowXP Giniromero Conexión con bases de datos 3 02-02-2005 18:10:33
problemas con campos y sum Giniromero SQL 3 22-12-2003 20:40:45
problemas con Export pack y win 98 cuxoapat Impresión 1 20-05-2003 09:56:47


La franja horaria es GMT +2. Ahora son las 21:43:16.


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