![]() |
Variablen innerhalb von Klassen
Hallo zusammen. Ich hoffe, ich poste das hier thematisch richtig.
Es geht um folgendes: Ich habe eine Klasse freactor erstellt. In dieser werden einzelne Größen berechnet usw. Unter anderem beinhaltet diese Klasse Variablen, die als private deklariert sind. Das ganze sieht in etwa so aus:
Delphi-Quellcode:
Nun möchte ich diese Klasse aus dem Hauptprogramm aufrufen, wo die Klasse über
type TFReactor = class(TObject)
private temperature: extended; pressure: extended; bstoff: integer; firing: boolean; public procedure Create; function Energyproduction(temp, pres: extended; bs: integer): extended; function DeterminePressure(temp: extended; bs: integer): extended; function DetermineTemperature(bs: integer; triggerenergy: extended): extended; function Lawson(temp, pres: extended): extended; end;
Delphi-Quellcode:
eingebunden wird. Dies klappt dann auch soweit ganz gut...
Reactor: TFReactor;
Delphi-Quellcode:
Das Problem ist nur, dass wenn ich INNERHALB der Klassen-Unit eine private-Variable ändern will (z.B. firing:=true;) dann gibt es ne Fehlermeldung. Also eine Zugriffsverletzung. Compilieren tut er jedoch einwandfrei...
label193.caption:=FloatToStr(Reactor.energyproduction(temp,pres,deuterium));
Ist das erste mal, dass ich wirklich eine eigene Klasse erstelle. Hoffe mir kann da jemand helfen... |
Re: Variablen innerhalb von Klassen
Hast du auch eine Instanz erzeugt?
|
Re: Variablen innerhalb von Klassen
Meinste über Create?
|
Re: Variablen innerhalb von Klassen
Ja.
welche Fehlermeldung kommt genau? |
Re: Variablen innerhalb von Klassen
Also ich geb hier mal alles was dazu wichtig ist:
Das hier ist die Klassen-Unit:
Delphi-Quellcode:
und das hier ist im Hauptprogramm:
unit fusionsreactor;
interface type TFReactor = class(TObject) private temperature: extended; pressure: extended; dbstoff: integer; firing: boolean; public procedure Create; function Energyproduction(temp, pres: extended; bs: integer): extended; function DeterminePressure(temp: extended; bs: integer): extended; function DetermineTemperature(bs: integer; triggerenergy: extended): extended; function Lawson(temp, pres: extended): extended; end; implementation procedure TFReactor.Create; begin temperature := 0.0; pressure := 0.0; bstoff := 0; firing := false; end; function TFReactor.energyproduction(temp, pres: extended; bs: integer): extended; var lawsoncrit: extended; begin lawsoncrit:= 1E+20; if pres*temp>lawsoncrit then begin result:= (1E+17)*deut; firing:=true; end else result:= 0.0; end; function TFReactor.DeterminePressure(temp: extended; bs: integer): extended; var molarvolume, gasconstant: extended; begin gasconstant:=8.314472; //J/(mol*K) molarvolume:= 0.00403*deut/(113.09724); result:= gasconstant*temp/gasconstant; end; function TFReactor.DetermineTemperature(bs: integer; triggerenergy: extended): extended; var boltzmann: extended; begin boltzmann:= 1.3806504E-23; result:= 2.0*triggerenergy*boltzmann/3.0; end; function TFReactor.Lawson(temp,pres: extended): extended; begin result:= temp*pres; end; end. Deklaration:
Delphi-Quellcode:
Aufruf:
public
... Reactor: TFusionReactor; ...
Delphi-Quellcode:
Die Fehlermeldung ist:
Reactor.Create
label193.caption:=FloatToStr(Reactor.energyproduction(temp,pres,bstoff)); "Zugriffsverletzung bei Adresse 0050573E in Modul 'frtest.exe'. Schreiben von Adresse 00000008" |
Re: Variablen innerhalb von Klassen
Delphi-Quellcode:
Zudem sollte Create ein Konstructor sein
Reactor := TFusionReactor.Create;
Delphi-Quellcode:
type TFReactor = class(TObject)
private temperature: extended; pressure: extended; dbstoff: integer; firing: boolean; public constructor Create; function Energyproduction(temp, pres: extended; bs: integer): extended; function DeterminePressure(temp: extended; bs: integer): extended; function DetermineTemperature(bs: integer; triggerenergy: extended): extended; function Lawson(temp, pres: extended): extended; end; implementation constructor TFReactor.Create; begin inherited; temperature := 0.0; pressure := 0.0; bstoff := 0; firing := false; end; |
Re: Variablen innerhalb von Klassen
HA!!! Super. Jetzt klappts. Vielen Dank an euch!!!
|
Re: Variablen innerhalb von Klassen
Zitat:
Gerngeschehen |
Re: Variablen innerhalb von Klassen
Sorry meinte an DICH!!! ;-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 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-2025 by Thomas Breitkreuz