Cita:
Empezado por Ñuño Martínez
Después de esta información de interés general
|
Gracias por mantenernos informados
En delphi tienes el tipo WideString para manejar caracteres unicode. Donde cada carácter esta representado por 2 bytes. En su manejo no se diferencia de un string normal y hay toda una serie de funciones (empiezan por Wide) que manejan este tipo de cadenas.
En el momento de pasarla a la función en C tendrás que convertir la cadena a uno de los formatos que admite tu función, por ejemplo UTF-8. Dependiendo de la versión de delphi con la que cuentes, puedes usar la función UTF8Encode que a partir de un WideString te devuelve un string en formato UTF-8. A partir de ese momento lo manejas como un string normal. Es decir:
Código Delphi
[-]
PROCEDURE ProcedimientoCadena (Cadena: WIDESTRING);
BEGIN
_ProcedimientoCadena_C_ (PCHAR(UTF8Encode(Cadena)));
END;
PD: Las cadenas en delphi no son tan diferentes a C, internamente una variable string es un puntero a una cadena terminada en carácter nulo, exactamente igual que en C, por eso se puede hacer un typecast de un string a un PChar sin necesidad de añadir el carácter nulo.