Creo que te sobra un ^.
Código Delphi
[-]
var
CardInformation : WideString;
CardInformation2 : ^WideString; begin
try
try
GetMem(CardInformation2, 255 * 2);
ReadCardResult:= MyCompActX.ReadInformation(CardInformation2, 20, 20, 1, 'INGRESE NUM...');
3) CardInformation := WideChar(CardInformation2);
finally
FreeMem(CardInformation2);
end;
Código:
1) Reservo Memoria
GetMem me devuelve que en la posición 10000 hay un bloque continuo de 255x2 bytes reservados para mi
CartInformatio2 = 10000
CartInformatio2^ = 'B_A%S(U R-A.......'
En la posición de memoria 10000 hay basura (restos de cosas que el ordenador haya procesado)
2) Le paso la posición al componente ActiveX
Esta función rellena a partir de la posición recibida los datos que quiere devolver, terminando con un \n
CartInformatio2 = 10000
CartInformatio2^ = '092261779...\n'
3) Convierto la información recibida en algo mas ameno para trabajar en Delphi
4) Libero memoria
El bloque de 255x2 bytes queda libre para que otro proceso lo pueda utilizar.
Lo que haya en la posicion 10000 en adelante se considera basura para el próximo proceso que utilice.