| Autor |
Beitrag |
Xardas008
      
Beiträge: 149
Win 7 Professional x64, Ubuntu 10.04, Windows Server 2008 R2
C#, Visual Studio 2008 Pro, Visual Studio 2010 Ultimate, Eclipse (Java)
|
Verfasst: Mi 06.02.08 20:08
Hallo,
da das Projekt in mehreren Dateien organisiert ist, habe ich alles als Zip angefügt statt die entscheidenden Stellen hier reinzuschreiben.
Folgendes Problem habe ich. Ich habe ein Programm zum Verwalten von Hotels (ist eine Übungsaufgabe in der Schule) und komme nicht weiter. Wenn ich einen Gast einchecken möchte, dann soll er mir diesen aus Testzwecken direkt in Labeln wieder auf der Maske ausgeben, bevor diese im nächsten Schritt dann an die richtige Position auf der Maske platziert werden.
Wieso so umständlich? Naja ich will ja direkt nach dem erstellen des Objektes ersteinmal wissen, ob er das auch so gemacht hat wie gewünscht. Und siehe da es klappt nicht.
Er behauptet, dass er den Gast erfolgreich im Zimmer eingecheckt hat, aber er kann ihn nicht zurückgeben.
Könnte einer versuchen herauszufinden, warum dies nicht funktioniert??
Das ganze wurde in Delphi 10 Lite entwickelt.
Einloggen, um Attachments anzusehen!
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 06.02.08 20:16
Xardas008 hat folgendes geschrieben: | | da das Projekt in mehreren Dateien organisiert ist, habe ich alles als Zip angefügt statt die entscheidenden Stellen hier reinzuschreiben. |
Dass ein Projekt mehrere Dateien hat, ist der Normalfall. Soviel Code kann das ja nicht sein, und die meisten haben wahrscheinlich keine Lust, sich die Datei runterzuladen, zu entzippen und dann auch noch selber die Stellen zu suchen, die Du meinst
Xardas008 hat folgendes geschrieben: | | Das ganze wurde in Delphi 10 Lite entwickelt. |
Meinst Du Turbo Explorer?
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Xardas008 
      
Beiträge: 149
Win 7 Professional x64, Ubuntu 10.04, Windows Server 2008 R2
C#, Visual Studio 2008 Pro, Visual Studio 2010 Ultimate, Eclipse (Java)
|
Verfasst: Mi 06.02.08 20:20
Nein, die 10 Lite ist eine Abgespeckte Version vom Borland Studio 2005 (oder wars sogar 2006??) die fast genauso viel kann.
naja ok werde mal eben die Einzelnen Units eben hier reinstellen, aber um es am besten nachzuvollziehn ist die Datei vielleicht doch besser weil da auch die GUI dabei ist.
1. Maindatei
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: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135:
| unit VerwaltungHotel_Unit;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, KlasseHotel_Unit, StdCtrls, KlasseGast_Unit, ExtCtrls;
type Tfrm_Hotel = class(TForm) btn_einchecken: TButton; btn_clear: TButton; btn_Ende: TButton; grp_Neuer_Bewohner: TGroupBox; lbl_Vorname: TLabel; Label2: TLabel; Label3: TLabel; edt_Vorname: TEdit; edt_Name: TEdit; edt_Wohnort: TEdit; grp_Bewohner: TGroupBox; grp_Etage_Zimmer: TGroupBox; grp_Hinweis: TGroupBox; pnl_Zimmer1: TPanel; pnl_Zimmer2: TPanel; pnl_Zimmer3: TPanel; pnl_Zimmer4: TPanel; pnl_Zimmer5: TPanel; pnl_Zimmer6: TPanel; pnl_Zimmer7: TPanel; pnl_Zimmer8: TPanel; pnl_Zimmer9: TPanel; Shape1: TShape; Shape2: TShape; Shape3: TShape; Label1: TLabel; Label4: TLabel; Label5: TLabel; edt_Vorname_Show: TEdit; Label6: TLabel; Label7: TLabel; Label8: TLabel; edt_Nachname_Show: TEdit; edt_Wohnort_Show: TEdit; Label9: TLabel; Label10: TLabel; cmb_Etage: TComboBox; cmb_Zimmer: TComboBox; Label11: TLabel; Label12: TLabel; Label13: TLabel; procedure cmb_ZimmerChange(Sender: TObject); procedure btn_eincheckenClick(Sender: TObject); procedure btn_EndeClick(Sender: TObject); procedure FormCreate(Sender: TObject); private public end;
var frm_Hotel: Tfrm_Hotel; hotel :THotel; gast :TGast; test :BOOLEAN; implementation
{$R *.dfm}
procedure Tfrm_Hotel.btn_eincheckenClick(Sender: TObject); begin gast := TGast.Create; gast.Name := edt_Name.Text; gast.Vorname := edt_Vorname.Text; gast.Wohnort := edt_Wohnort.Text; test := Hotel.einchecken(1,1,gast); if test then Label11.Caption := 'true' else Label11.Caption := 'false'; Label12.Caption := Hotel.getZimmerBewohner(1,1).Name;
end;
procedure Tfrm_Hotel.btn_EndeClick(Sender: TObject); begin Application.Terminate; end;
procedure Tfrm_Hotel.cmb_ZimmerChange(Sender: TObject); begin try
if assigned (Hotel.getZimmerBewohner(cmb_Etage.ItemIndex+1,cmb_Zimmer.ItemIndex+1)) then begin
gast := Hotel.getZimmerBewohner(cmb_Etage.ItemIndex+1,cmb_Zimmer.ItemIndex+1);
edt_Nachname_Show.Text := gast.Name; edt_Vorname_Show.Text := gast.Vorname; edt_Wohnort_Show.Text := gast.Wohnort; end; except
edt_Nachname_Show.Text := ''; edt_Vorname_Show.Text := ''; edt_Wohnort_Show.Text := ''; end;
end;
procedure Tfrm_Hotel.FormCreate(Sender: TObject); begin Hotel := THotel.Create(); pnl_Zimmer1.Color := clLime; pnl_Zimmer2.Color := clLime; pnl_Zimmer3.Color := clLime; pnl_Zimmer4.Color := clLime; pnl_Zimmer5.Color := clLime; pnl_Zimmer6.Color := clLime; pnl_Zimmer7.Color := clLime; pnl_Zimmer8.Color := clLime; pnl_Zimmer9.Color := clLime;
end;
end. |
2. KlasseHotel_Unit
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:
| unit KlasseHotel_Unit;
interface uses KlasseEtage_Unit, KlasseGast_Unit; type THotel = class(TObject) private etage : array of TEtage; maxEtagen :INTEGER; public function stockwerkAnlegen(_etagen:INTEGER):BOOLEAN; function getEtage(_etagenNr:INTEGER):TEtage; function getZimmerBewohner(_etagenNr, _zimmerNr:INTEGER):TGast; function einchecken(_etagenNr, _zimmerNr:INTEGER; _gast:TGast):BOOLEAN; function zimmerRaeumen(_etagenNr, _zimmerNr:INTEGER):BOOLEAN; constructor Create(); end; implementation constructor THotel.Create(); begin inherited Create; setlength(etage,10); stockwerkAnlegen(10); end;
function THotel.stockwerkAnlegen(_etagen:INTEGER):BOOLEAN; var i:INTEGER; begin for i := 0 to (_etagen - 1) do begin etage[i] := TEtage.Create(9); end; result := true; end;
function THotel.getEtage(_etagenNr:INTEGER):TEtage; begin if assigned(etage[_etagenNr]) then begin result := etage[_etagenNr]; end; end;
function THotel.getZimmerBewohner(_etagenNr, _zimmerNr:INTEGER):TGast; begin if (assigned(etage[_etagenNr].getZimmer(_zimmerNr).getBewohner())) then begin result := etage[_etagenNr].getZimmer(_zimmerNr).getBewohner(); end else begin result := TGast.Create; end; end;
function THotel.einchecken(_etagenNr, _zimmerNr:INTEGER; _gast:TGast):BOOLEAN; begin result := etage[_etagenNr].getZimmer(_zimmerNr).zimmerBelegen(_gast); end;
function THotel.zimmerRaeumen(_etagenNr, _zimmerNr:INTEGER):BOOLEAN; begin etage[_etagenNr].getZimmer(_zimmerNr).zimmerRaeumen; end; end. |
|
|
Xardas008 
      
Beiträge: 149
Win 7 Professional x64, Ubuntu 10.04, Windows Server 2008 R2
C#, Visual Studio 2008 Pro, Visual Studio 2010 Ultimate, Eclipse (Java)
|
Verfasst: Mi 06.02.08 20:22
3. KlasseGast_Unit
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:
| unit KlasseGast_Unit;
interface
type TGast = class(TObject) private FName, FVorname, FWohnort :STRING; private function getName():STRING; function getVorname():STRING; function getWohnort():STRING; private procedure setName(name:STRING); procedure setVorname(_vorname:STRING); procedure setWohnort(_wohnort:STRING);
public property Name:STRING read getName write setName; property Vorname:STRING read getVorname write setVorname; property Wohnort:STRING read getWohnort write setWohnort; constructor Create;
end; implementation
constructor TGast.Create; begin inherited Create; FName := '-'; FVorname := '-'; FWohnort := '-'; end;
function TGast.getName():STRING; begin result := FName; end;
function TGast.getVorname():STRING; begin
result := FVorname;
end;
function TGast.getWohnort():STRING; begin
result := FWohnort; end;
procedure TGast.setName(name:STRING); begin FName := name; end;
procedure TGast.setVorname(_vorname: string); begin self.FVorname := _vorname; end;
procedure TGast.setWohnort(_wohnort: string); begin self.FWohnort := _wohnort; end; end. |
4. Die Etage
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:
| unit KlasseEtage_Unit;
interface
uses KlasseZimmer_Unit; type
TEtage = class(TZimmer) private raeume : array of TZimmer; maxRaeume : INTEGER;
public function getMaxRaeume() :INTEGER; function getZimmer(zimmerNr:INTEGER):TZimmer; function zimmerAnlegen(zimmer:TZimmer):BOOLEAN; constructor Create(_MaxRaeume:INTEGER); end;
implementation constructor TEtage.Create(_maxRaeume:INTEGER); var i:INTEGER; begin inherited Create; self.maxRaeume := _maxRaeume; setlength(raeume,_maxRaeume); for i := 0 to (maxRaeume - 1) do begin zimmerAnlegen(raeume[i]); end; end;
function TEtage.getMaxRaeume():INTEGER; begin result := maxRaeume; end;
function TEtage.getZimmer(zimmerNr:INTEGER):TZimmer; begin result := raeume[zimmerNr]; end;
function TEtage.zimmerAnlegen(zimmer: TZimmer):BOOLEAN; var i:INTEGER; begin
if (i MOD 2) = 0 then begin raeume[i] := TEinzelZimmer.Create(); end else begin raeume[i] := TMehrbettZimmer.Create(4); end;
end; end. |
Und zu guter letzt die Zimmer
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: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206:
| unit KlasseZimmer_Unit;
interface uses KlasseGast_Unit;
type
TZimmer = class(TObject)
protected voll:BOOLEAN; belegt:boolean; public function isVoll():BOOLEAN; function isBelegt():BOOLEAN; function zimmerBelegen(_gast:TGast):BOOLEAN;virtual; function getBewohner():TGast;virtual; function zimmerRaeumen():BOOLEAN;virtual; constructor Create(); end;
TEinzelZimmer = class(TZimmer) private bewohner :TGast; public function zimmerBelegen(_gast:TGast):BOOLEAN;override; function getBewohner():TGast;override; function zimmerRaeumen():BOOLEAN;override; constructor Create(); end;
TMehrbettZimmer = class(TZimmer) private Fbewohner :array of TGast; maxBewohner :INTEGER; help :BOOLEAN; public function zimmerBelegen(_gast:TGast):BOOLEAN;override; function getBewohner():TGast;override; function zimmerRaeumen():BOOLEAN;override; constructor Create(_maxBewohner:INTEGER); end; implementation constructor TZimmer.Create(); begin inherited Create;
end;
constructor TEinzelZimmer.Create(); begin inherited Create; end;
constructor TMehrbettZimmer.Create(_maxBewohner:INTEGER); begin inherited Create; self.maxBewohner := _maxBewohner; end; function TZimmer.isVoll():BOOLEAN; begin result := voll; end; function TZimmer.isBelegt():BOOLEAN; begin result := belegt; end;
function TZimmer.zimmerBelegen(_gast:TGast):BOOLEAN; begin end;
function TZimmer.getBewohner():TGast; begin end;
function TZimmer.zimmerRaeumen():BOOLEAN; begin end;
function TEinzelZimmer.zimmerBelegen(_gast:TGast):BOOLEAN;begin if (assigned(_gast)) then begin bewohner := TGast.Create; bewohner := _gast; voll := true; belegt := true; result := true; end else begin result := false; end;
end;
function TEinzelZimmer.getBewohner():TGast;begin result := bewohner; end;
function TEinzelZimmer.zimmerRaeumen():BOOLEAN;begin bewohner := nil; voll := false; belegt := false; result := true; end;
function TMehrbettZimmer.zimmerBelegen(_gast:TGast):BOOLEAN;var i:INTEGER; begin if help = true then begin for i := low(Fbewohner) to high(Fbewohner) do begin Fbewohner[i] := TGast.Create; Fbewohner[i] := nil; if (Assigned(_gast)) then begin Fbewohner[i] := _gast; belegt := true; if i = 4 then begin voll := true; end; help := true; break; result := true; end; end; end else begin for i := low(Fbewohner) to Length(Fbewohner)-1 do begin setlength(Fbewohner,maxBewohner); Fbewohner[i] := nil; if (Assigned(_gast)) then begin Fbewohner[i] := _gast; belegt := true; if i = 4 then begin voll := true; end; help := true; end; break; result := true; end; end; end;
function TMehrbettZimmer.getBewohner():TGast;var i:INTEGER; bewohner_mehrbett :TGast; begin bewohner_mehrbett := TGast.Create; for i := low(Fbewohner) to high(Fbewohner) do begin if i = 1 then begin bewohner_mehrbett.Name := Fbewohner[i].Name; bewohner_mehrbett.Vorname := Fbewohner[i].Vorname; bewohner_mehrbett.Wohnort := Fbewohner[i].Wohnort; end else begin if ((Fbewohner[i].Name <> '')) then begin bewohner_mehrbett.Name := bewohner_mehrbett.Name + ', ' + Fbewohner[i].Name; end; if ((Fbewohner[i].Vorname <> '')) then begin bewohner_mehrbett.Vorname := bewohner_mehrbett.Vorname + ', ' + Fbewohner[i].Name; end; if ((Fbewohner[i].Wohnort <> '')) then begin bewohner_mehrbett.Wohnort := bewohner_mehrbett.Wohnort + ', ' + Fbewohner[i].Name; end; end;
end; result := bewohner_mehrbett; end;
function TMehrbettZimmer.zimmerRaeumen():BOOLEAN;var i:INTEGER; begin for i := low(Fbewohner) to high(Fbewohner) do begin Fbewohner[i] := nil; end; end; end. |
So das waren alle.
Zuletzt bearbeitet von Xardas008 am Mi 06.02.08 20:26, insgesamt 2-mal bearbeitet
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 06.02.08 20:24
Ich meinte eigentlich, dass Du nur den fürs Problem relevanten Quellcode postest 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Xardas008 
      
Beiträge: 149
Win 7 Professional x64, Ubuntu 10.04, Windows Server 2008 R2
C#, Visual Studio 2008 Pro, Visual Studio 2010 Ultimate, Eclipse (Java)
|
Verfasst: Mi 06.02.08 20:29
Christian S. hat folgendes geschrieben: | Ich meinte eigentlich, dass Du nur den fürs Problem relevanten Quellcode postest  |
Das habe ich. Nur dummerweise brauchen wir zum überprüfen alle Dateien, weil ich praktisch durch alle durchlaufe um auf die einzelnen Elemente zu kommen (so stand es im UML-Diagramm welches zur Aufgabe gehörte, wobei dieses eher mager war).
Naja werde das ganze morgen erstmal versuchen nach C# zu portieren ob ich es da eher hinbekomme, vielleicht findet aber auch wer den Fehler und hilft mir dabei, will ja auch verstehen warum das nicht funktioniert.
Am besten lasst ihr es im Debugger durchlaufen dann seht ihr wo er überall hinspringt.
Bei TGast.Create macht er alles noch richtig, aber sobald er dann beim einchecken den Namen (gilt auch bei den anderen) wieder setzen will steht im Debugger Watch-Fenster nur noch E2171, warum??? Wie es scheint schreibt er die auch korrekt dort rein, aber sobald er den Gast eingecheckt hat scheint das Objekt (oder der Verweis) nicht mehr zu stimmen und er findet kein Objekt mehr und daher erstellt er einen neuen Gast um keine Exception auszulösen.
|
|
ub60
      
Beiträge: 765
Erhaltene Danke: 130
|
Verfasst: Mi 06.02.08 21:15
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| function TEtage.zimmerAnlegen(zimmer: TZimmer):BOOLEAN; var i:INTEGER; begin
if (i MOD 2) = 0 then begin raeume[i] := TEinzelZimmer.Create(); end else begin raeume[i] := TMehrbettZimmer.Create(4); end;
end; |
Also ich habe erst mal einen gravierenden Fehler gefunden (siehe oben). Die Variable i ist undefiniert (da lokal), hier musst Du den Wert als Parameter übergeben.
Außerdem solltest Du Deine Klasse einzeln testen!! Dann hättest Du Deinen Fehler besser eingrenzen können.
Eine vielfach verschachtelte Schleife zu nehmen und dann zu hoffen, dass alles geht, halte ich für sehr optimistisch.
Viele Deiner Funktionen sind eigentlich Prozeduren. Mache doch auch Prozeduren draus.
Die Klasse TEtage sollte eigentlich keine Nachfolgeklasse von TZimmer sein.
ub60
|
|
Xardas008 
      
Beiträge: 149
Win 7 Professional x64, Ubuntu 10.04, Windows Server 2008 R2
C#, Visual Studio 2008 Pro, Visual Studio 2010 Ultimate, Eclipse (Java)
|
Verfasst: Mi 06.02.08 21:45
ub60 hat folgendes geschrieben: | Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| function TEtage.zimmerAnlegen(zimmer: TZimmer):BOOLEAN; var i:INTEGER; begin
if (i MOD 2) = 0 then begin raeume[i] := TEinzelZimmer.Create(); end else begin raeume[i] := TMehrbettZimmer.Create(4); end;
end; |
Also ich habe erst mal einen gravierenden Fehler gefunden (siehe oben). Die Variable i ist undefiniert (da lokal), hier musst Du den Wert als Parameter übergeben.
Außerdem solltest Du Deine Klasse einzeln testen!! Dann hättest Du Deinen Fehler besser eingrenzen können.
Eine vielfach verschachtelte Schleife zu nehmen und dann zu hoffen, dass alles geht, halte ich für sehr optimistisch.
Viele Deiner Funktionen sind eigentlich Prozeduren. Mache doch auch Prozeduren draus.
Die Klasse TEtage sollte eigentlich keine Nachfolgeklasse von TZimmer sein.
ub60 |
Seltsam, aus irgendeinem Grund hat das immer funktioniert *gg*.
Naja eigentlich gehört da ne Schleife drum weil pro Etage alle 9 Zimmer angelegt werden sollen.
|
|
Xardas008 
      
Beiträge: 149
Win 7 Professional x64, Ubuntu 10.04, Windows Server 2008 R2
C#, Visual Studio 2008 Pro, Visual Studio 2010 Ultimate, Eclipse (Java)
|
Verfasst: Fr 08.02.08 20:13
So habe das Programm endlich fertig.
Der Grund wieso ich den Gast nicht eingecheckt bekam lag daran, dass es sich um ein Mehrbettzimmer handelte und er dort keine Zimmer belegt hat, weil ich die Größe des Dynamischen Arrays erst in der for-Schleife gesetzt habe, mit der for-Schleife aber auf diesen Array zugegriffen habe welcher ja keine Elemente enthielt.
Somit ging er auch nicht in die Schleife.
Naja mein Lieblingsfehler ist echt EAccesviolation. Sonst bekomme ich eigentlich keine^^.
|
|
|