从TTable控件中读取某一列的所有不重复的字符串到TStrings?(100分)

  • 主题发起人 主题发起人 deorsoft
  • 开始时间 开始时间
D

deorsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
从TTable控件中读取某一列的所有字符串中不重复的到TStrings,也就是说如果第一条和第三条中的name都有'tom'字符的话,只要取一个就可以了,请问如何实现使其不重复?
 
with yourtablename do
begin
DisableControls;
first;
while not eof do
begin
if yourStringList.indexof(Fields[yourIndex].AsString) = -1 then
yourStringList.Add(Fields[yourindex].AsString);
next;
end;
EnableControls
end;
 
执行sql文,加个distinct,把query里的内容加入Tstrings
 
procedure TMainForm.Button1Click(Sender: TObject);
var
st:TStrings;
begin
st:=TStrings.Create;
with TinyTable do
begin
DisableControls;
open;
first;
while not eof do
begin
// if st.indexof(FieldByName('RegName').AsString) = -1 then
st.Add(FieldByName('RegName').AsString);
next;
end;
EnableControls;
Listbox1.Items:=st;
end;
end;

我把那锦渤的程序改成上面的还是不对啊,我用的是TinyDB数据库,出现的错误是运行时产生的,abstract error!!哪位知道?帮帮忙。
 
TSTRINGS不能直接用的!
改成这样:
var
st : tstringlist;
begin
st := tstringlist.create;
...
最后不要忘了
st.free;
 
那请问TStrings和TStringList又有何区别?我看了联机帮助,可是帮不大懂。
 
DELPHI帮助中的解释:
TStrings is an abstract base class for objects that represent a list of strings
就是说TSTRINGS是一个抽象的基础类别,概然是抽象的当然就不能直接使用了。
TSTRINGLIST是TSTRINGS的子孙,也就是说是TSTRINGS的实例,不知道这样说对不对,请高手指正。
 
后退
顶部