procedure TTraversalThread.Execute;//这是线程执行函数
begin
{ Place thread code here }
Synchronize(Traversal);
end;
procedure TTraversalThread.Traversal;
begin
BankUpForm.SaveTraversal(nil);//调用界面的方法
end;
procedure TBankUpForm.SaveTraversal(Sender: TObject);//这是界面中写入据库的方法
var
Sign,I,L :Integer;
StrTemp:string;
begin
ShowMessage('1');
Str := TStringList.Create;
StrTemp := Trim(EditSchemeName.Text);
sldb.BeginTransaction;
Sign := 1;
for I := 1 to ListViewBackUp.Items.Count do
begin
ShowMessage(IntToStr(I));
Str := GetFileList(Trim(ListViewBackUp.Items.Item[0].Caption),'.*');
for L := 0 to Str.Count-1 do
begin
sSQL := 'INSERT INTO BackUpTable(BackUpName,Sign,Folder)VALUES("'+StrTemp+'",'
+IntToStr(Sign)+',"'+Trim(Str[I])+'");';
sldb.ExecSQL(utf8encode(sSQL));
end;
Str.Clear;
ShowMessage('2');
end;
Sign := 0;
for I := 1 to ListViewRemove.Items.Count do //保存不备份list的选项
begin
Str := GetFileList(Trim(ListViewRemove.Items.Item[0].Caption),'.*');
for L := 0 to Str.Count-1 do
begin
sSQL := 'INSERT INTO BackUpTable(BackUpName,Sign,Folder)VALUES("'+StrTemp+'",'
+IntToStr(Sign)+',"'+Trim(Str[I])+'");';
sldb.ExecSQL(utf8encode(sSQL));
end;
Str.Clear;
ShowMessage('3');
end;
sldb.Commit; //关闭事务
ListViewScheme.Items.Add.Caption := StrTemp;
ShowMessage('4');
end;
为什么只输出1 和 4 而2和3不输出呢?求解!新手!请高人指点下!谢谢了!
begin
{ Place thread code here }
Synchronize(Traversal);
end;
procedure TTraversalThread.Traversal;
begin
BankUpForm.SaveTraversal(nil);//调用界面的方法
end;
procedure TBankUpForm.SaveTraversal(Sender: TObject);//这是界面中写入据库的方法
var
Sign,I,L :Integer;
StrTemp:string;
begin
ShowMessage('1');
Str := TStringList.Create;
StrTemp := Trim(EditSchemeName.Text);
sldb.BeginTransaction;
Sign := 1;
for I := 1 to ListViewBackUp.Items.Count do
begin
ShowMessage(IntToStr(I));
Str := GetFileList(Trim(ListViewBackUp.Items.Item[0].Caption),'.*');
for L := 0 to Str.Count-1 do
begin
sSQL := 'INSERT INTO BackUpTable(BackUpName,Sign,Folder)VALUES("'+StrTemp+'",'
+IntToStr(Sign)+',"'+Trim(Str[I])+'");';
sldb.ExecSQL(utf8encode(sSQL));
end;
Str.Clear;
ShowMessage('2');
end;
Sign := 0;
for I := 1 to ListViewRemove.Items.Count do //保存不备份list的选项
begin
Str := GetFileList(Trim(ListViewRemove.Items.Item[0].Caption),'.*');
for L := 0 to Str.Count-1 do
begin
sSQL := 'INSERT INTO BackUpTable(BackUpName,Sign,Folder)VALUES("'+StrTemp+'",'
+IntToStr(Sign)+',"'+Trim(Str[I])+'");';
sldb.ExecSQL(utf8encode(sSQL));
end;
Str.Clear;
ShowMessage('3');
end;
sldb.Commit; //关闭事务
ListViewScheme.Items.Add.Caption := StrTemp;
ShowMessage('4');
end;
为什么只输出1 和 4 而2和3不输出呢?求解!新手!请高人指点下!谢谢了!
如果你的循环比较大的话你就惨了
改成写文件吧,例如procedure WriteError(Err: string);
const
ErrorLog = '\Error.log';
var
strPath: string;
FileT: TextFile;
begin
strPath := ExtractFileDir(Application.ExeName) + ErrorLog;
AssignFile(FileT, strPath);
try
if FileExists(strPath) then
begin
Append(FileT);
Writeln(FileT, DateTimeToStr(Now) + #9 + Err);
Flush(FileT);
end
else
begin
Rewrite(FileT);
Writeln(FileT, DateTimeToStr(Now) + #9 + Err);
Flush(FileT);
end;
finally
CloseFile(FileT);
end
end;没有弹出2和3 可能是因为你的循环没有进去。