///思考一個程式,程式中有幾個方案,想將這些方案通過執行緒初始化引數的形式傳遞進去,
//但是這些方案的欄位存在共有的,也存在不一樣的:如何寫呢?
//比如:
//共有引數:
Fname:string;
FType:TSchemeType;
//方案1:
procedure Run;
//方案2:
procedure Car;
//方案3:
procedure airLine;
//執行緒初始化時將方案傳遞進去。
WorkThread.Create(Scheme); //這里的Scheme如何定義資料型別,才能兼容以上的幾種方案呢?
//如果可以,請給個例子,謝謝,非常感謝。
uj5u.com熱心網友回復:
你不都定義TSchemeType了嗎,一般來說列舉型別即可uj5u.com熱心網友回復:
結構體或自定義類uj5u.com熱心網友回復:
我這上邊只是個例子而已。具體實作的時候,不只是這三個程序。說不定有很多欄位的。
想把不同的方案內容分成不同的類來操作。然后通過一個資料型別來傳入引數。
相當于
procedure sample(strList:TStrings);
使用的時候可以傳入TStringList或TStringStream型別。
uj5u.com熱心網友回復:
建議使用TStringList帶入引數。uj5u.com熱心網友回復:
配置的方案比較多,用TStringList不好弄。希望用自定義類的方式傳入引數,在執行緒中再判斷來處理。
uj5u.com熱心網友回復:
type
TMyParamStru = record
RunProc: TProcedure;
OtherParam: array [0..1] of Integer;
end;
TWorkThread = class(TThread)
private
FInitPm: TMyParamStru;
protected
procedrue Execute; override;
public
constructor Create(InitPm: TMyParamStru);
end;
constructor TWorkThread.Create(InitPm: TMyParamStru);
begin
FInitPm:= InitPm;
inherited Create(True, True);
end;
procedure TWorkThread.Execute;
begin
if Assigned(FInitPm.RunProc) then begin
FInitPm.RunProc;
end;
end;
uj5u.com熱心網友回復:
可以考慮使用泛型轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/41292.html
標籤:語言基礎/算法/系統設計
