線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1783
推到 Plurk!
推到 Facebook!

如何实现程序并发运行

答題得分者是:小傑克
keykill
一般會員


發表:5
回覆:8
積分:2
註冊:2009-03-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-04-05 14:45:19 IP:222.95.xxx.xxx 訂閱
在delphi中如何实现 按下一个按纽 两个函数同时执行
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-04-05 17:21:56 IP:122.116.xxx.xxx 未訂閱
您好,

您的問題好像沒真的問出來,
單就您問題的字面意思回答如下:

procedure tform1.button1click(sender :...);
var astr : string;
begin
astr := function1(...);
astr := function2(...);
// 不管多少個都可以吧
end;
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2009-04-05 17:22:22, 註解 無‧
st33chen 重新編輯於 2009-04-05 17:35:01, 註解 無‧
st33chen 重新編輯於 2009-04-06 08:26:52, 註解 無‧
roviury
一般會員


發表:3
回覆:49
積分:15
註冊:2008-08-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-04-05 20:43:21 IP:203.186.xxx.xxx 訂閱
他的問題很難
正確來說是沒可能?!(怎可能真真正正控制cpu同時執行事情呢?)
他的要求是一個procedure同步執行兩個函數

我只知道可以設定2個timer來同步執行
編輯記錄
roviury 重新編輯於 2009-04-05 20:44:02, 註解 無‧
keykill
一般會員


發表:5
回覆:8
積分:2
註冊:2009-03-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-04-06 12:45:37 IP:222.95.xxx.xxx 訂閱
就是希望有两个函数或过程同步执行,而且是在同一个FORM里面
设定timer?能说说具体代码怎样实现吗?
老大仔
尊榮會員


發表:77
回覆:835
積分:1082
註冊:2006-07-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-04-06 13:23:35 IP:59.114.xxx.xxx 未訂閱
同時執行嗎?
使用Thread應該就行了吧@@?
(雖然我對Thread不熟...)
pcplayer99
尊榮會員


發表:142
回覆:740
積分:591
註冊:2003-01-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-04-06 15:47:11 IP:116.25.xxx.xxx 訂閱
看不明白你的问题。

你能不能把你要做到什么效果描述清楚一点?你所谓的【同步执行】是什么意思?

===================引 用 keykill 文 章===================
就是希望有两个函数或过程同步执行,而且是在同一个FORM里面
设定timer?能说说具体代码怎样实现吗?
小傑克
資深會員


發表:5
回覆:209
積分:357
註冊:2009-02-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-04-06 16:14:32 IP:59.112.xxx.xxx 訂閱
即便是Thread 也不能真正同時執行啊...只能夠很近似同時而已, 這是把獨立事件丟給系統自己分配進度,底下是個小實驗,一個form放三個button
ktop中有很多討論thread理論的文章,可以看一下理論,寫法最單純的話就像底下這樣

[code delphi]

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TMyThread=class(TThread)
protected
mybtn:TButton;
procedure Execute; override;
procedure MyRunProcess;
public
constructor Create(btn:TButton);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TMyThread }
constructor TMyThread.Create(btn:TButton);
begin
mybtn := btn;
inherited Create(false);
end;
procedure TMyThread.Execute;
begin
inherited;
try
MyRunProcess;//Synchronize(MyRunProcess);
except
on E:Exception do
ShowMessage(e.Message);
end;
end;
procedure TMyThread.MyRunProcess;
var i:integer;
begin
for i := 1 to 5000 do
begin
mybtn.Left := (i div 10) ;
Application.ProcessMessages;
sleep(1); //這是實驗的關鍵, 當你把這行remark掉的時候,會發現button速度是不一樣的,因為效能是系統分配的
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
TMyThread.Create(Button1);
TMyThread.Create(Button2);
end;
end.
[/code]
------
額有朝天骨,眼中有靈光
編輯記錄
小傑克 重新編輯於 2009-04-06 16:19:26, 註解 無‧
系統時間:2017-12-15 20:03:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!