Ver Mensaje Individual
  #4  
Antiguo 08-11-2018
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Reputación: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
El tema de las cadenas de texto no es tan simple. Te recomiendo que definas tipos de datos nuevos para evitarte problemas. Te paso las definiciones que hice yo para Allegro.pas:
Código Delphi [-]
  (* Strings.  Used in parameters to convert Pascal's @code(STRING) to C's
    @code(char * )*)
    AL_STR = ANSISTRING;
{$IFDEF ISDELPHI2009ANDUP}
    AL_STRptr = PAnsiChar;
{$ELSE}
    AL_STRptr = PCHAR;
{$ENDIF}

Uso PAnsiChar ya que CHAR, en las versiones modernas de Delphi, es de 2 bytes (UNICODE) no 1 (ASCII). Quizá por eso te sale "sucio", al intentar decodificar una cadena ASCII como UNICODE.

Por otro lado, uso AL_STR cuando es un parámetro y AL_STRptr cuando es una cadena devuelta por una función. El compilador se encarga de las conversiones adecuadas (siempre que no olvides el CDECL o el STDCALL, claro).
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita