![]() |
Komponenten in Prozedur nicht erkannt
Ich versuche mich an dem Spiel Kniffel mit mehreren Spielern.
Dabei dachte ich daran, den Spielzug nach dem Würfeln über einen Button auswählen zu können, welcher nur erscheint, wenn das entsprechende Feld noch frei ist. Bei der Umsetzung habe ich die Information in einem record pro Spieler gespeichert, wobei am Anfang jeder Runde ausgelesen wird, welche Spielzüge noch frei sind(siehe Quelltext). Befindet sich die Prozedur innerhalb eines Ereignisses, funktioniert alles so weit, um jedoch nicht extra klicken zu müssen, wollte ich diese am Ende der Auswahl automatisch ausführen lassen. Nutze ich hierfür eine eigene Prozedur, damit der Quelltext nicht zu lang wird, welche bei jedem Auswahlbutton aufgerufen wird, werden die Komponenten in der prozedur jedoch nicht erkannt (z.B. Error: Identifier not found "BitBtn_eins").
Delphi-Quellcode:
procedure neu;
if Spieler=1 then begin BitBtn_eins.visible:=SpielerA.eins; BitBtn_zwei.visible:=SpielerA.Zwei; BitBtn_drei.visible:=SpielerA.drei; BitBtn_vier.visible:=SpielerA.vier; BitBtn_fuenf.visible:=SpielerA.fuenf; BitBtn_sechs.visible:=SpielerA.sechs; BitBtn_d.visible:=SpielerA.d; BitBtn_v.visible:=SpielerA.v; BitBtn_fh.visible:=SpielerA.fh; BitBtn_ks.visible:=SpielerA.ks; BitBtn_gs.visible:=SpielerA.gs; BitBtn_k.visible:=SpielerA.k; BitBtn_c.visible:=SpielerA.c; end; if Spieler=2 then begin BitBtn_eins.visible:=Spielerb.eins; BitBtn_zwei.visible:=Spielerb.Zwei; BitBtn_drei.visible:=Spielerb.drei; BitBtn_vier.visible:=Spielerb.vier; BitBtn_fuenf.visible:=Spielerb.fuenf; BitBtn_sechs.visible:=Spielerb.sechs; BitBtn_d.visible:=Spielerb.d; BitBtn_v.visible:=Spielerb.v; BitBtn_fh.visible:=Spielerb.fh; BitBtn_ks.visible:=Spielerb.ks; BitBtn_gs.visible:=Spielerb.gs; BitBtn_k.visible:=Spielerb.k; BitBtn_c.visible:=Spielerb.c; end; |
AW: Komponenten in Prozedur nicht erkannt
Hallo,
du muss Neu im Formular definieren.
Delphi-Quellcode:
Type
TForm1 = class(TForm) private procedure Neu; end; implementation procedure TForm1.Neu; begin end; Und herzlich willkommen im Forum! |
AW: Komponenten in Prozedur nicht erkannt
Vielen Dank,das nächste Mal weiß ich bescheid :)
Nochwas: Habe mich wahrscheinlich irgentwo vertippt Fehler: project1.lpr(18,34) Error: Identifier not found "Form1"
Delphi-Quellcode:
begin
RequireDerivedFormResource:=True; Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. |
AW: Komponenten in Prozedur nicht erkannt
Ob er Form1 kennt oder nicht, ergibt sich irgendwo aus dem Quelltext oberhalb des begin. Ohne den vollständigen Quelltext der Datei, können wir nicht helfen, da alle wesentlichen Informationen fehlen.
|
AW: Komponenten in Prozedur nicht erkannt
Vielen Dank, dass ihr euch die Zeit nehmt mir zu helfen
Delphi-Quellcode:
}
program project1;
{$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Interfaces, // this includes the LCL widgetset Forms, Unit1 { you can add units after this }; {$R *.res} begin RequireDerivedFormResource:=True; Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. |
AW: Komponenten in Prozedur nicht erkannt
Form1 ist dann wohl vermutlich in Unit1 definiert.
Schau dort bitte mal nach, ob dem wirklich so ist. Ggfls. poste mal den Quelltext der Unit1, denn eventuell ist dadrinne irgendwas nicht so, wie erwartet. Hast Du dort (eventuell unbeabischtigt) beim Erstellen / Ändern Deine
Delphi-Quellcode:
etwas verändert?
prozedure neu;
|
AW: Komponenten in Prozedur nicht erkannt
Hallo,
noch mal zur Unit Form1.
Delphi-Quellcode:
var
Form1: TForm1; // das hast du wohl rausgeworfen implementation |
AW: Komponenten in Prozedur nicht erkannt
Delphi-Quellcode:
ist das "end;" vielleicht an der falschen stelle?...ohne funktioniert es jedenfalls nicht
unit Unit1;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids, StdCtrls, ExtCtrls, Menus, Buttons, ActnList, test; type { TForm1 } TForm1 = class(TForm) BitBtn_c: TBitBtn; BitBtn10: TBitBtn; BitBtn9: TBitBtn; BitBtn_d: TBitBtn; BitBtn_v: TBitBtn; BitBtn_fh: TBitBtn; BitBtn_ks: TBitBtn; BitBtn_gs: TBitBtn; BitBtn_k: TBitBtn; BitBtn_eins: TBitBtn; BitBtn_zwei: TBitBtn; BitBtn_drei: TBitBtn; BitBtn_vier: TBitBtn; BitBtn_fuenf: TBitBtn; BitBtn_sechs: TBitBtn; BitBtn_Versuche: TBitBtn; BitBtn2: TBitBtn; CheckBox1: TCheckBox; CheckBox2: TCheckBox; CheckBox3: TCheckBox; CheckBox4: TCheckBox; CheckBox5: TCheckBox; Edit_d: TEdit; Edit_v: TEdit; Edit_fh: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; GroupBox1: TGroupBox; Image1: TImage; Image2: TImage; Image3: TImage; Image4: TImage; Image5: TImage; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; MainMenu1: TMainMenu; MenuItem1: TMenuItem; MenuItem10: TMenuItem; MenuItem11: TMenuItem; MenuItem12: TMenuItem; MenuItem13: TMenuItem; MenuItem14: TMenuItem; MenuItem15: TMenuItem; MenuItem2: TMenuItem; MenuItem3: TMenuItem; MenuItem4: TMenuItem; MenuItem5: TMenuItem; MenuItem6: TMenuItem; MenuItem7: TMenuItem; MenuItem8: TMenuItem; MenuItem9: TMenuItem; Panel1: TPanel; StringGrid1: TStringGrid; procedure BitBtn10Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure BitBtn9Click(Sender: TObject); procedure BitBtn_dClick(Sender: TObject); procedure BitBtn_VersucheClick(Sender: TObject); procedure FormCreate(Sender: TObject); private procedure Neu; public var Form1: TForm1; end; |
AW: Komponenten in Prozedur nicht erkannt
Das ist so niemals vollständig.
Am Ende einer Unit müsste eigentlich ein
Delphi-Quellcode:
stehen.
end.
Es fehlt die komplette Implementierung, also alles ab dem
Delphi-Quellcode:
welches unter dem
implementation
Delphi-Quellcode:
stehen muss.
Form1: TForm1;
Hast Du die vollständige Unit1 gespostete? Wenn nein, dann hole das bitte nach, es ist so unmöglich einen Fehler zu finden. Ist es die vollständige Unit? Dann wurde da was ganz massiv versemmelt, weil der wesentliche Implementierungsteil fehlt und damit ein Kompilieren dieses Quelltextes kaum gelingen dürfte. |
AW: Komponenten in Prozedur nicht erkannt
Delphi-Quellcode:
Das wär mir schon aufgefallen:)
unit Unit1;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids, StdCtrls, ExtCtrls, Menus, Buttons, ActnList, test; type { TForm1 } TForm1 = class(TForm) BitBtn_c: TBitBtn; BitBtn10: TBitBtn; BitBtn9: TBitBtn; BitBtn_d: TBitBtn; BitBtn_v: TBitBtn; BitBtn_fh: TBitBtn; BitBtn_ks: TBitBtn; BitBtn_gs: TBitBtn; BitBtn_k: TBitBtn; BitBtn_eins: TBitBtn; BitBtn_zwei: TBitBtn; BitBtn_drei: TBitBtn; BitBtn_vier: TBitBtn; BitBtn_fuenf: TBitBtn; BitBtn_sechs: TBitBtn; BitBtn_Versuche: TBitBtn; BitBtn2: TBitBtn; CheckBox1: TCheckBox; CheckBox2: TCheckBox; CheckBox3: TCheckBox; CheckBox4: TCheckBox; CheckBox5: TCheckBox; Edit_d: TEdit; Edit_v: TEdit; Edit_fh: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; GroupBox1: TGroupBox; Image1: TImage; Image2: TImage; Image3: TImage; Image4: TImage; Image5: TImage; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; MainMenu1: TMainMenu; MenuItem1: TMenuItem; MenuItem10: TMenuItem; MenuItem11: TMenuItem; MenuItem12: TMenuItem; MenuItem13: TMenuItem; MenuItem14: TMenuItem; MenuItem15: TMenuItem; MenuItem2: TMenuItem; MenuItem3: TMenuItem; MenuItem4: TMenuItem; MenuItem5: TMenuItem; MenuItem6: TMenuItem; MenuItem7: TMenuItem; MenuItem8: TMenuItem; MenuItem9: TMenuItem; Panel1: TPanel; StringGrid1: TStringGrid; procedure BitBtn10Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure BitBtn9Click(Sender: TObject); procedure BitBtn_dClick(Sender: TObject); procedure BitBtn_VersucheClick(Sender: TObject); procedure FormCreate(Sender: TObject); private procedure Neu; public var Form1: TForm1; end; implementation {$R *.lfm} { TForm1 } var Spieler,Versuche,Runde,Schritt: Integer; SpielerA,SpielerB,SpielerC:record eins,zwei,drei,vier,fuenf,sechs,d,v,fh,ks,gs,k,c:boolean; end; Wuerfel:array [1..5]of Integer; function Wurf:Integer; begin Wurf:=Random(6)+1; end; //Neue Runde procedure TForm1.Neu; begin Schritt:=1; Spieler:=Spieler+1; if Spieler>3 then begin Spieler:=Spieler-3; Runde:=Runde+1; end; if Runde>13 then Abort//ShowMessage:='Spiel beendet' else begin if Spieler=1 then begin BitBtn_eins.visible:=SpielerA.eins; BitBtn_zwei.visible:=SpielerA.Zwei; BitBtn_drei.visible:=SpielerA.drei; BitBtn_vier.visible:=SpielerA.vier; BitBtn_fuenf.visible:=SpielerA.fuenf; BitBtn_sechs.visible:=SpielerA.sechs; BitBtn_d.visible:=SpielerA.d; BitBtn_v.visible:=SpielerA.v; BitBtn_fh.visible:=SpielerA.fh; BitBtn_ks.visible:=SpielerA.ks; BitBtn_gs.visible:=SpielerA.gs; BitBtn_k.visible:=SpielerA.k; BitBtn_c.visible:=SpielerA.c; end; if Spieler=2 then begin BitBtn_eins.visible:=Spielerb.eins; BitBtn_zwei.visible:=Spielerb.Zwei; BitBtn_drei.visible:=Spielerb.drei; BitBtn_vier.visible:=Spielerb.vier; BitBtn_fuenf.visible:=Spielerb.fuenf; BitBtn_sechs.visible:=Spielerb.sechs; BitBtn_d.visible:=Spielerb.d; BitBtn_v.visible:=Spielerb.v; BitBtn_fh.visible:=Spielerb.fh; BitBtn_ks.visible:=Spielerb.ks; BitBtn_gs.visible:=Spielerb.gs; BitBtn_k.visible:=Spielerb.k; BitBtn_c.visible:=Spielerb.c; end; if Spieler=3 then begin BitBtn_eins.visible:=Spielerc.eins; BitBtn_zwei.visible:=Spielerc.Zwei; BitBtn_drei.visible:=Spielerc.drei; BitBtn_vier.visible:=Spielerc.vier; BitBtn_fuenf.visible:=Spielerc.fuenf; BitBtn_sechs.visible:=Spielerc.sechs; BitBtn_d.visible:=Spielerc.d; BitBtn_v.visible:=Spielerc.v; BitBtn_fh.visible:=Spielerc.fh; BitBtn_ks.visible:=Spielerc.ks; BitBtn_gs.visible:=Spielerc.gs; BitBtn_k.visible:=Spielerc.k; BitBtn_c.visible:=Spielerc.c; end; Versuche:=3; BitBtn_Versuche.caption:='3'; BitBtn_Versuche.Visible:=true; Checkbox1.caption:=''; Checkbox2.caption:=''; Checkbox3.caption:=''; Checkbox4.caption:=''; Checkbox5.caption:=''; end; end; //Start procedure TForm1.FormCreate(Sender: TObject); begin Versuche:=3; Spieler:=1; Runde:=1; with spielerA do begin eins:=true; zwei:=true; drei:=true; vier:=true; fuenf:=true; sechs:=true; d:=true; v:=true; fh:=true; ks:=true; gs:=true; k:=true; c:=true; end; with spielerb do begin eins:=true; zwei:=true; drei:=true; vier:=true; fuenf:=true; sechs:=true; d:=true; v:=true; fh:=true; ks:=true; gs:=true; k:=true; c:=true; end; with spielerc do begin eins:=true; zwei:=true; drei:=true; vier:=true; fuenf:=true; sechs:=true; d:=true; v:=true; fh:=true; ks:=true; gs:=true; k:=true; c:=true; end; Versuche:=3; BitBtn_Versuche.caption:='3'; BitBtn_Versuche.Visible:=true; Checkbox1.caption:=''; Checkbox2.caption:=''; Checkbox3.caption:=''; Checkbox4.caption:=''; Checkbox5.caption:=''; end; procedure TForm1.BitBtn10Click(Sender: TObject); begin FormCreate(Sender); end; //Würfeln procedure TForm1.BitBtn_VersucheClick(Sender: TObject); begin if Checkbox1.State=cbchecked then begin Wuerfel[1]:=Wurf; Checkbox1.caption:=IntToStr(Wuerfel[1]); {Image1.Picture.LoadfromFile;} end; if Checkbox2.State=cbchecked then begin Wuerfel[2]:=Wurf; Checkbox2.caption:=IntToStr(Wuerfel[2]); end; if Checkbox3.State=cbchecked then begin Wuerfel[3]:=Wurf; Checkbox3.caption:=IntToStr(Wuerfel[3]); end; if Checkbox4.State=cbchecked then begin Wuerfel[4]:=Wurf; Checkbox4.caption:=IntToStr(Wuerfel[4]); end; if Checkbox5.State=cbchecked then begin Wuerfel[5]:=Wurf; Checkbox5.caption:=IntToStr(Wuerfel[5]); end; Versuche:=Versuche-1; BitBtn_Versuche.caption:=IntToStr(Versuche); If Versuche<1 then begin BitBtn_Versuche.Visible:=false; Schritt:=2; end; end; // Wahrscheinlichkeit procedure TForm1.BitBtn9Click(Sender: TObject); begin //Berechnung der Wahrscheinlichkeit für das erzielen der erforderten Folge {Edit_d.text:=FloatToStr((nd/x)*w); Edit_.text:=FloatToStr((nv/x)*w); Edit_.text:=FloatToStr((nfh/x)*w); Edit_.text:=FloatToStr((nks/x)*w); Edit_.text:=FloatToStr((ngs/x)*w); Edit_.text:=FloatToStr((nk/x)*w);} end; procedure TForm1.BitBtn2Click(Sender: TObject); begin close; end; //Eintragen procedure TForm1.BitBtn_dClick(Sender: TObject); var dr:boolean; p:integer; begin if Schritt=2 then begin {ueberpruefen(Wuerfel);} sort(Wuerfel); if Wuerfel[1]=Wuerfel[2] {and W[1]=W[3]} then if Wuerfel[1]=Wuerfel[3] then dr:=true else dr:=false; if Wuerfel[2]=Wuerfel[3]then if Wuerfel[2]=Wuerfel[4] then dr:=true else dr:=false; if Wuerfel[3]=Wuerfel[4]then if Wuerfel[3]=Wuerfel[5] then dr:=true else dr:=false; if dr=true then p:=25 else {showmessage} p:=0; StringGrid1.Cells[Spieler,8]:=IntToStr(p); if Spieler=1 then SpielerA.d:=false; if Spieler=2 then SpielerB.d:=false; if Spieler=3 then SpielerC.d:=false; neu; end; end; end. dachte nur der Rest wäre nicht so wichtig, ist ja nicht gerade wenig |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz