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

請問一個錯誤訊息

缺席
BOSS
中階會員


發表:70
回覆:79
積分:64
註冊:2006-11-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-09 10:37:34 IP:211.76.xxx.xxx 未訂閱
我再form1設一全域變數SalAccount:integer型態 在form1.combobox1的onselect事件寫 SalAccount:= ComboBox2.ItemIndex; 在form2的button1click裡寫 salkind:integer型態是button1的區域變數 SalKind := unit1.SalAccount; 在compile時會出現record,object or class type required 錯誤訊息 請問是我哪該修正
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-09 10:46:12 IP:147.8.xxx.xxx 未訂閱
I think you forget to uses Unit1; in Unit2.
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-09 10:50:43 IP:211.21.xxx.xxx 未訂閱
引言: 我再form1設一全域變數SalAccount:integer型態 在form1.combobox1的onselect事件寫 SalAccount:= ComboBox2.ItemIndex; 在form2的button1click裡寫 salkind:integer型態是button1的區域變數 SalKind := unit1.SalAccount; 在compile時會出現record,object or class type required 錯誤訊息 請問是我哪該修正
您如果宣告在Form1的Var底下,也就是紅色部分,在使用上,不需加上Unit Name,即用SalKind := SalAccount;
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;    type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;
  SalAccount: integer    implementation    {$R *.DFM}    end.
~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
BOSS
中階會員


發表:70
回覆:79
積分:64
註冊:2006-11-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-09 13:05:08 IP:211.76.xxx.xxx 未訂閱
我form2有uses unit1 至於channel兄所說的 程式會無法辨識salaccount
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-09 13:20:35 IP:211.21.xxx.xxx 未訂閱
引言: 我form2有uses unit1 至於channel兄所說的 程式會無法辨識salaccount
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;    type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    ComboBox1: TComboBox;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;
  SalAccount: Integer;您是宣告在此嗎?還是宣告在public?如果您是宣告在public則必需要加上Form Name,若是宣告在var底下則不用加Form Name
implementation    uses Unit2;    {$R *.DFM}    //將Combox1.ItemIntes給全域變數
procedure TForm1.Button1Click(Sender: TObject);
begin
  SalAccount := ComboBox1.ItemIndex;
end;    //開啟Form2
procedure TForm1.Button2Click(Sender: TObject);
begin
  Application.CreateForm(TForm2, Form2);
  try
    Form2.ShowModal;
  finally
    FreeAndNil(Form2);
  end;
end;    end.
unit Unit2;    interface    uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;    type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form2: TForm2;    implementation    uses Unit1;    {$R *.DFM}    procedure TForm2.Button1Click(Sender: TObject);
var
  salkind: Integer;
begin
  salkind := SalAccount;
  ShowMessage(IntToStr(salkind));
end;    end.    
程式執行沒有問題,您可以參考看看與您程式的差異性… ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-04-09 13:21:29 IP:218.16.xxx.xxx 未訂閱
若你宣告 SalAccount 的位置是 Channel 兄告訴你的位置而你 Unit2 又有使用 Unit1 的話,是不會出現無法辨識salaccount的。    記得不要放在 TForm1 = Class(TForm) 的 Public 裡而放在 implementation 之 的 var 裡 若你需要將 SalAccount 放在 TForm1 的 Public 裡,你在 Unit2 使用時就要用 Form1.SalAccount
BOSS
中階會員


發表:70
回覆:79
積分:64
註冊:2006-11-01

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-04-09 22:00:08 IP:211.76.xxx.xxx 未訂閱
form1,form2都是mdichildform form1不需要去create form2所以不用uses form2 故form2要寫 SalKind := unit1.SalAccount 變數不是設在public 而是在 implementation之前
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-04-09 22:50:05 IP:218.16.xxx.xxx 未訂閱
你有沒有確實去試試一試刪除了 Unit1. 字眼丫.... 老實說 Channel 兄已經說得十分之清楚了無可補充。 若真的還不成就貼出你的程式罷,否則再沒甚麼可說的了。
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-04-10 08:43:51 IP:61.219.xxx.xxx 未訂閱
變數不是設在public 而是在 implementation之前 form1,form2都是mdichildform form1不需要去create form2所以不用uses form2 這與是否MDI無關, SalAccount宣告在Unit1, 在unit2中未uses unit1則compiler就是不認識,一定要uses的 故form2要寫 SalKind := unit1.SalAccount 這和是否uses無關, 一定要uses的 如果在unit2中另外也宣告了SalAccount或, unit2 uses的其他unit中也有宣告SalAccount則寫成unit1.SalAccount以明確指示來源是必要的,否則可以省 你可能要找一下在unit2中是否有重複宣告了SalAccount
系統時間:2024-07-06 4:19:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!