Autor |
Beitrag |
xsus
      
Beiträge: 51
Win 2000, Win XP, Win 7; Ubuntu
Delphi 7, Delphi XE2, C
|
Verfasst: Mi 14.12.11 19:24
Hey,
ich habe ein kleines Spiel geschrieben, die Auswahl der Level macht mir im moment Probleme..
Ich erhalte immer eine Fehlermeldung das eine Zugriffsverletzung vorliegt und der Debugger spuckt aus,
dass iwas mit Treads nicht passt.
Erstmal der Quellcode:
Form1, Hauptseite:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88:
| unit Unit1;
interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, mmSystem, mSchwein, mSpielfeld, Vcl.Buttons, Unit2;
type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button4Click(Sender: TObject); private public end;
var Form1: TForm1; Spielfeld: TSpielfeld;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin randomize; Form2.Schw; Spielfeld:=TSpielfeld.Create; Spielfeld.InitSpiel end;
procedure TForm1.Button1Click(Sender: TObject); begin try Spielfeld.SetzeX(StrToInt(Form1.Edit1.Text)); Spielfeld.SetzeY(StrToInt(Form1.Edit2.Text)); Spielfeld.GibEditGefangen; if Spielfeld.GibEditGefangen=true then if Form2.RadioButton1.Checked=True then begin sndPlaySound('win.wav',SND_ASYNC); showmessage('Du hast Edit gefangen! Gewonnen!') end else showmessage('Du hast Edit gefangen! Gewonnen!') else if Form2.RadioButton1.Checked=True then begin sndPlaySound('fail.wav',SND_ASYNC); showmessage ('Du hast Edit nicht gefangen! Sorry!') end else showmessage ('Du hast Edit nicht gefangen! Sorry!') except on EConvertError do showmessage('Du musst schon eine Zahl eingeben, damit es funktioniert!') end; end;
procedure TForm1.Button2Click(Sender: TObject); begin Form2.Schw; Spielfeld.Create; Spielfeld.InitSpiel; Edit1.Text:=('x-Koordinate'); Edit2.Text:=('y-Koordinate') end;
procedure TForm1.Button3Click(Sender: TObject); begin close end;
procedure TForm1.Button4Click(Sender: TObject); begin Form2.Show end;
end. |
Form2, Einstellungsseite
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75:
| unit Unit2;
interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.Imaging.pngimage, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.Imaging.GIFImg, mSchwein;
type TForm2 = class(TForm) PageControl1: TPageControl; Audio: TTabSheet; Schwierigkeit: TTabSheet; Button1: TButton; RadioButton1: TRadioButton; RadioButton2: TRadioButton; Image1: TImage; Image2: TImage; RadioButton3: TRadioButton; RadioButton4: TRadioButton; RadioButton5: TRadioButton; RadioButton6: TRadioButton; Image3: TImage; procedure Button1Click(Sender: TObject); procedure RadioButton2Click(Sender: TObject); procedure RadioButton1Click(Sender: TObject); procedure Schw;
private public end;
var Form2: TForm2; Schwein : TSchwein;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject); begin Form2.Hide end;
procedure TForm2.RadioButton1Click(Sender: TObject); begin RadioButton2.Checked:=false; Image1.Visible:=true; Image2.Visible:=false end;
procedure TForm2.RadioButton2Click(Sender: TObject); begin RadioButton1.Checked:=false; Image1.Visible:=false; Image2.Visible:=true end;
procedure TForm2.Schw; begin if RadioButton3.Checked=true then Schwein.SetzeA(1); if RadioButton4.Checked=true then Schwein.SetzeA(2); if RadioButton5.Checked=true then Schwein.SetzeA(3); if RadioButton6.Checked=true then Schwein.SetzeA(4) end;
end. |
Unit Schwein:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60:
| UNIT mSchwein;
interface
type TSchwein = class
private x : Byte; y : Byte; a : Byte;
public constructor Create; virtual; function GibX : Byte; virtual; function GibY : Byte; virtual; function GibA : Byte; virtual; procedure SetzeA (pA:Byte); virtual;
end;
implementation
constructor TSchwein.Create; begin x:=(random(GibA))+1; y:=(random(GibA))+1 end;
function TSchwein.GibX : Byte; begin result := x end;
function TSchwein.GibY : Byte; begin result := y end;
function TSchwein.GibA : Byte; begin result := a end;
procedure TSchwein.SetzeA (pA:Byte); begin a:= pA end;
end. |
Unit Spielfeld:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59:
| UNIT mSpielfeld;
interface
uses mSchwein;
type TSpielfeld = class
private EditGefangen : Boolean; x : Byte; y : Byte; Sau : TSchwein;
public procedure InitSpiel; virtual; procedure SetzeX (pX: Byte); virtual; procedure SetzeY (pY: Byte); virtual; function GibEditGefangen : Boolean; virtual; end;
implementation
procedure TSpielfeld.InitSpiel; begin Sau:=TSchwein.Create; EditGefangen:=false end;
procedure TSpielfeld.SetzeX (pX: Byte); begin x := pX end;
procedure TSpielfeld.SetzeY (pY: Byte); begin y := pY end;
function TSpielfeld.GibEditGefangen : Boolean; begin if ((x=Sau.GibX) and (y=Sau.GibY)) then EditGefangen:=true else EditGefangen:=false; result := EditGefangen end;
end. |
Der Fehler betrifft die Level-Auswahl , also Form2.Schw sowie TSchwein.SetzeA und damit indirekt auch das Schwein selbst...meine Vermutung...die Koordinaten werden dem Schwein zugewiesen obwohl das Schwein noch nicht existiert bzw. das Schwein ist einfach nicht bekannt...ich weiß nur nicht wie ichs ändere...LG :) Moderiert von Th69: Topic aus Open Source Projekte verschoben am Mi 14.12.2011 um 18:59Moderiert von Narses: Topic aus Sonstiges (Delphi) verschoben am Mi 14.12.2011 um 21:44
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mi 14.12.11 19:41
So wie ich das sehe ist es ein ganz klassischer Fall:
Du erzeugst dein Objekt nicht und kannst entsprechend nicht drauf zugreifen:
xsus hat folgendes geschrieben : | Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| var Form2: TForm2; Schwein : TSchwein;
[...]
procedure TForm2.Schw; begin if RadioButton3.Checked=true then Schwein.SetzeA(1); if RadioButton4.Checked=true then Schwein.SetzeA(2); if RadioButton5.Checked=true then Schwein.SetzeA(3); if RadioButton6.Checked=true then Schwein.SetzeA(4) end; | |
Tip: Breakpoints helfen
PS: Die Einrückung in TForm2.Schw ist total irreführend 
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Für diesen Beitrag haben gedankt: xsus
|
|
xsus 
      
Beiträge: 51
Win 2000, Win XP, Win 7; Ubuntu
Delphi 7, Delphi XE2, C
|
Verfasst: Mi 14.12.11 19:58
Mein Objekt erzeug ich ja schon..nur nicht an der stelle..das schwein..es muss ja das selbe sein, wenn ich es hier neu erstelle...dann hab ich doch noch eins..und das andre kann ich doch damit auch net verändern oder?!...und die breakpoints..da hat er überall nen häckchen gemacht...*verwirrt* 
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mi 14.12.11 21:20
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Für diesen Beitrag haben gedankt: xsus
|
|
xsus 
      
Beiträge: 51
Win 2000, Win XP, Win 7; Ubuntu
Delphi 7, Delphi XE2, C
|
Verfasst: Do 15.12.11 07:37
So..ich habe jetzt die Sau in der Unit mSchwein public gemacht...und in der Unit2 siehts wiefolgt aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| var Form2: TForm2; Spielfeld: TSpielfeld; . . . procedure TForm2.Schw; begin if RadioButton3.Checked=true then Spielfeld.Sau.SetzeA(1); if RadioButton4.Checked=true then Spielfeld.Sau.SetzeA(2); if RadioButton5.Checked=true then Spielfeld.Sau.SetzeA(3); if RadioButton6.Checked=true then Spielfeld.Sau.SetzeA(4); end; |
Jetzt müsste das doch funzen?..tut es aber nicht! ._. *zu blöd bin*
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Do 15.12.11 08:22
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Für diesen Beitrag haben gedankt: xsus
|
|
xsus 
      
Beiträge: 51
Win 2000, Win XP, Win 7; Ubuntu
Delphi 7, Delphi XE2, C
|
Verfasst: Do 15.12.11 15:26
Okee...wiefolgt abgeändert:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.FormCreate(Sender: TObject); begin randomize; Spielfeld:=TSpielfeld.Create; Spielfeld.InitSpiel; Form2.Schw; end;
procedure TForm1.Button2Click(Sender: TObject); begin Spielfeld.Create; Spielfeld.InitSpiel; Form2.Schw; Edit1.Text:=('x-Koordinate'); Edit2.Text:=('y-Koordinate') end; |
Iwas stimmt aber immernoch nich 
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Do 15.12.11 19:03
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Für diesen Beitrag haben gedankt: xsus
|
|
xsus 
      
Beiträge: 51
Win 2000, Win XP, Win 7; Ubuntu
Delphi 7, Delphi XE2, C
|
Verfasst: Do 15.12.11 20:08
Stimmt..das mit dem Spielfeld.Create ist mir jetzt auch schleierhaft..
Button2Click ist ein Button um ein neues Spiel zu beginnen..wenn entweder das eine Gewonnen ist oder so..
Der ist also durchaus so gewollt (hätt ich natürlich eher sagen können^^)..
Der Fehler der auftaucht ist immernoch der gleiche:
Zitat: | Zugriffsverletzung bei Adresse 00549326 in Modul "Edit.exe". Lesen von Adresse 000003B0. |
Danke erstmal für die bisherigen Bemühungen! 
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Fr 16.12.11 00:59
Poste bitte nochmal deine Unit2, da sollte sich ja einiges geändert haben. Dann gucke ich nochmal drüber 
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Für diesen Beitrag haben gedankt: xsus
|
|
xsus 
      
Beiträge: 51
Win 2000, Win XP, Win 7; Ubuntu
Delphi 7, Delphi XE2, C
|
Verfasst: Fr 16.12.11 07:22
Unit 2 alleine hat sich ja nicht soo viel geändert...ich poste fix noch mal alles^^
Unit1:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87:
| unit Unit1;
interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, mmSystem, mSchwein, mSpielfeld, Vcl.Buttons, Unit2;
type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button4Click(Sender: TObject); private public end;
var Form1: TForm1; Spielfeld: TSpielfeld;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin randomize; Spielfeld:=TSpielfeld.Create; Spielfeld.InitSpiel; Form2.Schw; end;
procedure TForm1.Button1Click(Sender: TObject); begin try Spielfeld.SetzeX(StrToInt(Form1.Edit1.Text)); Spielfeld.SetzeY(StrToInt(Form1.Edit2.Text)); Spielfeld.GibEditGefangen; if Spielfeld.GibEditGefangen=true then if Form2.RadioButton1.Checked=True then begin sndPlaySound('win.wav',SND_ASYNC); showmessage('Du hast Edit gefangen! Gewonnen!') end else showmessage('Du hast Edit gefangen! Gewonnen!') else if Form2.RadioButton1.Checked=True then begin sndPlaySound('fail.wav',SND_ASYNC); showmessage ('Du hast Edit nicht gefangen! Sorry!') end else showmessage ('Du hast Edit nicht gefangen! Sorry!') except on EConvertError do showmessage('Du musst schon eine Zahl eingeben, damit es funktioniert!') end; end;
procedure TForm1.Button2Click(Sender: TObject); begin Spielfeld.InitSpiel; Form2.Schw; Edit1.Text:=('x-Koordinate'); Edit2.Text:=('y-Koordinate') end;
procedure TForm1.Button3Click(Sender: TObject); begin close end;
procedure TForm1.Button4Click(Sender: TObject); begin Form2.Show end;
end. |
Unit2:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75:
| unit Unit2;
interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.Imaging.pngimage, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.Imaging.GIFImg, mSchwein, mSpielfeld;
type TForm2 = class(TForm) PageControl1: TPageControl; Audio: TTabSheet; Schwierigkeit: TTabSheet; Button1: TButton; RadioButton1: TRadioButton; RadioButton2: TRadioButton; Image1: TImage; Image2: TImage; RadioButton3: TRadioButton; RadioButton4: TRadioButton; RadioButton5: TRadioButton; RadioButton6: TRadioButton; Image3: TImage; procedure Button1Click(Sender: TObject); procedure RadioButton2Click(Sender: TObject); procedure RadioButton1Click(Sender: TObject); procedure Schw;
private public end;
var Form2: TForm2; Spielfeld: TSpielfeld;
implementation
{$R *.dfm}
procedure TForm2.Schw; begin if RadioButton3.Checked=true then Spielfeld.Sau.SetzeA(1); if RadioButton4.Checked=true then Spielfeld.Sau.SetzeA(2); if RadioButton5.Checked=true then Spielfeld.Sau.SetzeA(3); if RadioButton6.Checked=true then Spielfeld.Sau.SetzeA(4); end;
procedure TForm2.Button1Click(Sender: TObject); begin Form2.Hide end;
procedure TForm2.RadioButton1Click(Sender: TObject); begin RadioButton2.Checked:=false; Image1.Visible:=true; Image2.Visible:=false end;
procedure TForm2.RadioButton2Click(Sender: TObject); begin RadioButton1.Checked:=false; Image1.Visible:=false; Image2.Visible:=true end;
end. |
mSchwein:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60:
| UNIT mSchwein;
interface
type TSchwein = class
private x : Byte; y : Byte; a : Byte;
public constructor Create; virtual; function GibX : Byte; virtual; function GibY : Byte; virtual; function GibA : Byte; virtual; procedure SetzeA (pA:Byte); virtual;
end;
implementation
constructor TSchwein.Create; begin x:=(random(GibA))+1; y:=(random(GibA))+1 end;
function TSchwein.GibX : Byte; begin result := x end;
function TSchwein.GibY : Byte; begin result := y end;
function TSchwein.GibA : Byte; begin result := a end;
procedure TSchwein.SetzeA (pA:Byte); begin a:= pA end;
end. |
mSpielfeld:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61:
| UNIT mSpielfeld;
interface
uses mSchwein;
type TSpielfeld = class
private EditGefangen : Boolean; x : Byte; y : Byte;
public Sau : TSchwein; procedure InitSpiel; virtual; procedure SetzeX (pX: Byte); virtual; procedure SetzeY (pY: Byte); virtual; function GibEditGefangen : Boolean; virtual;
end;
implementation
procedure TSpielfeld.InitSpiel; begin Sau:=TSchwein.Create; EditGefangen:=false end;
procedure TSpielfeld.SetzeX (pX: Byte); begin x := pX end;
procedure TSpielfeld.SetzeY (pY: Byte); begin y := pY end;
function TSpielfeld.GibEditGefangen : Boolean; begin if ((x=Sau.GibX) and (y=Sau.GibY)) then EditGefangen:=true else EditGefangen:=false; result := EditGefangen end;
end. |
Es ist halt immernoch der gleiche Fehler, der schon von Anfang an auftrat ._.
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Fr 16.12.11 16:34
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Für diesen Beitrag haben gedankt: xsus
|
|
xsus 
      
Beiträge: 51
Win 2000, Win XP, Win 7; Ubuntu
Delphi 7, Delphi XE2, C
|
Verfasst: Fr 16.12.11 17:08
Zu deiner Frage..ich bin Schüler und wir sind vor kurzem zum OOP übergegangen..vorher lief noch alles super..aktuell tu ich mich nen bisschen schwer, wie man merkt
Hab das geändert...Fehler kommt am Programmstart immernoch und zwars, wenn in Unit1 Form2.Schw ausgeführt wird..
Ich glaub ich habe auch den Fehler schon entdeckt (die Lösung ist dann aber noch weit weg^^)..ich Erstelle das Schwein, mit zufallswerten aus einem Bereich von XX..und der wird ja erst in Form2.Schw definiert oder? Dh. er bekommt die Werte nicht, die er braucht, richtig?..und würde ich es einfach tauschen..dann würde das Schwein noch nicht existieren und ich erhalt auch nur Fehler^^
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Fr 16.12.11 18:05
Die Werte, die du im Constructor von TSchwein benutzt, sind alle 0. random(0) gibt keinen Fehler (auch wenn es nicht viel Sinn macht). Du kannst ja mal statt "GibA" einfach a reinschreiben (ist ja das selbe), aber ich glaube nicht dass das deswegen einen Fehler gibt.
Du kannst mir auch mal das ganze Projekt schicken (z.B. als PN), dann kann ichs selbst mal compilieren und mit Breakpoints gucken. ich glaub das wäre schneller als hier rumzuraten 
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Für diesen Beitrag haben gedankt: xsus
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Fr 16.12.11 21:52
Ah, ok, da wäre ich niemals drauf gekommen:
Du rufst im constructor von Form1 (OnCreate) Form2.Schw auf. Du willst dort auf RadioButton3 zugreifen, aber Form2 (und alles darauf) ist zu diesem Moment noch nicht erzeugt worden (Es wird zuerst Form1 und dann Form2 erzeugt). Unter D2005 kommst du zu dem Code mit F8 hin. Dort steht:
Delphi-Quelltext 1: 2:
| Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2); |
Vertauschst du diese beiden Befehle, läuft es. Alternativ kannst du Form2.Schw aus Form1.OnCreate entfernen oder gleich statt OnCreate OnShow benutzen.
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
xsus 
      
Beiträge: 51
Win 2000, Win XP, Win 7; Ubuntu
Delphi 7, Delphi XE2, C
|
Verfasst: Mo 19.12.11 20:58
Vielen Dank...
funktioniert alles Wunderbar 
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 20.12.11 10:20
|
|
|