请教最简单的数制转换问题(65分)

  • 主题发起人 主题发起人 待飞
  • 开始时间 开始时间

待飞

Unregistered / Unconfirmed
GUEST, unregistred user!
我要在16进制数据和10进制数据(均用字符表示)之间相互转换,用到了下面的例子:
procedure TForm1.Button4Click(Sender: TObject);
var
Number: Integer;
begin
Number := StrToIntDef(Edit1.Text, 1000);
Edit2.Text := IntToStr(Number);
以及:
procedure TForm1.Button5Click(Sender: TObject);
var
i: Integer;
begin
Label1.Caption := '';
for i := 1 to Length(Edit1.Text) do
begin
try
Label1.Caption := Label1.Caption + IntToHex(Edit1.Text,2) + ' ';
except
Beep;
end;
end;
end;
这两个都是在线帮助中的例子,一点都没变。
可是当我运行的时候,第一个例子得不到正确结果输入什么都得到1000
第二个例子跟本就编译不过去,错误提示为:there is no overloaded version of 'inttohex'
that can be called with these arguments
我知道这应该不难解决,但我是刚开始用DELPHI,好多东西都不知道,所以请大家帮忙
小弟在此谢过!
 
Edit1.Text 是字符串吧,应该是数字呀
 
试试看:

进制转换算法


摘 要:介绍十进制数转换为其他进制表示的算法
关键字:二进制,八进制,十进制
类 别:其它


//X进制算法
//参数:进制cs_lx,十进制数值cs_int
//v_str:=MP_IntChang('02',123); 得到2进制的字符。
//'02'表二进制,'08'可以表示8进制
function TForm1.MP_IntChang(cs_lx:string;cs_int:integer):string;
var
v_cc,v_chr:string;
V_y,i,V_ix:integer;
begin
result:=';
v_chr:='0123456789ABCDEF';
v_ix:=strtoint(cs_lx);
if (v_ix>16) or (v_ix<2) then exit;
V_y:=cs_int;
v_cc:=';
while V_y>0 do
begin
i:= V_y mod v_ix;
V_y:=V_y div v_ix;
v_cc:=copy(v_chr,i+1,1)+v_cc;
end;
result:=v_cc;
end;

投稿人:dzl19 投稿日期:2001-7-30 9:42:00

==============================================================
1.HEX -> Integer
==============================================================
方法. 1
---------------------------------------------

var
i : integer
s : string;
begin
s := '$' + ThatHexString;
i := StrToInt(a);
end;


-----------------------------------------------------

方法. 2

------------------------------------------------------

CONST HEX : ARRAY['A'..'F'] OF INTEGER = (10,11,12,13,14,15);
VAR str : String;
Int,
i : integer;
BEGIN
READLN(str);
Int := 0;
FOR i := 1 TO Length(str) DO
IF str < 'A' THEN Int := Int * 16 + ORD(str) - 48
ELSE Int := Int * 16 + HEX[str];
WRITELN(Int);
READLN;
END.

===================================================
2.Dec To HEX

--------------------------------------
HexString := Format('%0x',DecValue);
--------------------------------------
 
1) StrToIntDef(Edit1.Text, 1000);
如Edit1.Text不能转换为数值,则返回1000,这句没错。
2) Label1.Caption := Label1.Caption + IntToHex(Byte(Edit1.Text),2) + ' ';
类型问题,用Byte转
 
to ugvanxk, :应该是字符串
to BDFan :其实这些功能我已经实现了,只是现在要用其自带的函数来减少程序长度
to Bxch_1000:1我也认为没错,可是无论转换什么都得不到正确结果 ,2的提示错误是怎么回事?为什么我用不了?
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
574
import
I
I
回复
0
查看
724
import
I
I
回复
0
查看
571
import
I
后退
顶部