Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-03-2008
Avatar de Guillermo80
Guillermo80 Guillermo80 is offline
Miembro
 
Registrado: may 2007
Posts: 87
Poder: 18
Guillermo80 Va por buen camino
Enumerado

Hola, mi duda es facilita, sólo quiero saber cómo poner el siguiente header de c++ en delphi:

Cita:
const char * const FLAC__StreamEncoderStateString[]
Por si sirve de ayuda la implementación de esta función sería como sigue:

Cita:
FLAC_API const char * const FLAC__StreamEncoderStateString[] = {
"FLAC__STREAM_ENCODER_OK",
"FLAC__STREAM_ENCODER_UNINITIALIZED",
"FLAC__STREAM_ENCODER_OGG_ERROR",
"FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR",
"FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA",
"FLAC__STREAM_ENCODER_CLIENT_ERROR",
"FLAC__STREAM_ENCODER_IO_ERROR",
"FLAC__STREAM_ENCODER_FRAMING_ERROR",
"FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR"
};
No entiendo muy bien que lo que devuelva sea char*, yo entiendo que debería ser un string con el valor "traducido" del enumerado que se le pasa por entrada para que sea imprimible por pantalla, ¿cómo lo veis?
Responder Con Cita
  #2  
Antiguo 08-03-2008
Avatar de Guillermo80
Guillermo80 Guillermo80 is offline
Miembro
 
Registrado: may 2007
Posts: 87
Poder: 18
Guillermo80 Va por buen camino
Matizo, no es una función, sino un array de strings constantes que haría las veces de la correspondencia con los nombres definidos para el enumerado, no?
Responder Con Cita
  #3  
Antiguo 09-03-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
sasto

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 09-03-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Hola.

Digo yo que lo de char* es porque es un puntero, ¿no?

Creo que en Delphi quedaría así:

Código Delphi [-]
const
  FLAC__StreamEncoderStateString: array[0..8] of PChar =
    ('FLAC__STREAM_ENCODER_OK',
    'FLAC__STREAM_ENCODER_UNINITIALIZED',
    'FLAC__STREAM_ENCODER_OGG_ERROR',
    'FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR',
    'FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA',
    'FLAC__STREAM_ENCODER_CLIENT_ERROR',
    'FLAC__STREAM_ENCODER_IO_ERROR',
    'FLAC__STREAM_ENCODER_FRAMING_ERROR',
    'FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR');

Salu2
Responder Con Cita
  #5  
Antiguo 09-03-2008
Avatar de Guillermo80
Guillermo80 Guillermo80 is offline
Miembro
 
Registrado: may 2007
Posts: 87
Poder: 18
Guillermo80 Va por buen camino
Mi version

Cuando asignas el tamaño del array creo que lo que hay que poner es el tamaño máximo que van a ocupar las cadenas, yo digo que sería así:
Cita:
type

FLAC__StreamEncoderState = (FLAC__STREAM_ENCODER_OK,
FLAC__STREAM_ENCODER_UNINITIALIZED,
FLAC__STREAM_ENCODER_OGG_ERROR,
FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR,
FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA,
FLAC__STREAM_ENCODER_CLIENT_ERROR,
FLAC__STREAM_ENCODER_IO_ERROR,
FLAC__STREAM_ENCODER_FRAMING_ERROR,
FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR
);
Cita:
const

FLAC__StreamEncoderStateString : Array FLAC__StreamEncoderState of String[50] =
('FLAC__STREAM_ENCODER_OK',
'FLAC__STREAM_ENCODER_UNINITIALIZED',
'FLAC__STREAM_ENCODER_OGG_ERROR',
'FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR',
'FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA',
'FLAC__STREAM_ENCODER_CLIENT_ERROR',
'FLAC__STREAM_ENCODER_IO_ERROR',
'FLAC__STREAM_ENCODER_FRAMING_ERROR',
'FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR'
);
Por lo menos en el ejemplo que vi en el libro de Delphi4 la reserva hacía alusión al tamaño de la cadena de mayor longitud, en este caso sería

'FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA'

La única duda que me queda es que si debería cambiar la declaración de:

Cita:
FLAC__StreamEncoderStateString : Array FLAC__StreamEncoderState of String[50]
Por esta otra, siguiendo tu propuesta, ixMike:

Cita:
FLAC__StreamEncoderStateString : Array FLAC__StreamEncoderState of PChar[50]
¿Cómo lo ves?
Responder Con Cita
  #6  
Antiguo 09-03-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
No puedes hacer PChar[50], al menos que yo sepa. En todo caso, sería PChar a secas.

Y perdón por el despiste, la verdad es que no ando muy bien en C

Aunque, por otra parte, yo habría hecho esto:

Código Delphi [-]
const
    FLAC__STREAM_ENCODER_OK = 0;
    FLAC__STREAM_ENCODER_UNINITIALIZED = 1;
    FLAC__STREAM_ENCODER_OGG_ERROR = 2;
    FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR = 3;
    FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA = 4;
    FLAC__STREAM_ENCODER_CLIENT_ERROR = 5;
    FLAC__STREAM_ENCODER_IO_ERROR = 6;
    FLAC__STREAM_ENCODER_FRAMING_ERROR = 7;
    FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR = 8;

  FLAC__StreamEncoderStateString: array[0..8] of PChar =
    ('FLAC__STREAM_ENCODER_OK',
    'FLAC__STREAM_ENCODER_UNINITIALIZED',
    'FLAC__STREAM_ENCODER_OGG_ERROR',
    'FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR',
    'FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA',
    'FLAC__STREAM_ENCODER_CLIENT_ERROR',
    'FLAC__STREAM_ENCODER_IO_ERROR',
    'FLAC__STREAM_ENCODER_FRAMING_ERROR',
    'FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR');


Pero vamos, esto ya es cuestión de gustos

Salu2
Responder Con Cita
  #7  
Antiguo 09-03-2008
Avatar de Guillermo80
Guillermo80 Guillermo80 is offline
Miembro
 
Registrado: may 2007
Posts: 87
Poder: 18
Guillermo80 Va por buen camino
Ooooops¡¡

Ay, que me he colao en la declaración, el tamaño efectivamente se declara a la derecha de ...array[MAX]... y no como lo he puesto yo, lo demás lo mantengo, y la pregunta es si debería cambiar mi sentencia de declararlo con String a ponerlo con PChar como sigue:

Cita:
FLAC__StreamEncoderStateString : Array[50] FLAC__StreamEncoderState of PChar=..........
....
....
....
Responder Con Cita
  #8  
Antiguo 09-03-2008
Avatar de Guillermo80
Guillermo80 Guillermo80 is offline
Miembro
 
Registrado: may 2007
Posts: 87
Poder: 18
Guillermo80 Va por buen camino
Si, buena puntualización la de iniciar en const, pero lo del tamaño estás conmigo en que sería array[0..50] ? ¿O tienes la certeza de que el tamaño solo hace alusión al nº de elementos elegibles?
Responder Con Cita
  #9  
Antiguo 09-03-2008
Avatar de Guillermo80
Guillermo80 Guillermo80 is offline
Miembro
 
Registrado: may 2007
Posts: 87
Poder: 18
Guillermo80 Va por buen camino
Estoy espesote hoy

Es cierto es cierto como dices, finalmente yo dejaría la siguiente declaración:

Código Delphi [-]type FLAC__StreamEncoderState = (FLAC__STREAM_ENCODER_OK, FLAC__STREAM_ENCODER_UNINITIALIZED, FLAC__STREAM_ENCODER_OGG_ERROR, FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR, FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA, FLAC__STREAM_ENCODER_CLIENT_ERROR, FLAC__STREAM_ENCODER_IO_ERROR, FLAC__STREAM_ENCODER_FRAMING_ERROR, FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR);


Código Delphi [-]const FLAC__StreamEncoderStateString : Array[FLAC__StreamEncoderState] of PChar =
('FLAC__STREAM_ENCODER_OK',
'FLAC__STREAM_ENCODER_UNINITIALIZED',
'FLAC__STREAM_ENCODER_OGG_ERROR',
'FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR',
'FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA',
'FLAC__STREAM_ENCODER_CLIENT_ERROR',
'FLAC__STREAM_ENCODER_IO_ERROR',
'FLAC__STREAM_ENCODER_FRAMING_ERROR',
'FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR');

Creo que esta versión es la buena
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
Enumerado raro raro Guillermo80 C++ Builder 5 08-03-2008 23:34:29
enumerado bosterito Varios 3 15-01-2007 20:42:53


La franja horaria es GMT +2. Ahora son las 10:29:32.


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