[ERROR VS2008] En dev-c++ me va bien y codeblock = en vs2008 no.

Iniciado por anonimo12121, 14 Mayo 2010, 21:44 PM

0 Miembros y 1 Visitante están viendo este tema.

anonimo12121

aqui va 1 error.

1>c:\documents and settings\usuario1\escritorio\proyectos vs2008 sdl\entidad.h(91) : error C2057: se esperaba una expresión constante
1>c:\documents and settings\usuario1\escritorio\proyectos vs2008 sdl\entidad.h(91) : error C2466: no se puede asignar una matriz de tamaño constante 0
1>c:\documents and settings\usuario1\escritorio\proyectos vs2008 sdl\entidad.h(91) : error C2133: 'salida' : tamaño desconocido


code:
Código (cpp) [Seleccionar]
int Centidad::aloadimagen(char *file,int fmin, int fmax){
// AQUI ES EL ERROR
    char salida[strlen(file)];
    for(int i=fmin;i<fmax;i++){
        remlet('-',file,salida,i+1);
        plantilla[i]=IMG_Load(salida);
    }
}


espero que me puedan ayudar ,

SALUDOS.
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

do-while

¡Buenas!

Nunca he utilizado VS, pero por el segundo y tercer error, me da la impresion de que no te deja definir la dimension del vector utilizando strlen, y por el primero, tendrias que usar una constante para definir el tamaño, no una expresion...

¡Saludos!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

anonimo12121

#2
pero por que con otros si?.
en codeblocks a mi amigo le compila y ami en dev-cpp no me a dado ningun problema .
para el numero de caracteres de "char*" usando strlen.


EDITO: e probado a crear un int y darle el valor que devuelve strlen.

pero me salta lo mismo.
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

Lambda

No se puede hacer eso, es totalmente absurdo mas que nada por que el compilador tiene que saber el tamaño del array en tiempo de compilacion y strlen es una funcion que se ejecuta en tiempo de ejecucion, es imposible que compile en VS o en GCC o cualquier otro compilador almenos que el propio compilador haga algun trapicheo y te convierta esa variable de stack a heap.

Si quieres hacer eso usa memoria dinamica.

anonimo12121

entoces que puedo hacer?.
ejemplo de lo que aria mi funcion.
Código (cpp) [Seleccionar]


int Centidad::aloadimagen(char *file,int fmin, int fmax){
// AQUI ES EL ERROR
    char salida[strlen(file)];
    for(int i=fmin;i<fmax;i++){
        remlet('-',file,salida,i+1);
        plantilla[i]=IMG_Load(salida);
    }
}
aloadimagen("foto",9,12);

char*file seria el valor devuelto por strlen seria 5.
el bucle de abajo con una funcion mia llamada remlet "remplazarletra".
hace lo siguiente:

Código (cpp) [Seleccionar]
int remlet(char buscar,char* entrada, char* salida,int num){
    char conv[2];
    for(int i=0;i<strlen(entrada);i++){
        if(entrada[i]==buscar){
            strcpy(salida,entrada);
            itoa(num,conv,10);
            if(num<10){
                salida[i+1]='0';
                salida[i+2]=conv[0];
            }
            else {
                salida[i+1]= conv[0];
                salida[i+2]= conv[1];
            }
            return 1;
        }
    }
    return 0;
}


resumiendo lo que quiero es que char salida[] tenga una longitud = a la cadena insertada en char*entrada.

alguna idea?.
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

Lambda

usa char* salida = new char[strlen(file)+1];

pero acuerdate de usar delete[] cuando no necesites esa variable por que si no tendras un memory leak :xD
otra cosa que puedes hacer es declarar el buffer con un tamaño fijo que sea "seguro".

anonimo12121

#6
ok ahora mismo lo pruebo y te digo.
EDITO: me funciono XDDDD. muuuuuuuuuuchas gracias XD ,

aunque despues de esto me salto 1 error raro en otras funcion por ejemplo:

Código (cpp) [Seleccionar]

int fun(){
}


ERROR : int fun() tiene que devolver un return .

o algo similar , puse return 0. y lo solucciones

EDITO:
PD: se me olvido poner el delete XD


EDITO: CODE que toy haciendo ...  code y exe. code si compilais funcionara "SDL" el exe no se si os funcionara u os ara falta las DLL puesto que no se como crea los exe el VS2008 . tecla "a" para que pege una patada. LINK http://www.4shared.com/file/Tb8P93f7/Proyectos_VS2008_SDL.html

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746