Ver Mensaje Individual
  #4  
Antiguo 15-03-2009
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Reputación: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Según este archivo que me tomé la libertad de buscar:
http://mailz.googlecode.com/svn/trunk/SimpleXml.pas, los tipos POctet y PChars están declarados así en esa unidad:
Código Delphi [-]
type
  PChars = ^TChars;
  TChars = packed record a, b, c, d: Char end;
  POctet = ^TOctet;
  TOctet = packed record a, b, c: Byte; end;

El problema es que, debido a la introducción del Unicode, en Delphi 2009 el tipo Char (tradicionalmente de un byte de tamaño y equivalente a AnsiChar) pasa a ser un WideChar (de dos bytes), haciendo que la estructura compacta TChars deje de ser de sólo 4 bytes (el tamaño de un LongWord).

La solución, está en esta recomendación del Dr. Bob:
Cita:
Delphi 2009 Character types are Char, AnsiChar and WideChar, where Char defaults to WideChar. In previous versions of Delphi, a Char would be equivalent to an AnsiChar. In order to ensure existing code compiler without changes in behaviour, change Char to AnsiChar (as well as PChar to PAnsiChar).
De tal manera que esa parte del código quede como lo dejaron aquí: http://www.google.com/codesearch/p?h.../XStrUtils.pas
Código Delphi [-]
type
        PChars = ^TChars;
        TChars = packed record a, b, c, d: AnsiChar end;
        POctet = ^TOctet;
        TOctet = packed record a, b, c: Byte; end;

Con ese pequeño cambio ya no te aparecerá el error.

Saludos.

Al González.

P.D. Ahora veo que ya nos diste una referencia para encontrar el archivo, confirmándose lo del Char.
Responder Con Cita