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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-12-2007
gerardorom gerardorom is offline
Miembro
 
Registrado: dic 2007
Posts: 22
Poder: 0
gerardorom Va por buen camino
Uso de clases, ¿que estoy haciendo mal?

Hola amigos Feliz Navidad! Mi duda es la siguiente:

Estoy creando un reproductor + efectos para .wav haciendo uso de una series de buffer de memoria de tipo short. Al principio, cree mi aplicacion sin clases haciendo lo siguiente,y consiguiendo reproducir mi archivo wav sin problemas una y otra vez:

Código Delphi [-]
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
int tambuffer,tamcir,z,j;
bool buf1;
short *datos,*buffer1,*buffer2,*cir;
    tambuffer=2000;
    tamcir=20000;
...
for(j=0;j< tambuffer;++j)
             {
              cir[z]=datos[j];           
                   if(buf1)
                    {
                      buffer1[j]=datos[j];
                    }
                   else
                    {
                      buffer2[j]=datos[j];
                    }
              }
...

Bueno, de echo, la clase si estaba creada y añadida al proyecto, pero no la usaba, usaba las variables buffer, cir y datos, creadas directamente dentro de la rutina asiciada al click del boton de "play".

Posterior mente, empece a hacer uso de mi clase, que tiene el siguente aspecto:

Código Delphi [-]
class Cefecto
{
 private:
         short *buffer1;
         short *buffer2;
         short *cir1;
         short *cir2;
         short *cir3;
         
 public:
       int delaym;
       int tambuf;
       int tamcir;
       Cefecto();
       Cefecto(int delaym,int tambuf,int tamcir);
       ~Cefecto();
        void conftarj();
        void reproducir(char* nombre);
        void memoria();
 };

Despues, en mi aplicacion, hago lo siguiente:

Código Delphi [-]
Cefecto efecto(5000,2000,20000);
...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
...
efecto.memoria();       
 efecto.conftarj();      
efecto.reproducir(nombre);
...

Y por ultimo os pongo un trocito de esas tres rutinas, donde yo creo que puede estar el fallo:
Código Delphi [-]
 void Cefecto::memoria()
    {
     buffer1 = new short[tambuf];
     buffer2 = new short[tambuf];
     cir1= new short[tamcir];
     cir2= new short[tamcir];
     cir3= new short[tamcir];
     };
 
 void Cefecto::reproducir(char* nombre)
    {...
     short *datos;
    datos = new short[tamiter];
    ...
    for(j=0;j< tambuf;++j)
             {
                 cir1[z]=datos[j];            
                   if(buf1)
                    {
                      buffer1[j]=datos[j];
                    }
                   else
                    {
                      buffer2[j]=datos[j];
                    }
...
}
//Es igual que antes pero ahora cir1 y buffer1 no lo creo en "void reproducir" sino que lo tomo de la clase.


El fallo que me da es el siguiente:

"Project Project2.exe raised exception class Eaccessviolation with message 'Access violation at address 01193EA6. Write of adress 0119FFEE'. Process stoped. Use step or run to continue. "

Y me aparece cuando llamo por 2ª vez a "reproducir" o cuando cierro mi aplicacion, pero la 1ª vez que llamo a reproducir no me da ningun, fallo, yme reproduce bien, osea, que me esta llenando los buffers correctamente.


¿Alguna idea?¿?¿¿ Muchisimas gracias de antemano. y Feliz Navidad!!
Responder Con Cita
 



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
Que estoy haciendo mal ? piolillo Internet 8 28-07-2011 17:23:24
Que estoy haciendo Mal esimon SQL 4 04-07-2006 21:55:25
La web que estoy haciendo (si, ya esta colgada) papulo HTML, Javascript y otros 25 11-01-2006 15:47:42
Que estoy Haciendo mal jostrix PHP 1 01-11-2004 01:29:16


La franja horaria es GMT +2. Ahora son las 23:26:59.


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