Erstmal hoffe ich, dass ich hier in der Rubrk richtig bin.
Ich habe 3 Jahre nicht mehr programmiert und woltle mal wieder etwas ganz kleines programmieren.
Alles läuft gut, doch dann wollte ich lediglich close ausführen und mir wirft es einen e-stack overflow vor die Tür. Habe schon probiert den stack zu vergößern, hat ncht geholfen. Dürfte auch nix rekursives im Text haben. vielleicht könt ihr mir ja helfen.
Bei dem Programm sol les sich lediglich um einen Chargenerator handeln für ein PnP.
Natürlich ist einiges unschön programmiert und auch da bin ich für tips dankbar, aber hauptsächlch geht es darum den
exception auszumerzen, der geworfen wird, wenn ich die Hauptform mit close; schließe.
Unit1
Delphi-Quellcode:
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.visible := false;
form2.visible := true;
end;
procedure TForm1.ProgrammBeenden1Click(Sender: TObject);
begin
close;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
close;
end;
procedure TForm1.neuenCharakererstellen1Click(Sender: TObject);
begin
form1.visible := false;
form2.visible := true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;
end.
Unit2
Delphi-Quellcode:
var
Form2: TForm2;
nuyen, lebensstil, gpgeld : integer;
implementation
uses Unit3, Unit4, Unit1;
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
form3.visible := true;
nuyen := nuyen + Lebensstil;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
nuyen := 0
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
form4.visible := true;
Nuyen := Nuyen - gpgeld * 5000;
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
close;
end;
Unit3
Delphi-Quellcode:
var
Form3: TForm3;
Metatyp, Name, alter, stil, geschlecht, klasse: string;
Genpunkte, kosten, temp : integer;
implementation
uses Unit2, Unit1, Unit5;
{$R *.dfm}
procedure TForm3.FormCreate(Sender: TObject);
begin
ComboBox1.Items.Add('Mensch');
ComboBox1.Items.Add('Zwerg');
ComboBox1.Items.Add('Elf');
ComboBox1.Items.Add('Ork');
ComboBox1.Items.Add('Troll');
ComboBox2.Items.Add('männlich');
ComboBox2.Items.Add('weiblich');
ComboBox3.Items.Add('Luxus');
ComboBox3.Items.Add('Oberschicht');
ComboBox3.Items.Add('Mittelschicht');
ComboBox3.Items.Add('Unterschicht');
ComboBox3.Items.Add('Squatter');
ComboBox3.Items.Add('Auf der Strasse');
ComboBox4.Items.Add('Keine');
ComboBox4.Items.Add('Adept');
ComboBox4.Items.Add('Magieradept');
ComboBox4.Items.Add('Magier');
ComboBox4.Items.Add('Technomancer');
kosten := 0;
temp := 0;
Genpunkte := 0;
end;
procedure TForm3.ComboBox1Change(Sender: TObject);
begin
case combobox1.ItemIndex of
0: begin
Metatyp := 'Mensch';
kosten := 0;
end;
1: begin
Metatyp := 'Zwerg';
kosten := 50;
end;
2: begin
Metatyp := 'Elf';
kosten := 50;
end;
3: begin
Metatyp := 'Ork';
kosten := 75;
end;
4: begin
Metatyp := 'Troll';
kosten := 155;
end;
end;
end;
procedure TForm3.Button2Click(Sender: TObject);
begin
Name := edit1.Text;
Alter := edit2.text;
Genpunkte := strtoint(edit3.text);
form2.panel2.caption := Metatyp;
form2.panel12.caption := klasse;
form2.panel1.caption := Name;
form2.panel3.caption := alter;
form2.panel11.caption := inttostr(Genpunkte - kosten - temp) + ' von ' + inttostr(Genpunkte);
form2.label12.caption := inttostr(kosten) + 'GP';
form2.label15.caption := inttostr(temp) + 'GP';
nuyen := nuyen - Lebensstil;
form2.panel13.caption := inttostr(nuyen);
form2.Panel5.caption := stil;
form3.visible := false;
form2.panel4.caption := geschlecht;
end;
procedure TForm3.ComboBox2Change(Sender: TObject);
begin
case combobox2.ItemIndex of
0: begin
Geschlecht := 'männlich';
end;
1: begin
Geschlecht := 'weiblich';
end;
end;
end;
procedure TForm3.ComboBox3Change(Sender: TObject);
begin
case combobox3.ItemIndex of
0: begin
stil := 'Luxus';
Lebensstil := 100000;
end;
1: begin
stil := 'Oberschicht';
Lebensstil := 10000;
end;
2: begin
stil := 'Mittelschicht';
Lebensstil := 5000;
end;
3: begin
stil := 'Unterschicht';
Lebensstil := 2000;
end;
4: begin
stil := 'Squatter';
Lebensstil := 500;
end;
5: begin
stil := 'Auf der Straße';
Lebensstil := 0;
end;
end;
end;
procedure TForm3.ComboBox4Change(Sender: TObject);
begin
case combobox4.ItemIndex of
0: begin
klasse := 'Keine';
temp := 0;
end;
1: begin
klasse := 'Adept';
temp := 20;
end;
2: begin
klasse := 'Magieradept';
temp := 30;
end;
3: begin
klasse := 'Magier';
temp := 40;
end;
4: begin
klasse := 'Technomancer';
temp := 20;
end;
end;
end;
procedure TForm3.Button1Click(Sender: TObject);
begin
form5.memo1.clear;
case combobox1.ItemIndex of
0: begin
form5.memo1.Lines.add('Metatyp: Mensch (Homo sapiens sapiens)');
form5.memo1.Lines.add('');
form5.memo1.Lines.add('GP Kosten: 0');
form5.memo1.Lines.add('');
form5.memo1.lines.add('Beschreibung: Menschen bilden noch immer eine leichte Mehrheit der durchschnittlichen Weltbevölkerung. Die meisten sind 1,75m groß und wiegen knapp 80kg. Sechzig Jahre' + 'nach dem Erwachen werden die Menschen von Laien und wissenschaftlichen Organisationen noch immer als "Die Norm" betrachtet und sind üblicherweise die' + 'Messlatte, mit der die anderen Metatypen verglichen werden');
form5.memo1.Lines.add('');
form5.memo1.Lines.add('Fähigkeiten: Edge +1');
end;
1: begin
form5.memo1.Lines.add('Metatyp: Zwerg (Homo sapiens pumilionis)');
form5.memo1.Lines.add('');
form5.memo1.Lines.add('GP Kosten: 50');
form5.memo1.Lines.add('');
form5.memo1.lines.add('Beschreibung: Durchschnittsgröße: 1,20m Durchschnittsgewicht: 54kg durchschnittliche Lebenserwartung über 100 Jahre');
form5.memo1.Lines.add('');
form5.memo1.Lines.add('Fähigkeiten: Infrarotsicht, +2 Würfel für Konstitutionsproben gegen Pathogene und Toxine, Konstitution +1, Reaktionsmaximum -1, Stärk +2, Willenskraft +1');
end;
2: begin
form5.memo1.Lines.add('Metatyp: Elf (Homo sapiens nobilis)');
form5.memo1.Lines.add('');
form5.memo1.Lines.add('GP Kosten: 50');
form5.memo1.Lines.add('');
form5.memo1.lines.add('Beschreibung: Durchschnittsgröße: 1,90m Durchschnittsgewicht: 80kg durchschnittliche Lebenserwartung: mehrere hundert Jahre');
form5.memo1.Lines.add('');
form5.memo1.Lines.add('Fähigkeiten: Restlichtverstärkung, +1 Geschicklichkeit, +2 Charisma');
end;
3: begin
form5.memo1.Lines.add('Metatyp: Ork (Homo sapiens robustus)');
form5.memo1.Lines.add('');
form5.memo1.Lines.add('GP Kosten: 75');
form5.memo1.Lines.add('');
form5.memo1.lines.add('Beschreibung: Durchschnittsgröße: 1,90m Durchschnittsgewicht: 128kg durchschnittliche Lebenserwartung: 35-45 Jahre');
form5.memo1.Lines.add('');
form5.memo1.Lines.add('Fähigkeiten: Restlichtverstärkung, Konstitution +3, Stärke +2, Charismagrenze -1, Logikgrenze -1');
end;
4: begin
form5.memo1.Lines.add('Metatyp: Troll (Homo sapiens ingentis)');
form5.memo1.Lines.add('');
form5.memo1.Lines.add('GP Kosten: 155');
form5.memo1.Lines.add('');
form5.memo1.lines.add('Beschreibung: Durchschnittsgröße: 2,50m Durchschnittsgewicht: 300kg durchschnittliche Lebenserwartung: 55 Jahre');
form5.memo1.Lines.add('');
form5.memo1.Lines.add('Fähigkeiten: Infrarotsicht, Nahkampfreichweite +1, Natürliche Panzerung +1 (kulmulativ mit getragener Panzerung), Konstitution +4, Geschicklichkeitsgrenze -1, Stärke +4, Charismagrenze -2, Intuitionsgrenze -1, Logikgrenze -1');
end;
end;
form5.visible := true;
end;
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
close;
end;
Unit4
Delphi-Quellcode:
var
Form4: TForm4;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm4.Button1Click(Sender: TObject);
begin
gpgeld := strtoint(edit1.text);
nuyen := nuyen + GPgeld * 5000;
form2.panel13.caption := inttostr(nuyen);
form4.Visible := false;
end;
Unit5
Delphi-Quellcode:
var
Form5: TForm5;
implementation
{$R *.dfm}
procedure TForm5.Button1Click(Sender: TObject);
begin
form5.Visible := false;
end;
Hoffe ihr habt mein Problem verstanden und könnt mir helfen
greets blue