Casting Array of Char to Array of Byte
Tem alguma possibilidade de transforma um Array of Char para um Arrya of Byte, e se tiver alguem poderia me passar um Exemplo.
Melo
Curtidas 0
Respostas
Beppe
28/02/2005
type TCharArray = array[0..10] of Char; TByteArray = array[0..10] of Byte; var A: TCharArray; begin ...TByteArray(A)... end;
Mas acho que é melhor vc dizer a sua intenção, tvz haja um outro jeito(como castar apenas um elemento invés de o array inteiro)
GOSTEI 0
Melo
28/02/2005
Obrigado pela ajuda.
mas estava pensando mais ou menos assim
var
vChar : array [1..5] of char
vByte : array[1..5] of byte;
i : integer;
Begin
// O array pode ter qq tipo de caracter.
for i := 0 to 5 do
vByte[i] := vChar[i]; -> é aki o meu problema
// Caso eu faça isso
-> vByte[i] := ord(vVchar[i]) // os dados vem de forma inconsistente quando irei gravar no banco a informação não esta correta para depois recuperar ela.
end;
mas estava pensando mais ou menos assim
var
vChar : array [1..5] of char
vByte : array[1..5] of byte;
i : integer;
Begin
// O array pode ter qq tipo de caracter.
for i := 0 to 5 do
vByte[i] := vChar[i]; -> é aki o meu problema
// Caso eu faça isso
-> vByte[i] := ord(vVchar[i]) // os dados vem de forma inconsistente quando irei gravar no banco a informação não esta correta para depois recuperar ela.
end;
GOSTEI 0
Beppe
28/02/2005
Primeiro, tem um problema no seu loop. Vc inicia com 0, invés de 1. Prefira fazer ´for I := Low(vChar) to High(vChar) do´
Tvz consertando isso, vc resolve o problema, pois não consigo ver inconsistência, a não ser que vc se refira a alguma conversão UTF que precise, etc...
Tvz consertando isso, vc resolve o problema, pois não consigo ver inconsistência, a não ser que vc se refira a alguma conversão UTF que precise, etc...
GOSTEI 0
Melo
28/02/2005
Beppe,
Obrigado pela atenção.
Desculpe a minha ignorancia :oops:
Mas o que seria uma Conversão UTF ?, poderia colocar um exemplo
Obrigado pela atenção.
Desculpe a minha ignorancia :oops:
Mas o que seria uma Conversão UTF ?, poderia colocar um exemplo
GOSTEI 0
Beppe
28/02/2005
UTF é um ´padrão´ Unicode, para representar caracteres de virtualmente todos os idiomas. Em uma string normal, cada byte é um caracter. Em UTF(aí tem UTF-8, UTF-16), um caractere pode ocupar mais bytes, dependendo de qual é.
No Delphi 7(acredito que no 6 também), tem as rotinas AnsiToUtf8 e Utf8ToAnsi, que convertem texto para UTF-8 e vice-versa, respectivamente.
Explique melhor seu problema, eu não creio que seja realmente isso.
No Delphi 7(acredito que no 6 também), tem as rotinas AnsiToUtf8 e Utf8ToAnsi, que convertem texto para UTF-8 e vice-versa, respectivamente.
Explique melhor seu problema, eu não creio que seja realmente isso.
GOSTEI 0
Melo
28/02/2005
Beppe,
Montei o For conforme vc descreveu e funcionou perfeitamente
for I := Low(vChar) to High(vChar) do´
Muito Obrigado.
Montei o For conforme vc descreveu e funcionou perfeitamente
for I := Low(vChar) to High(vChar) do´
Muito Obrigado.
GOSTEI 0
Beppe
28/02/2005
Sempre prefira Low e High, que retornam os ´bounds´ de arrays, invés de colocar os valores diretamente no código. Será uma fonte de bug a menos nos programas. :wink:
GOSTEI 0
Marcelo Saviski
28/02/2005
vc também poderia usar um ´absolute´
var vChar: array[1..5] of Char; vByte: array[1..5] of Byte absolute vChar; begin //aqui não precisa fazer nada pra copiar um para o outro //fazer vByte[X] seria o mesmo que Ord(vChar[X]) end;
GOSTEI 0