有10个编辑框
edit1 edit2 edit3 ..........edit10规定edit中的数字必须是按顺序填入,不存在中间edit.text为空的情况.
如果edit1,edit2不为空。
那么以edit1,edit2为值插入数据库,需要插入两条记录
insert into table values(edit1.text,edit2.text);
insert into table values(edit2.text,edit1.text);
可通过公式进行计算发生情况的数目:
x:edit不为空的最大id
x>=2; y=x*x-x (y=x的平方-x )
有2个编辑框则对应需要插入2组数据,分别为edit1和edit2的位置变换。
有3个编辑框则对应需要插入6组数据:
说明: 存在edit1.text,edit2.text,edit3.text
则插入数据为两两交换:
insert into table(edit1,edit2)
insert into table(edit2,edit1)
insert into table(edti2,edit3)
insert into table(edit3,edit2)
insert into table(edit1,edit3)
insert into table(edit3,edit1)对应需要插入的数目为
编辑框数 插入数
2 ---2
3 ---6
4 ---12
5 --20
6 --30
7 --42
8 --56
9 --72
10 --90现在的想法是:
首先判断存在数据的编辑框的最大id来取得有几组数据
for i := 0 to 9
do
begin
if TEdit(Panel1.Controls[i]).Text = '' then
begin
showmessage(inttostr(i));
break;
end;
如果i为3跳出,则说明第四个编辑框为空,前三个编辑框存在数据,则应该插入6条数据。
如果第一个编辑框为空则认为无数据,程序终止。
如果第10个不为空则全有数据,那么就需要插入90条记录。小弟水平比较低,希望高手指点详细实现。
解决方案 »
- 在使用 键盘接口 的 条码扫描器时如何 识别是键盘输入的还是条码扫描器输入的????????????????? 急!!!!!!!!!
- 关于Pchar类型变量的问题?(在线)
- Delphi6安装问题!
- 请问DELPHI里如何获得本机的DNS(但我看了通过注册表的方法,好象不对)?还有为什么我在VB下做的OCX控件,在DELPHI下不出现图标,但在VC
- 向.dbf表中插入记录,日期型字段怎么写呀?
- 为什么安装后的Borland目录下的Vbroker\Bin\OsAgent.exe启不来?
- 请问如何将一幅jpg图片转换成wmf格式,当然是用delphi编程实现
- 关于clientdataset的lookup查找字段
- 数据库连接问题?bde
- 高手帮帮忙吧
- 关于数据库操作的问题,请大家帮帮忙,十分奇怪
- 求Raize的使用说明书!
procedure chuli(i:integer);
var j:integer;
begin
for j=i downto 1 do //理论上对于每个数字作为组合开头的基准
begin
if j<2 then break; //一旦为1的时候也就没有必要作为基准
for k:=j-1 downto 1 //对于每个基准使之与每个小于它的数字进行组合并倒序
listbox1.add(inttostr(j)+'----'+inttostr(k));
listbox1.add(inttostr(k)+'----'+inttostr(j));
chuli(j);//递规此过程 用下一个基准
end;
end;
手头上没有编译器 没有实际测试 还不知道是什么效果
procedure TForm1.Button1Click(Sender: TObject);
var j,k,i:integer;
begin
i:=5;
listbox1.Items.Clear;
for j:=i downto 1 do //理论上对于每个数字作为组合开头的基准
begin
if j<2 then break; //一旦为1的时候也就没有必要作为基准
for k:=j-1 downto 1 do
begin //对于每个基准使之与每个小于它的数字进行组合并倒序
listbox1.Items.Add(inttostr(j)+'----'+inttostr(k));
listbox1.items.add(inttostr(k)+'----'+inttostr(j));
//chuli(k,listbox1);//递规此过程 用下一个基准
end;
end;
end;
呵呵 跑到楼下验证了一下 递规是不需要的
上面的算法得出数字的组合 那么你在操作的时候对于I的初值你控制为你的最大的edit编号
然后用数字去对应edit 中间再加入插入数据库就没有问题了
var k:integer;
begin
if j<2 then exit; //一旦为1的时候也就没有必要作为基准
for k := j-1 downto 1 do
begin
listbox1.Items.Add(inttostr(j)+'----'+inttostr(k));
listbox1.items.add(inttostr(k)+'----'+inttostr(j));
end;
chuli(j-1,listbox1);//递规此过程 用下一个基准
end;procedure TForm1.Button1Click(Sender: TObject);
begin
listbox1.Items.Clear;
chuli(strtoint(Edit1.text),listbox1);
end;
这样也时可以地