GARANTIR DESCONTO

Fórum Result:= C and $DF #185717

02/10/2003

0

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

Responder

Posts

02/10/2003

Ljr

correcao para funcao lowcase

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


Responder

Gostei + 0

03/10/2003

Ljr

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.


Responder

Gostei + 0

06/10/2003

Beppe

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


Responder

Gostei + 0

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

Aceitar