在form中创建线程时,执行createit函数的第一行就报错。
....class EAccessViolation with message 'Access violation at address....部分代码如下,unit tLackdoc;interface
uses DBTables, Classes, DataMod, IniFiles, SysUtils, Forms, Windows, uConnectDefine, ComCtrls;
type
TLackDocThread = class(TThread)
private
protected
procedure Execute ; Override;
public
mydb : TDataBase;
myproc : TStoredProc;
myquery : TQuery;
fieldName : array [ 1..7 ] of String;
mydbtype : Integer;
published
Destructor Destroy;override;
constructor Createit( PriorityLevel:TThreadPriority; dbType: Integer; m_handle: THandle; m_listview: TListView );
end;var
fieldName : array [ 1..7 ] of String;
mydb : TDatabase;
mydbtype : Integer;
myproc : TStoredProc;
myquery : TQuery;
frmHandle : THandle;
ResultView : TListView;
implementation// 在线程中生成数据
constructor TLackDocThread.Createit( PriorityLevel:TThreadPriority; dbType: Integer; m_handle: THandle; m_listview: TListView );
begin
inherited Create( true );
priority := TThreadPriority( PriorityLevel );
frmHandle := m_handle;
ResultView := m_listview;
mydbtype := dbtype;
mydb := nil;
case dbType of
1 : begin
mydb := DM.dbxays;
myproc := DM.StoredProc_xays;
myquery := DM.Query_xays;
end;
2 : begin
mydb := DM.dbxajf;
myproc := DM.StoredProc_xajf;
myquery := DM.Query_xajf;
end;
3 : begin
mydb := DM.dbsxys;
myproc := DM.StoredProc_sxys;
myquery := DM.Query_sxys;
end;
4 : begin
mydb := DM.dbsxjf;
myproc := DM.StoredProc_sxjf;
myquery := DM.Query_sxjf;
end;
end;end;
....class EAccessViolation with message 'Access violation at address....部分代码如下,unit tLackdoc;interface
uses DBTables, Classes, DataMod, IniFiles, SysUtils, Forms, Windows, uConnectDefine, ComCtrls;
type
TLackDocThread = class(TThread)
private
protected
procedure Execute ; Override;
public
mydb : TDataBase;
myproc : TStoredProc;
myquery : TQuery;
fieldName : array [ 1..7 ] of String;
mydbtype : Integer;
published
Destructor Destroy;override;
constructor Createit( PriorityLevel:TThreadPriority; dbType: Integer; m_handle: THandle; m_listview: TListView );
end;var
fieldName : array [ 1..7 ] of String;
mydb : TDatabase;
mydbtype : Integer;
myproc : TStoredProc;
myquery : TQuery;
frmHandle : THandle;
ResultView : TListView;
implementation// 在线程中生成数据
constructor TLackDocThread.Createit( PriorityLevel:TThreadPriority; dbType: Integer; m_handle: THandle; m_listview: TListView );
begin
inherited Create( true );
priority := TThreadPriority( PriorityLevel );
frmHandle := m_handle;
ResultView := m_listview;
mydbtype := dbtype;
mydb := nil;
case dbType of
1 : begin
mydb := DM.dbxays;
myproc := DM.StoredProc_xays;
myquery := DM.Query_xays;
end;
2 : begin
mydb := DM.dbxajf;
myproc := DM.StoredProc_xajf;
myquery := DM.Query_xajf;
end;
3 : begin
mydb := DM.dbsxys;
myproc := DM.StoredProc_sxys;
myquery := DM.Query_sxys;
end;
4 : begin
mydb := DM.dbsxjf;
myproc := DM.StoredProc_sxjf;
myquery := DM.Query_sxjf;
end;
end;end;
解决方案 »
- 模式窗体与非模式窗体!
- 关于EhLib版本问题
- 如何将quickreport将报表转成JPG图片
- 打印检测 API问题
- delphi2006的tool palette中怎么没有AxtiveX项啊?
- 写了一个生成树的类,生成树的时候有问题,不知道那里原因。
- Unit ParamDsg was compiled with a different version of MemTable.TMemoryTable
- 找出所有的子控件(在線等待)
- 關于記錄類型的使用
- @,^,$ 是什么意思?怎么用?(例子)
- 我用shellexecute打开一个word,怎么取得它的句柄?
- dephi引用vc++编写的dll时 函数声明遇到的问题!!
第二行 priority := TThreadPriority( PriorityLevel );也出错,再把这一行注释后,
第三行 frmHandle := m_handle;也出错。