关于线程和一小问题.

auqfiudh 2010-10-14 10:24:07
unit UnitXZLYDSJ;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, ComCtrls, ExtCtrls, DB, ADODB;

type
TFrmXZLYDSJ = class(TForm)
Panel4: TPanel;
LblMessage: TLabel;
BtnRetry: TButton;
Panel3: TPanel;
ProgressBar1: TProgressBar;
GroupBox9: TGroupBox;
BtnStart: TButton;
BtnClose: TButton;
PanelFCSJ: TPanel;
GroupBox5: TGroupBox;
DBGrid03: TDBGrid;
LabelInfo: TLabel;
ADOConnection1: TADOConnection;
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery; // FrmMain.ADOConnection1
procedure BtnRetryClick(Sender: TObject);
procedure FormShow(Sender: TObject);

procedure ShowData;
procedure BtnStartClick(Sender: TObject);
procedure BtnCloseClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
FrmXZLYDSJ: TFrmXZLYDSJ;
threadid:dword;
hthread:thandle;
do1:boolean;
procedure down1;

implementation

uses UnitMain;
{$R *.dfm}

procedure down1;
begin
ProgressBar1.Max:=ADOQuery1.RecordCount; // 54行
ProgressBar1.Step:=1;
ADOQuery1.First ;
while not ADOQuery1.Eof do
begin
with ADOQuery2 do
begin
close;
sql.Clear ;
sql.add('select TOP 1 * from 运单表 where 运单号 = '''+ADOQuery1.FieldByName('运单号').AsString+'''');
open;
if not eof then
begin
ADOQuery2.Edit ;
ADOQuery2.FieldByName('持票人').AsString:=ADOQuery1.FieldByName('持票人').AsString;
ADOQuery2.FieldByName('领票日期').AsString:=ADOQuery1.FieldByName('领票日期').AsString;
ADOQuery2.FieldByName('出车编号').AsString:=ADOQuery1.FieldByName('出车编号').AsString;
ADOQuery2.Post ;
end;
end;
ADOQuery1.Edit;
ADOQuery1.FieldByName('已下载').AsBoolean:=true;
ADOQuery1.Post;
ADOQuery1.Next;
ProgressBar1.StepIt;
end;
LabelInfo.Visible :=true;
showdata;
do1:=true;
end;

procedure TFrmXZLYDSJ.BtnRetryClick(Sender: TObject);
begin
try
ADOConnection1.Connected:=False;
ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Password=88888888;Persist Security Info=True;User ID=jld56;Initial Catalog=jld56;Data Source=255.255.255.255';
ADOConnection1.LoginPrompt:=false;
ADOConnection1.Connected:=true;
LblMessage.Caption:='数据库连接成功!';
BtnReTry.Enabled:=False;
except
LblMessage.Caption:='数据库连接失败,请确认网络连接无误后,按“重新连接”按钮!';
BtnStart.Enabled:=False;
BtnReTry.Enabled:=True;
end;
ShowData;
end;

procedure TFrmXZLYDSJ.FormShow(Sender: TObject);
begin
BtnRetry.Click;
do1:=true;
end;

procedure TFrmXZLYDSJ.ShowData;
begin
LabelInfo.Visible :=false;
with ADOQuery1 do
begin
close;
sql.Clear ;
sql.Add(' select * from 领运单数据表 where 已下载 = 0 ');
open;
if RecordCount<=0 then
BtnStart.Enabled :=false
else
BtnStart.Enabled :=true;
end;
end;

procedure TFrmXZLYDSJ.BtnStartClick(Sender: TObject);
begin
if MessageDlg('您确定要下载 领运单 数据吗?',mtConfirmation,[mbYes,mbNo],0)=mrNo then
exit;
if do1=true then
begin
hthread:=createthread(nil,0,@down1,nil,0,threadid);
do1:=false;
end;
end;

procedure TFrmXZLYDSJ.BtnCloseClick(Sender: TObject);
begin
if hthread>0 then
terminatethread(hthread,2);
close;

end;

end.



[Error] UnitXZLYDSJ.pas(54): Undeclared identifier: 'ProgressBar1'
[Error] UnitXZLYDSJ.pas(54): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(54): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(55): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(56): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(57): 'DO' expected but identifier 'Eof' found
[Error] UnitXZLYDSJ.pas(59): Undeclared identifier: 'ADOQuery2'
[Error] UnitXZLYDSJ.pas(61): '(' expected but ';' found
[Error] UnitXZLYDSJ.pas(62): Undeclared identifier: 'sql'
[Error] UnitXZLYDSJ.pas(63): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(63): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(63): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(63): 'END' expected but ')' found
[Error] UnitXZLYDSJ.pas(65): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(67): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(68): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(68): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(68): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(68): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(69): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(69): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(69): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(69): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(70): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(70): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(70): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(70): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(71): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(75): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(76): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(76): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(77): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(78): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(79): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(81): Declaration expected but identifier 'LabelInfo' found
[Error] UnitXZLYDSJ.pas(84): '.' expected but ';' found
[Fatal Error] JLDZB.dpr(114): Could not compile used unit '..\下载领运单数据\UnitXZLYDSJ.pas'

...全文
68 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
auqfiudh 2010-10-14
  • 打赏
  • 举报
回复
..哦 我说怎么就是想不起来呢.
以前做过. 我没找到.
bdmh 2010-10-14
  • 打赏
  • 举报
回复
down1,不是form1的成员函数,所以里面用到form上东西,你都要加上出处,即,form1.xxx
qianchuan2010 2010-10-14
  • 打赏
  • 举报
回复
帮你UP!
从零开始讲述Java多线程的核心知识,通过板书和一步一步画图的方式,引领大家逐步去理解和掌握这些知识;并深入分析源码实现,理解背后的实现原理,知其然还要知其所以然。从多线程核心基础讲起,理解线程的风险,多种创建线程的方式;再到深入理解线程的状态;然后是线程的基本操作。系统、深入、快速上手实现多线程。 课程目标:    快速上手掌握Java多线程的经典课程,    系统、全面、深入掌握Java多线程的核心知识主讲老师:CC老师     20年Java开发和使用经验,多年的首席架构师和CTO,畅销原创书籍《研磨设计模式》的作者。         参与和领导了上百个大中型项目的设计和开发,在互联网应用系统架构、系统设计、    应用级框架和中间件开发等方面具有很多经验和领悟。    更为难得的是,入行20年,仍然奋战在技术一线,深知一线架构师需要掌握哪些技术、    掌握到什么程度、一线架构设计会遇到哪些坑、如何才能做出最合适的架构设计,经验最难得!适应人群:    想要系统、深入学习Java多线程    已有Java开发基础,想要快速掌握Java多线程    补充Java多线程知识,为进入一线大厂做准备学习方式:随到随学课程内容:第一节课:系统理解Java并发编程的知识体系    1:为什么要掌握Java并发编程    2:整个课程的目标    3:整个课程的学习内容第二节课:线程必备基础知识    1:理解线程是什么,理解进程,图示    2:理解轻量级的含义    3:理解时序调度,线程是时序调度的基本单元,图示    4:理解调度方式:抢占式,图示    5:理解我们写的程序基本都是多线程的应用,图示    6:理解并发和并行,图示    7:为什么需要线程第三节课:线程的风险    1:线程安全性问题,图示    2:线程的活跃度问题:死锁、饥饿、活锁,图示    3:线程的性能问题,这里主要是线程间切换 上下文的开销第四节课:创建线程的方式之一    1: 代码演示:实现Runnable接口的方式来创建线程    2:学习Thread类的方法和属性的应用    3:学习Thread类的源码第五节课:创建线程的方式之二    1:继承Thread的方式来创建线程    2:继续学习Thread类的源码,分析线程初始化过程    3: 代码演示:演示ThreadGroup    4: 代码演示:演示daemon线程,理解daemon线程和线程的关系第六节课:创建线程的方式之三    1: 代码演示:匿名内部类的方式来创建线程    2:继续学习Thread类的源码,分析run方法的调用过程    3:代码演示:callable的方式来创建线程,带返回值    4: 学习FutureTask的部分源码,分析run方法到call方法的调用过程第七节课:线程状态详解    1:通过Thread源码来查看线程状态的定义    2:一步一步画图,讲述状态之间的变迁第八节课:线程的基本操作sleep 和yield    1:阅读Thread源码    2:代码演示:sleep的使用    3:代码演示:yield的使用    4:sleep和yield的对比理解第九节课:线程的基本操作join和interrupt    1:阅读Thread源码    2:代码演示:join的使用    3:代码演示:interrupt的使用这里是《Java并发编程与源码分析》的第一部分——讲述多线程核心基础实现快速上手多线程的经典之作   

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧