Guten Morgen Zusammen,
ich versuche mich, wohl schon x-ten mal, an einem Kleinen Spiel
Nun bekomme ich beim Compilieren folgende Fehlermeldung: [DCC Fehler] game.pas(115): E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
Was ich aber leider nicht ganz verstehe, ist mir irgendwie zu hoch, da ich functionen bisher immer verwendet habe und damit noch keinerlei Probleme hatte.
Hier einmal meine Function selbst
Delphi-Quelltext
1: 2: 3: 4:
| function TGameTickThread.NeuerRessStand(var AktuellerStand, GebAnzahl, RessMuliplikator : integer):integer; begin result := AktuellerStand + (GebAnzahl * RessMuliplikator); end; |
Die Function ist in der Klasse TGameTickThread angesiedelt. Welche so ausschaut.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| type TGameTickThread = class(TThread) procedure Execute; override; procedure Ausgabe; private function NeuerRessStand(var AktuellerStand, GebAnzahl, RessMuliplikator : integer):integer; public end; |
Nun rufe ich innerhalb von Execute die function auf.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TGameTickThread.Execute; var I: Integer; begin try while not Terminated do begin Synchronize(Ausgabe); CompleteTicks := CompleteTicks + 1; for I := 0 to High(SpielerArray) - 1 do begin SpielerArray[i].HolzStand := NeuerRessStand(SpielerArray[i].HolzStand,2,50); SpielerArray[i].EisenStand := NeuerRessStand(SpielerArray[i].EisenStand,3,50); SpielerArray[i].NahrungStand := NeuerRessStand(SpielerArray[i].NahrungStand,4,50); SpielerArray[i].GoldStand := NeuerRessStand(SpielerArray[i].GoldStand,5,50); end; Sleep(1000); end; except on e: Exception do ShowMessage('Fehler aufgetreten'); end; end; |
Und aber hier funktioniert es nicht mehr, dort erhalte ich wie oben geschrieben, immer wieder die selber Fehlermeldung.
Rufe ich die Function nun selber auf, also einfach nur
RessourcenStand := NeuerRessStand(5000,20,200)
Kommt wieder die selbe Fehlermeldung, obwohl ich nur Integer Werte an die function übergebe. Mache ich da irgendwas falsch? Liegt das eventuell daran, das ich die function innerhalb eines Threads aufrufe?