Hexadecimal
Estou com um problema,sou novato.
Tenho um trecho do programa que funciona assim;U:=C+D; (C e D são Variaveis tipo Byte).
Até aí tudo bem,o resultado é 6 que é impresso num memo,mas eu quero esse resultado em Hexadecimal.
Sei que tem a função IntToHex,mas não consigo aplicar,sempre da erro.
Como faço pra converter em Hexa e assim aparecer no memo?.Como faço o ´U´ficar Hexa?
Tenho um trecho do programa que funciona assim;U:=C+D; (C e D são Variaveis tipo Byte).
Até aí tudo bem,o resultado é 6 que é impresso num memo,mas eu quero esse resultado em Hexadecimal.
Sei que tem a função IntToHex,mas não consigo aplicar,sempre da erro.
Como faço pra converter em Hexa e assim aparecer no memo?.Como faço o ´U´ficar Hexa?
Kroki
Curtidas 0
Respostas
Clclr
12/04/2003
Crie um novo aplicativo
jogue um memo e um botao no form e copie o codigo abaixo, creio que e o que voce quer.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
Var teuhexa : String ;
nrdigitos : integer;
begin
nrdigitos := 2;
teuhexa := IntToHex( 5 + 6, nrdigitos);
Memo1.Lines.add(teuhexa)
end;
end.
jogue um memo e um botao no form e copie o codigo abaixo, creio que e o que voce quer.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
Var teuhexa : String ;
nrdigitos : integer;
begin
nrdigitos := 2;
teuhexa := IntToHex( 5 + 6, nrdigitos);
Memo1.Lines.add(teuhexa)
end;
end.
GOSTEI 0
Kroki
12/04/2003
Valeu!!fiz pequena adaptação e resolvi um dos problenas.
estou terminando outra pegunta pra vc....
estou terminando outra pegunta pra vc....
GOSTEI 0
Kroki
12/04/2003
Ola,como faço pro texto do editficar assim;
EDIT´(4 espaços a esquerda)texto. tipo assim ´ Meio´.
E a palavra que é o texto(no caso ´meio´)tenha um tamanho fixo,por exemplo 4 letras mas se for 2
acrescenta espaço para manter alinhado.
É que no meu memo se a palavra for maior ela desalinha o texto a direita.Exemplo;
Meio 1945.
meias 1945.(Preciso o ´1945´ alinhado com o decima).
Se puder agradeço muito,e meu programa ´Programador de memorias´ tambem.
EDIT´(4 espaços a esquerda)texto. tipo assim ´ Meio´.
E a palavra que é o texto(no caso ´meio´)tenha um tamanho fixo,por exemplo 4 letras mas se for 2
acrescenta espaço para manter alinhado.
É que no meu memo se a palavra for maior ela desalinha o texto a direita.Exemplo;
Meio 1945.
meias 1945.(Preciso o ´1945´ alinhado com o decima).
Se puder agradeço muito,e meu programa ´Programador de memorias´ tambem.
GOSTEI 0
Kroki
12/04/2003
Aproveitando,como é que isso funciona??Vejo em um monte de sites mas não sei usar...
´Q:Gostaria de saber qual o método ou propriedade que me retorne o número da linha onde o cursor estiver posicionado dentro de uma memo.
A:
With Memo1 do
begin
Linha := Perform(EM_LINEFROMCHAR,SelStart, 0);
Coluna := SelStart - Perform(EM_LINEINDEX, Line, 0);
end;
´
Coloquei esse codigo em um evento de Botão(Onclick) e nada...
´Q:Gostaria de saber qual o método ou propriedade que me retorne o número da linha onde o cursor estiver posicionado dentro de uma memo.
A:
With Memo1 do
begin
Linha := Perform(EM_LINEFROMCHAR,SelStart, 0);
Coluna := SelStart - Perform(EM_LINEINDEX, Line, 0);
end;
´
Coloquei esse codigo em um evento de Botão(Onclick) e nada...
GOSTEI 0
Clclr
12/04/2003
Para voce pode usar espaca para ´dar um trato´ tem que se uma fonte correta
Voce deve colocar a fonte Fixedsys como a fonte do memo, senao nao funciona.
Voce deve colocar a fonte Fixedsys como a fonte do memo, senao nao funciona.
GOSTEI 0
Clclr
12/04/2003
Para voce poder usar espacamento fixo, e poder ´dar um trato´ com espaços tem que se uma fonte correta
Voce deve colocar a fonte Fixedsys como a fonte do memo, senao nao funciona.
GOSTEI 0
Aroldo Zanela
12/04/2003
Aproveitando,como é que isso funciona??Vejo em um monte de sites mas não sei usar...
´Q:Gostaria de saber qual o método ou propriedade que me retorne o número da linha onde o cursor estiver posicionado dentro de uma memo.
A:
With Memo1 do
begin
Linha := Perform(EM_LINEFROMCHAR,SelStart, 0);
Coluna := SelStart - Perform(EM_LINEINDEX, [b:11d03328e0]Line[/b:11d03328e0], 0); // Erro
end;
´
Coloquei esse codigo em um evento de Botão(Onclick) e nada...
Colega,
O código correto é: (Para Memo ou RichEdit)
var Linha, Coluna: Integer; begin With RichEdit1 do begin Linha := Perform(EM_LINEFROMCHAR,SelStart, 0); Coluna := SelStart - Perform(EM_LINEINDEX, Linha, 0); end; StatusBar1.Panels[0].Text := IntToStr(Linha+1); StatusBar1.Panels[1].Text := IntToStr(Coluna); end;
Coloque o código acima no OnChange do Memo ou RichEdit.
GOSTEI 0
Aroldo Zanela
12/04/2003
Ola,como faço pro texto do editficar assim;
EDIT´(4 espaços a esquerda)texto. tipo assim ´ Meio´.
E a palavra que é o texto(no caso ´meio´)tenha um tamanho fixo,por exemplo 4 letras mas se for 2
acrescenta espaço para manter alinhado.
É que no meu memo se a palavra for maior ela desalinha o texto a direita.Exemplo;
Meio 1945.
meias 1945.(Preciso o ´1945´ alinhado com o decima).
Se puder agradeço muito,e meu programa ´Programador de memorias´ tambem.
Colega,
Você terá que usar fontes mono-espaçadas, como: Courier, Courier New, Fixedsys, Lucida Console, MS Mincho ou Terminal ao invés de fontes proporcionais.
Sugiro o uso de funções auxiliares para preenchimento de carater a direita ou a esquerda, facilitando o posicionamento correto do resultado dentro do Memo/RichEdit.
Abaixo, código das duas funções que me referi anteriomente:
function TForm1.PadL(Expressao: String; Comprimento: Integer; Caracter: Char): String; var nComprimento, nFalta : Integer; Begin nComprimento := Min(Length(Expressao), Comprimento); nFalta := Comprimento - nComprimento; Result := StringOfChar( Caracter, nFalta ) + Expressao; End; function TForm1.PadR(Expressao: String; Comprimento: Integer; Caracter: Char): String; var nComprimento, nFalta : Integer; Begin nComprimento := Min(Length(Expressao), Comprimento); nFalta := Comprimento - nComprimento; Result := Expressao + StringOfChar( Caracter, nFalta ); End;
Exemplo de utilizaçào:
Coloque um RichEdit, dois Edits e um Button (não altere os nomes), coloque o código abaixo no OnClique do button:
Altere o fonte do RichEdit para uma fonte mencionada acima.
procedure TForm1.Button1Click(Sender: TObject); begin RichEdit1.Lines.Add(PadR(Edit1.Text,40,´ ´)+ PadL(Edit2.Text,15,´0´)) end;
GOSTEI 0
Kroki
12/04/2003
Obrigado a todos pelas respostas.É que parece que iniciante no Brasil tem que se esfolar muito...
Achei livros ótimos pra Delphi,mas não para iniciante.Os livros que achei ensinam muito bem como formatar um aplicativo(Menus,Form,Caixa de dialogo etc...),mas quase zero sobre linhas de programação.
Uso o Delphi 7(ha 2 semanas)e seu Help parece ser bom,mas acho improvavel que alguem tenha tempo e paciencia para ler por completo.
Minha sorte é que tenho conhecimentos sobre assembler e sou projetista
eletronico,se não fosse isso provavelmente teria desistido de programar
um programador/Leitor de Roms/Rams e montador Z80,(procurei na Net até dormir no teclado...).
Mais uma importante,um campo Memo pode um texto até uns 64K?
Como posso pegar uma palavras numa linha do Memo que estejam separadas por uma certa distancia?.tipo uma no inicio(4 caracteres) e outra 10 caracters depois(na mesma linha).Como seria a pesquisa?
Achei livros ótimos pra Delphi,mas não para iniciante.Os livros que achei ensinam muito bem como formatar um aplicativo(Menus,Form,Caixa de dialogo etc...),mas quase zero sobre linhas de programação.
Uso o Delphi 7(ha 2 semanas)e seu Help parece ser bom,mas acho improvavel que alguem tenha tempo e paciencia para ler por completo.
Minha sorte é que tenho conhecimentos sobre assembler e sou projetista
eletronico,se não fosse isso provavelmente teria desistido de programar
um programador/Leitor de Roms/Rams e montador Z80,(procurei na Net até dormir no teclado...).
Mais uma importante,um campo Memo pode um texto até uns 64K?
Como posso pegar uma palavras numa linha do Memo que estejam separadas por uma certa distancia?.tipo uma no inicio(4 caracteres) e outra 10 caracters depois(na mesma linha).Como seria a pesquisa?
GOSTEI 0
Aroldo Zanela
12/04/2003
Mais uma importante,um campo Memo pode um texto até uns 64K?
~ 2GB
Como posso pegar uma palavras numa linha do Memo que estejam separadas por uma certa distancia?.tipo uma no inicio(4 caracteres) e outra 10 caracters depois(na mesma linha).Como seria a pesquisa?
No exemplo abaixo é obetido o conteudo de quatro posições a partir da posição 1 na linha 1 (Índice 0).
Variavel := Copy(memo1.Lines.Strings[0],1,4)
Fui claro?
GOSTEI 0
Aroldo Zanela
12/04/2003
Onde se lê: Obetido
leia-se
Obtido.
leia-se
Obtido.
GOSTEI 0
Kroki
12/04/2003
Qual o inverso desse codigo?
s2:=Copy(memo1.Lines.Strings[a],11,4);
Caption:=s2;
Quero dizer,quero colocar uma palavra nessa posição.
s2:=Copy(memo1.Lines.Strings[a],11,4);
Caption:=s2;
Quero dizer,quero colocar uma palavra nessa posição.
GOSTEI 0