https://wenda.so.com/q/1535561587217078
delphi数组如何初始化
rosegirl09112级分类:其他被浏览44次2018.07.01检举
满意答案
csx3308362
采纳率:42%9级 2018.07.02
var
i : integer;
arr1 : array[0..9] of integer;
arr2 : array[0..9] of char;
begin
//如果是初始化是给每个元素相同的初值,可以用Fillchar这个函数来
fillchar(arr1,sizeof(arr1),0);
fillchar(arr2,sizeof(arr2),#0);
//如果每个元素要赋的初值不同,只能一个个来赋值了
for i := 0 to 9 do
begin
arr1[i] := i;
end;
end;
转载于:https://www.cnblogs.com/delphi-xe5/p/10958311.html
https://wenda.so.com/q/1535561587217078delphi数组如何初始化rosegirl09112级分类:其他被浏览44次2018.07.01检举满意答案csx3308362采纳率:42%9级 2018.07.02vari : integer;arr1 : array[0..9] of integer;arr2 : array[0..9] of char;beg...
delphi
产生随机数2009-07-27 18:58//用
delphi
产生不重复的随机数
******************************************************************************************
aa : array[1..36] of string[2]; //aa
数组
为需要随机排列的
数组
,{先把1..36按顺序给aa
数组
赋值}
procedure TForm1.FormCreate(Sender: TObject);
i:integer;
begin
for i:=1 to 36 do
begin
aa[i]:=inttostr(i);
bb[i]:=inttostr(i);
{随机进行排列}
procedure TForm1.Button1Click(Sender: TObject);
i,j:integer;
swapa:string[2];
begin
randomize; //随机数
初始化
*一定要有,不然下次运行时候产生的随机数仍然和这次相同*
for i:=1 to 36 do
begin
j:=1+random(36);
swapa:=aa[i];
aa[i]:=aa[j];
aa[j]:=swapa;
//由此得到不重复的随机排列数字
*****************************************************************************************
如何产生34-456之间的随机数
Randomize;
34+Random(456-34+1);
×××××××××××××××××××//下面是扫雷游戏的一个编法
procedure TForm1.Button1Click(Sender:TObject);
begin
Randomize;
Memo1.Lines.Add(IntToStr(Random(20)));
××××××××××××
*****************************************************************************************
随机数相关的几个函数:
1、RandSeed;//随时机数发生的“种子”。如果不赋值那么每次执行产生的随机数列是一样的。
所以该值必须每次调用均应是不同值。
2、Randomize;//用当前机器时间作为“种子”
初始化
随机数发生器。
3、Random() ;//由“种子”
初始化
的随机数出发,开始产生随机数序列
但是
Delphi
中的Random()产生的是伪随机数,也就是说,程序的两次运行,Random()产生的随机数是一样的。
先运行一下Randomize,再Random就是真正的随机数了
Randomize //
初始化
随机数发生器
Random()
*********************************************************************************************
delphi
如何产生不重复随机数
pascal里的随机数
随机数是指理论上没有规律可循、在指定范围内每个数的出现几率相等、无法根据之前的数来预测下一个数的数列。一般随机数生成器的基本原理是:首先
初始化
一个随机种子,其初始值可以是任意的整数;在每次获取随机数时,以随机种子为基础进行某种特殊的运算,获得一个随机数并返回之,然后再对随机种子进行某种运算,改变随机种子的值。这样,就可以生成许多比较随机的数,但同一个初始值的随机种子将会生成完全相同的随机数列。
Pascal的System单元提供了两个与随机数有关的子程序:Randomize和Random。
Randomize过程用于
初始化
随机种子,其初始值取决于当前的系统时钟。
Random函数用于获取随机数
它有两种调用形式:
Random,返回一个0到1之间(不包括1)的随机实数;
Random(N),返回0至N之间(不包括N)的随机整数,N为Word类型整数。
另外,System单元中随机种子变量的标识符为RandSeed,你也可以手动修改它。随机数在信息学奥林匹克中可用于随机化搜索、穷举等算法,以优化其性能,也可用于在快速排序中选择关键数,以使其快速排序算法的最坏情况没有固定的相应数列。如果你希望使用了随机数的程序对同一个输入数据能有恒定的输出结果,可以设置RandSeed为一个定值。
*************************************************************************************************
一个变态小算法
*******************************
比较耗费机时,如果产生的数目少,就不要用这个算法了。
计算的是在一个范围内(如1-1000),随机抽取n个不相等的随机数。我的思想就是先定义一个用来存放的
数组
(这当然是必须的啦,废话),然后定义了一个
二维数组
(感觉很浪费空间),这个
二维数组
是用来存放已经生成随机数的范围,当然不是随意存放了,要按照自然顺序,但这还不必要定义二维的。二维主要是存放一个范围,即某一列的第一行存放的是范围的小值,而第二行存放的是范围的大值。这样新生成的随机数肯定是在范围之外的,因为范围是已生成随机数的范围啊。这样,每次取随机数时,先随机抽取在某两个范围
数组
值之间,再在这两个范围
数组
值之间取随机数。基本上就是这样了。
public class random {
int count=500; //个数
int min=1; //最小值
int max=1000; //最大值
int[] r=new int[count]; //随机数存储
数组
int[][] k=new int[2][count+2]; //存储范围
数组
,用于判断范围值
//一维
数组
用来存放范围的小值,二维用来存放大值
int l=0; //存储空间大小
public random() //
初始化
范围
{k[0][0]=min-1;
k[1][0]=min-1;
k[0][2]=max+1;
k[1][2]=max+1;
public int ran(){ //来一个可以制造随机整数的东西
return (int)(Math.random()*1000000000);
public void p(int x,int c) //用来比较存储
数组
for(int i=0;i<l;i++){
if(x<k[0][i]){ //小于当前值时插入,
数组
是按自然顺序存储的
//如果生成的随机数与当前值的偏差为1,与当前值合并
if(k[0][i]-x==1){
k[0][i]=x;
if (k[0][i]-k[1][i-1]==1) //如果与前一个范围值的最大值的值差为1与前一个值合并
{k[1][i-1]=k[1][i];
move(l-1,i);
l--;}
break;}
//如果与但前范围值差大于1
else{
for(int j=l;j>i;j--){ //后移
数组
为插入值留个位置
k[0][j]=k[0][j-1];
k[1][j]=k[1][j-1];
k[0][i]=x; //插入值
k[1][i]=x;
if (k[0][i]-k[1][i-1]==1) //如果插入值与前一个范围值相差1,则与前一个值合并
{k[1][i-1]=k[1][i];
move(l-1,i);
l--;}
break;
public void move(int m,int n) //与前一个范围值合并的函数
for(int j=n;j<m;j++){
k[0][j]=k[0][j+1];
k[1][j]=k[1][j+1];}
k[0][m]=0;
k[0][m]=0;
public void r(){ //生成随机数的主函数
r[0]=ran()%max+min; //插入第一个值
if(r0==1) k[1][0]=r[0];
else{
k[0][1]=r[0];
k[1][1]=r[0];}
for(int i=1;i<count;i++){
int z;
if(l>2)
z=ran()%(l-2); //判断有多少个空隙,就是有多少个范围,然后随机选取一个
else z=0;
r[i]=ran2(k[0][z+1],k[1][z]); //在选取的范围中制造随机数
p(r[i],i);
public int ran2(int x,int y){ //在固定范围内制造随机数
int m=x-y;
m=ran()%(m-1);
return m+y+1;
/*public static void main(String[] args)
random rr=new random();
rr.r();
for(int i=0;i<rr.count;i++)
数组
是可以通过索引来引用的同类型数据的列表。按照存储空间的获取方式,
Delphi
支持的
数组
类型有两种,即静态
数组
和动态
数组
。所谓静态
数组
就是在声明时就已经确定大小的
数组
类型,而动态
数组
是指其大小在声明时不能确定的
数组
,动态
数组
的大小在使用时确定。
声明静态
数组
的方式非常简单,只要指明
数组
长度和数据类型即可,下面就是声明了一个用来存放字符的
数组
:
var Hello: array[0..5...
1、
Delphi
提供对常量
数组
的简单
初始化
方法如下:
const arrByte: Array[0..2] of byte =(112,32,55);
2、如果想对变量
数组
进行
初始化
,可以先声明常量
数组
,然后,对变量
数组
进行赋值即可:
procedure AssignArr;
arrMyByte: Array[0..2] of by...
dctb:array[1..2,1..38] of Single=((0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
);...
Devicetype : array[0..16] of string =
('未知类型', //0
'IIEC-500X 通用IIEC控制器', //1
'IIEC-A8 模拟量专用IIEC控制器', //2
jsonValue := TJSONString.Create('item1');
jsonList.Add(jsonValue);
jsonValue := TJSONString.Create('item2');
jsonList.Add(jsonValue);
jsonValue := TJSONString.Create('item3');
jsonList.Add(jsonValue);
// 输出 JSON 字符串
ShowMessage(jsonList.ToString);
finally
jsonList.Free;
以上两种方式都可以创建一个 JSON
数组
,可以通过 Add 方法或 AddItem 方法向
数组
中添加元素,最终可以通过 ToString 方法将 JSON
数组
转换为字符串。