Alexandre Rodrigues wrote:
> TTipoNaoFunciona = record
>    Nome: string;
>    Dado01: integer;   
>    Dado02: Double;    
> end;
> 
> Nesse caso, embora os dados 01 e 02 sejam retornados norlmamente o Nome 
> retorna um valor inválido.
> 
> TTipoFunciona = record
>    Nome: array[0..255] of string;
>    Dado01: array of string;
>    Dado02: integer;   
>    Dado03: Double;    
> end;
> 
> Nesse caso como Dado01 é uma matriz de strings funciona normalmente.

Isto ocorre porque o tipo string é, por padrão, uma ansi string, o que 
significa um ponteiro para a região da memória em que está a sequência 
de caracteres. Se você desabilitar a diretiva $H ou usar shortstring ao 
invés de string o compilador irá criar uma string estática ao invés de 
um ponteiro para string, e isto deverá resolver o problema.

Joao Morais

Responder a