Object Pascal的两个问题 ( 积分: 20 )

  • 主题发起人 主题发起人 publicnews
  • 开始时间 开始时间
P

publicnews

Unregistered / Unconfirmed
GUEST, unregistred user!
如何遍历某一文件夹下符合条件的文件名
在VB下有一个函数Dir,只要指定条件后每一次执行Dir都会返回一个符合条件的文件名,找不到就返回空值
现在我想在Delphi下实现这个功能,应该使用什么函数


如何复制Dataset中的一条记录

比如,我想将当前记录复制一条新的记录(当然要改一些东西,不能完全相同)
即将当前记录复制为一个新的记录,但不Post,然后再自已用代码修改其中的某一字段的值后再Post
我现在是用Variant数组将记录的值保存出来,再执行Dataset的Append,然后再写回,这样太笨了,有什么好用的方法没有?
 
如何遍历某一文件夹下符合条件的文件名
在VB下有一个函数Dir,只要指定条件后每一次执行Dir都会返回一个符合条件的文件名,找不到就返回空值
现在我想在Delphi下实现这个功能,应该使用什么函数


如何复制Dataset中的一条记录

比如,我想将当前记录复制一条新的记录(当然要改一些东西,不能完全相同)
即将当前记录复制为一个新的记录,但不Post,然后再自已用代码修改其中的某一字段的值后再Post
我现在是用Variant数组将记录的值保存出来,再执行Dataset的Append,然后再写回,这样太笨了,有什么好用的方法没有?
 
1. 用 FindFirst 与repeat...until 搭配使用;

2.
a.用一个select 语句将要复制的记录选取
b.再用append;
c.将自已要赋值的字段赋值;
d.将select相应的字段值赋值给新记录;
e.post;
 
转贴:

procedure TfrmSynchro.ScanTree(abWo: string);
var
SR: TSearchRec;
Result: WORD;
s: string;
begin
{是否包括空子目录?}
if optDoIncludeBlankDirection.Checked then
begin
s := abWo;
DELETE(s, 1, LENGTH(OldSrcPath));
s := OldDestPath + s;
if not DirectoryExists(s) then mkdir(s);
end;

if (AnsiCompareText(copy(abwo, 4, 8), 'recycled') = 0) and (abwo[2] = ':') then exit;

if abWo[LENGTH(abWo)] <> '/' then abWo := abWo + '/';
Result := FindFirst(abWo + '*.*', faAnyFile, SR)
// all
while (Result = 0) do
begin
if (SR.Name[1] <> '.') and (SR.Attr and faDirectory <> 0) //
then ScanTree(abWo + SR.NAME)
// enter direction
Result := FINDNEXT(SR);
end;
ScanFilesInDir(abWo)
// auf dem R點kwege Durchsuchen aller gefundenen Verzeichnisse
FindClose(SR);
end;

//遍历文件。
procedure TfrmSynchro.ScanFilesInDir(abWo: string);
var
SR: TSearchRec;
Result: WORD;
begin
Result := FindFirst(abWo + Praefix.TEXT + '.' + Suffix.TEXT, faAnyFile and not faDirectory, SR)
{Suche Nach allen Eintraegen}
if optShowIncludeDir.Checked
then FileList.Items.Add('处理子目录' + abWo);
while (Result = 0) do
begin
processFile(abWo + SR.Name);
Result := FINDNEXT(SR);
end;
FindClose(SR);
end;

【第二个问题:】
insert into 表 select test from 表 where 复制条件
update 表 set 要修改的字段=修改的值
 
第一个问题已解决,先感谢!
moyear2004的关于第二个的方法也和我的方法差不多,我是想找个更好用的方法
yzxcsw的第二个问题的方法肯定不适用, 因为我是复制到同一个表中,这样做肯定会关键字重复
 
TDataset有AppendRecord和SetFields等方法
可是怎么先把数据存出呢,要一个一个赋于变量吗?

Customer.AppendRecord([CustNoEdit.Text,CoNameEdit.Text, AddrEdit.Text, Null, Null, Null, Null, Null, Null, DiscountEdit.Text]);
 
多人接受答案了。
 
后退
顶部