我要实现十进制数转换为2进制数保存到个数组里 请看我写的对不对 谢谢 Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiBase/html/delphi_20061206215537250.html
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask;
type
TForm1 = class(TForm)
MaskEdit1: TMaskEdit;//从这里输入数字
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
x,i:Integer;//在这里声明变量可以吗?还是应该在button的事件里声明?
Array16:Array[1..16] of Integer;//保存在这个数组里
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
x:=strtoint(Form1.MaksEdit1.Text);//赋值给中间变量x
i:=16;
repeat
Array16[i]:=x mod 2;//偶这里是用最原始的方法了,连续取余呵呵
x:=x div 2;
i:=i-1;
until i=0;
end;
end.
------------------------------------分割线--------------------------------
程序可以运行
1.我不会查看结果到底对不对,我只会用把数组某一位赋值给另外的edit.text来看某1位是不是对的,请问有什么方法可以查看下整个数组是否正确
2.MaskEdit1的属性为9999;0;
当输入是4位的时候,点击按钮可以成功,但是如果少于4位数,就会出错,说不是有效的值
3.有没有这类函数inttobinary() 如果有,如何实现我的要求,我看过些例子都是连续shr转到个string里的,转到数组里如何实现?
4.如果我这个程序其他位置还要使用该过程,请问如何定义?定义写在哪,主体写在哪?调用的时候格式是如何?
------------------------------------分割线---------------------------------
偶是新手,希望朋友能耐心读完,帮忙解决下问题,解答时候尽量详细些 谢谢
补充一下
2.MaskEdit1的属性为!9999;0; 第3个属性用空格和0 都试过 问题依旧
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask;
type
TForm1 = class(TForm)
MaskEdit1: TMaskEdit;//从这里输入数字
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
x,i:Integer;//在这里声明变量可以吗?还是应该在button的事件里声明?
在这里和在button里都可以声明变量,但生存周期不一样
Array16:Array[1..16] of Integer;//保存在这个数组里
这里似乎没有必要用integer,有点浪费了。
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
x:=strtoint(Form1.MaksEdit1.Text);//赋值给中间变量x
i:=16;
repeat
Array16[i]:=x mod 2;//偶这里是用最原始的方法了,连续取余呵呵
x:=x div 2;
i:=i-1;
until i=0;
end;
end.
后面你那许多问题,我建议你找本OBJECT PASCAL或者DELPHI的书看看,
给你写了一个例子:把一个整形数转换成2进制字符串输出
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button2: TButton;
Edit2: TEdit;
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function IntToBinaryStr(TheVal: LongInt): string;
var
counter: LongInt;
begin
if TheVal = 0 then begin
result := '0';
exit;
end;
result := '';
counter := $80000000;
{Suppress leading zeros}
while ((counter and TheVal) = 0) do begin
counter := counter shr 1;
if (counter = 0) then break; {We found our first "1".}
end;
while counter > 0 do begin
if (counter and TheVal) = 0 then result := result + '0'
else result := result + '1';
counter := counter shr 1;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit2.Text := IntToBinaryStr(StrToInt(Edit1.Text))
end;
end.
恩恩 还没学得太透彻 借了些书对Pascal讲解篇幅不太多
我这里后面是要做个串口传输控制的程序
要一位一位传
把数组每一位陆续传到串口
不使用控件 不使用Api 是内嵌汇编 在98系统下做
如果是string型 如何实现一位一位 请给出方法
继续等
谢谢
不知楼主说的一"位"是不是指string里的一个字符..如果是,那么:
如有:
string:='abcdefg';
则:
string[1] == 'a';
string[2] == 'b';
...
强烈鄙视问题解决后不结贴的人!
强烈鄙视技术问题解决后把贴子转移到非技术区的人!
鄙视你们!
http://community.csdn.net/Expert/topic/5216/5216675.xml?temp=.9262659