全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:990
推到 Plurk!
推到 Facebook!

我的程式能跑,但最後卻當掉

答題得分者是:cobraliu
lappears
一般會員


發表:2
回覆:2
積分:0
註冊:2008-01-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-01-19 21:28:11 IP:220.129.xxx.xxx 訂閱
我寫了一個小實驗
能跑
但最後會當掉

應該是我最後面那個 Thank 的Form寫錯了
我在Ques這個Form裡面 有兩個圖案 要求受試者選擇對的圖案
然後在Thank這個Form裡顯示 受試者是否答對了
我不太確定要怎麼呼叫

我把檔案上傳
麻煩大大幫我看看
附加檔案:4791faeb9ca84_1.rar
lappears
一般會員


發表:2
回覆:2
積分:0
註冊:2008-01-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-01-20 12:49:07 IP:220.129.xxx.xxx 訂閱
還是有沒有人能告訴我一下 

從第一個Form裡面 有兩張圖,點選右邊的圖叫做答對

然後答對了沒要在第二個Form裡面的LabledEdit顯示出來 "恭喜你答對了" 或 "抱歉你答錯了"

第一個Form裡沒有Button 可以按,要直接跳到第二個Form 顯示

這要怎麼寫?

請教教我 感激。
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-01-21 16:19:23 IP:122.127.xxx.xxx 訂閱
我看不懂你寫的程式, 但看一下就有很多問題了, 你可能要買本書, 靜下心來研究研究, 再來問好了.
[code delphi]
public
{ Public declarations }
OnChoose : TEventChoice; {這是你原先宣告的型別}
end;


protected
{ Private declarations }
procedure ProcessChoose(ChooseLeft : Boolean); {注意: 這個程序宣告沒有傳回值}

procedure TThank.ProcessChoose (ChooseLeft : Boolean);
begin
Ques.OnChoose := ProcessChoose; {請問您: 沒有傳回值的程序如何傳給一個TEventChoice的型別, 真奇怪了}
Thank.Show;
if ChooseLeft then
LabeledEdit1.Text := '恭喜您答對了'
else LabeledEdit1.Text := '抱歉答錯喔,答案是14';
end;
[/code]
------
努力會更接近成功
cobraliu
中階會員


發表:15
回覆:75
積分:83
註冊:2007-11-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-01-21 21:11:41 IP:220.143.xxx.xxx 訂閱

[code delphi]
unit U7;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, ExtCtrls, jpeg;

type
TEventChoice = procedure (ChooseLeft : Boolean) of object;//宣告
TQues = class(TForm)
Label1: TLabel;
Label2: TLabel;
Image1: TImage;
Image2: TImage;
procedure Image1Click(Sender: TObject);
procedure Image2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
OnChoose : TEventChoice;//宣告
end;

var
Ques: TQues;

implementation
uses M, Thx;

{$R *.dfm}
procedure TQues.Image1Click(Sender: TObject);
begin
OnChoose(true);//直接傳入
Close;
end;

procedure TQues.Image2Click(Sender: TObject);
begin
OnChoose(false);//直接傳入
Close;
end;

end.

[/code]

網友這一個問題自已有看過,但其實我看太懂
自已學藝不精...
版大似乎是這類型的寫法,看了很多Uint都有這類似的
其實想問的是...我看了幾次版大的寫法,
不懂的是...其函數如:
OnChoose : TEventChoice;//宣告
都是繼承來用,沒有看到主體,這樣是有做用的嗎...
還是多餘的..???
沒有多開一個主題請見諒,想說與版大的應有關..自已也可以了解一下..@@
------
初學、初學、學了很久...還是在初學階段..Orz
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-01-22 03:17:30 IP:61.64.xxx.xxx 訂閱

-->> Ques.OnChoose := ProcessChoose; {請問您: 沒有傳回值的程序如何傳給一個TEventChoice的型別, 真奇怪了} <<--
我想要是在做「指定事件」那就合理了,畢竟「
OnChoose」名稱是採用Delphi 慣例,除非設計者不這麼想,不然 OnChoose 應該是 event
然後在往下看
-->>
TEventChoice = procedure (ChooseLeft : Boolean) of object;//宣告 <<--
可以看見,其真的是一個 event

所以 pceyes,辛苦回答,讓你眼睛用太多,有點累囉,休息一下,再繼續,才不會看錯喔!
至於lappears,pceyes 的建議不錯,用心看本書吧!會有收穫的

===================引 用 pceyes 文 章===================
我看不懂你寫的程式, 但看一下就有很多問題了, 你可能要買本書, 靜下心來研究研究, 再來問好了.
[code delphi]
public
{ Public declarations }
OnChoose : TEventChoice; {這是你原先宣告的型別}
end;


protected
{ Private declarations }
procedure ProcessChoose(ChooseLeft : Boolean); {注意: 這個程序宣告沒有傳回值}

procedure TThank.ProcessChoose (ChooseLeft : Boolean);
begin
Ques.OnChoose := ProcessChoose; {請問您: 沒有傳回值的程序如何傳給一個TEventChoice的型別, 真奇怪了}
Thank.Show;
if ChooseLeft then
LabeledEdit1.Text := '恭喜您答對了'
else LabeledEdit1.Text := '抱歉答錯喔,答案是14';
end;
[/code]
系統時間:2024-04-26 4:21:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!