16进制(50分)

  • 主题发起人 主题发起人 yeo
  • 开始时间 开始时间
Y

yeo

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何将字符转换为16进制数
假如:我在Memo控件中输入“D2”,则转换为16进制的“D2”;
输入“yy”,则忽略(因为不为16进制数)
 
var
I: Integer;
begin
for I:= 1 to Length(a)do
Memo1.Lines.Add(IntToHex(Ord(a), 2));
end;
 
看来您看错问题了吧??Lines.Add???
我的意思是我在Memo中输入,然后我需要在打印机输出相应的代码(注意是代码,而不是字符)
 
那直接输入就行了~~ 做个判断~~
 
function IsHex(str : string) : Boolean;
var
v : Integer;
begin
Result := TryStrToInt('$' + str, v);
end;
 
我做了个成熟的函数,给个email,我明天给你发过去
 
bearyeo@126.com
 
很简单呀
有啥难度吗
 
var
i,j,k:integer;
Tempstr:array[1..15] of string;
TempMid:string;
FT:boolean;
begin
for i:=1 to 15do

begin
Tempstr:=inttoHex(i,1);
end;
for j:=1 to high(Tempstr)do
begin
for k:=1 to length(memo.text)do

begin
if Tempstr[j]:=copy(memo.text,k,2) then
begin
TempMid:=TempMid+Tempstr[j];
end
else
begin
showmessage('有不能转换的字符(超出1..F)');
exit;
end;
end;
end;
if TempMid<>'' then
memo.text:=TempMid;

end;
 
您的回答仍未能解决我的问题,假如我要的是22H,但按照你的方法,我获得的是2个02H;
而且我需要的是在memo中输入,在打印机输出相关的代码(即我在memo中输入22,则输出到打印机为22H)
 
可以给动态生成的控件一个固定的名字如:Auto+inttostr(i) //i 控件的生成顺序,第一个为1,第二个为2。。。。或给控件的tag值(0,1....)。
另外,动态生成的控件并不影响速度,不用时,visible:=false就可以了。
delphi 会在关闭程序时,把它free掉。
 
我知道,生成动态控件已经没有问题,但现在需要的是要删除,而不是隐藏;
 
保存一下就可以了
implementation
{$R *.dfm}
var
a:array of tobject;
i:integer=10;
j:integer=10;
n:integer=0;
procedure TForm1.Button1Click(Sender: TObject);
var
s:Tcheckbox;
begin
s:=Tcheckbox.Create(self);
s.Name:='aa'+inttostr(n);
inc(n);
s.Parent:=self;
s.Left:=i;
s.Top:=j;
i:=i+10;
j:=j+10;
setlength(a,length(a)+1);
a[length(a)-1]:=s;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
begin
for i:=length(a)-1do
wnto 0do
if assigned(a) then
a.Free;
end;

end.
 
for i:=0 to compments.count-1do
begin
if x is TCheckbox then
begin
x.free;
end;
end;
 
可在一个容器里,不要时将容器一砸,...
 

Similar threads

回复
0
查看
848
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
D
回复
0
查看
767
DelphiTeacher的专栏
D
后退
顶部