Fórum Função Copy retornando char. É possível? #239709

25/06/2004

0

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

Responder

Posts

25/06/2004

Paulo_amorim

Olá

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

Str01 := Str2[0];


Espero que ajude
Até+


Responder

Gostei + 0

25/06/2004

Beppe

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.


Responder

Gostei + 0

25/06/2004

Tatuweb

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:


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar