Fórum Hexadecimal #154364
12/04/2003
0
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
Curtir tópico
+ 0Posts
12/04/2003
Clclr
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
12/04/2003
Kroki
estou terminando outra pegunta pra vc....
Gostei + 0
13/04/2003
Kroki
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
13/04/2003
Kroki
´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
14/04/2003
Clclr
Voce deve colocar a fonte Fixedsys como a fonte do memo, senao nao funciona.
Gostei + 0
14/04/2003
Clclr
Gostei + 0
14/04/2003
Aroldo Zanela
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
14/04/2003
Aroldo Zanela
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
14/04/2003
Kroki
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
14/04/2003
Aroldo Zanela
~ 2GB
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
14/04/2003
Aroldo Zanela
leia-se
Obtido.
Gostei + 0
15/04/2003
Kroki
s2:=Copy(memo1.Lines.Strings[a],11,4);
Caption:=s2;
Quero dizer,quero colocar uma palavra nessa posição.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)