关于TStringList的问题,有巧妙的方法吗(100分)

  • 主题发起人 主题发起人 lsssxs
  • 开始时间 开始时间
L

lsssxs

Unregistered / Unconfirmed
GUEST, unregistred user!
例子:
“1” (对应显示) “张三”
“23” …… “李四”
“3333” …… “王老五”
……………………………………
“24628” …… “赵钱”

合计30个这样的对应的,
如果使用case是可以做到的,但是非常多edit要使用这个东西,
最好使用funcation来,我调用就可以了,

也就是说,我有10个edit 10个memo 如果我在edit1里面输入24628就要在memo1里面显示赵钱,如果我在edit1里面输入23 就要在memo1里面显示李四 其他的edit也是一样,例如edit2里面输入24628就要在memo2里面显示赵钱 在edit2里面输入23 就要在memo2里面显示李四
这里是edit1和memo1是关系的, edit2和memo2关系的,呵呵呵,其他的都使用一样

有好的简单的方法吗:请大家具体一点,
如果使用1~30这样,我就使用了下面的方法来解决,但是这里的不一定是这样连续的,

function TForm1.GetStringOfNumber(Number: Integer): String;
begin
if (Number>=3) or (Number<=0) then
begin
Result:='';
exit;
end else
Result:=StrList.Strings[number-1];
end;

procedure TForm1.FormCreate(Sender: TObject);
var
I:Integer;
begin
StrList:=TStringList.Create;
StrList.Add('fjslfjsdflsdf');
StrList.Add('1212121212');
StrList.Add('wwwwwwww');
memo1.Lines:=Strlist;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
StrList.Free;
end;

procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
Edit2.Text:=GetStringOfNumber(strtoint(Edit1.Text));
end;
 
一个TStringList(A)存储ID,另一个TStringList(B)存储名称,i:=A.indexof(edit.text),则if (i>=0) and (i<B.count) then Result:=B
 
跟stringlist没什么关系啊,你就直接写function就行了
function dd(num:string):string;
begin
case strtoint(num) of
1:result:='找钱'
54322:resut:='张三'
563:result:=''
..
else
result:='';
end
就这么写三十个不就行了.用的时候直接
memo1.lines.add(dd(trim(edit1.text)))就可以了
要注意出错的判断
 
可以用链表结构来解决这个问题
type
PNames = TNames;
TNames = record
n: Integer; //保存你对应的数字
Name: array [0..9] of Char;
Next: PNames;
end;

按顺序New一个链表出来,查找的时候,按节点历遍,然后比对n和用户输入的值是否一致,有一致的就给出结果,如果历遍完了链表还没找到匹配的,则给出错误提示。
 
哈哈,搞定,hityou的方法非常试用,而且简单,

2位兄弟不要嫌弃分少,感谢2位的回答,
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
929
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部