Função Copy retornando char. É possível?

Delphi

25/06/2004

Olá pessoal,

Estou tendo um probleminha com a função Copy. Vejam parte do código abaixo:

var
  Str01: Char;
  Str02: array[0..1] of Char;
begin
  Str02 := ´D´ + 0;
  Str01 := Copy (Str02, 1, 1);
end;


Se tentar compilar o código acima vai acusar um erro do tipo ´Incompatible types: ´Char´ and ´String´. Teoricamente era para funcionar pois não há erro de lógica na função (eu acho) mas o Delphi se recusa a compilar o programa.

Gostaria de saber se tem alguma função que eu possa usar nesse caso ou se há alguma directiva que faça com que o Delphi ignore a checagem dessa parte do cógigo.

[b:fccebc51d3]Obs: [/b:fccebc51d3]Eu não posso alterar os tipos das variáveis Str01 e Str02.
[b:fccebc51d3]Obs2: [/b:fccebc51d3]Eu não procurei no fórum porque não existem palavras-chave para uma procura.


Tatuweb

Tatuweb

Curtidas 0

Respostas

Paulo_amorim

Paulo_amorim

25/06/2004

Olá

Nesse caso creio que seja mais fácil fazer o código

Str01 := Str2[0];


Espero que ajude
Até+


GOSTEI 0
Beppe

Beppe

25/06/2004

Vc pode fazer como o Amorim falou, esse é a maneira correta de obter um elemento(caractere) de um array(string).

O Delphi acusa erro pq Copy eé uma função que retorna string. É um idioma comum, entretanto, usar Copy com Length = 1, pq pode retornar uma string vazia, quando indexação geraria uma exceção. O erro não é de lógica mas puramente semântico.


GOSTEI 0
Tatuweb

Tatuweb

25/06/2004

function StrToChar (Str: array of char): Char;
var
  PStr: ^Char;
begin
  PStr := @Str;
  Result := PStr^;
end;


A função acima foi um outro colega que fez para mim mas prefiro usar a dica do Paulo que é bem mais simples. Obrigado pela ajuda. Funcionou perfeitamente. Tão simples que quase não acreditei. :wink:


GOSTEI 0
POSTAR