Result:= C and $DF

Delphi

02/10/2003

Para convertermos um char de uma letra maiuscula para minusculo, basta pegarmos o seu numero na tabela ASCII e subtrairmos 32.

Portanto, deveriamos setar um bit para o valo 0.

Pensando nisto, gostaria de desenvolver uma funcao assim (eu sei que ela ja existe):

function upcase(c: char): char;
begin
Result:= C and $DF;
end;

function lowcase(c: char): char;
begin
Result:= C and $20;
end;


Estas funcoes contem erros! Porque o parametro ´C´ nao esta em binario.


Como converto este char para seu valor em binario sem usar a funcao ord?





Desde ja agradeço a atenção


Ljr

Ljr

Curtidas 0

Respostas

Ljr

Ljr

02/10/2003

correcao para funcao lowcase

function lowcase(c: char): char;
begin
Result:= C or $20;
end;


GOSTEI 0
Ljr

Ljr

02/10/2003

Não consegui converte-lo para o valor binario sem usar uma funcao!

Consegui resolver o problema da seguinte forma:

function myord(c: char): byte;
asm
        MOV RESULT, AL
end;

function CharToStr(n: byte): char;
asm
        MOV RESULT, AL
end;

function myupcase(c: char): char;
begin
  Result:= CharToStr(  myord(c) and $DF  );
end;

function mylowcase(c: char): char;
asm
  Result:= CharToStr(  myord(c) or $20  );
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption:= myupcase(Edit1.Text[1])
end;


Só que nestas funcões eu não implementei para ver se o valor passado estava entre ´a´ e ´z´, ou ´A´ e ´Z´. Não preciso.


GOSTEI 0
Beppe

Beppe

02/10/2003

A função Ord não gera código, é como uma typecast. É bom usá-la.


GOSTEI 0
POSTAR