Hmm..
OK, fangen wir an zu zerlegen
Delphi-Quellcode:
procedure TWaren.init;
begin
FillChar(FWarenbestand,sizeof(FWarenbestand),0);
FillChar(FWarenverkauf,sizeof(FWarenVerkauf),0);
FillChar(FaktBestand,sizeof(FaktBestand),0);
FillChar(FStPreis,sizeof(FStPreis),0);
FillChar(FVerkPreis,sizeof(FVerkPreis),0);
FillChar(FNettopreis,sizeof(FNettoPreis),0);
FillChar(FMWSt,sizeof(FMWSt),0);
FillChar(FErtrag,sizeof(FErtrag),0);
FillChar(FAbMWSt,sizeof(FAbMWSt),0);
end;
Wieso benutzt Du FillChar um Integer oder Float Variablen zu initialisieren?
Sollte dies nicht besser nur für arrays ob Byte/Char verwendet werden?
Auch ist es besser lesbar, wenn Du die Variablen mit dem entsprechenden Wert initialisierts...
Delphi-Quellcode:
procedure TWaren.init;
begin
FWarenbestand := 0;
FWarenverkauf := 0;
FaktBestand := 0;
FStPreis := 0;
FVerkPreis := 0.0;
FNettopreis := 0.0;
FMWSt := 0.0;
FErtrag := 0.0;
FAbMWSt := 0.0;
end;
Delphi-Quellcode:
var
Form1: TForm1;
Waren: TWaren;
Und was mich immer wieder den Kopf schütteln läst: Unsinnige GLOBALE Variablen!
'Waren' wird nur 'innerhalb' der FormularClasse verwendet, wieso dort nicht als FWaren : TWaren unter 'Private' anlegen?
Dann würde an jeder Stelle in den Methoden der Form erkennbar sein, wo es herkommt ('FWaren' = Membervar).
Wieso hat die Classe TWaren kein eigenes Init, bei dem z.B. Warenbe); //const Warenbe
gesetzt wird?
und beim Form1.Init sollten die Werte aus der Classe Waren (nach dessen Init) genommen werden und nicht wieder eigene Konstanten.
Delphi-Quellcode:
procedure TForm1.init;
begin
FWaren.Init;
Warenbestand.Text := IntToStr(FWaren.Warenbestand);
WarenVerkauf.Text:='0';
aktBestand.Text := IntToStr(FWaren.aktBestand);
StPreis.Text := FloatToStr(FWaren.StPreis); //const StkPreis
VerkaufsPreis.text:= FloatToStr(FWaren.Verkaufspreis);
Nettopreis.Text := FloatToStr(FWaren.Nettopreis);
MWSt.Text := FloatToStr(FWaren.MWSt);
Ertrag.Text := FloatToStr(FWaren.Ertrag);
AbMWSt.Text := FloatToStr(FWaren.AbMWSt);
BruttoUmsatz.Text := FloatToStr(FWaren.BruttoUmsatz); // Fehlt
checkbox1.Checked :=false;
checkboxRabatt.Checked :=false;
end;
Somit wird nur an einer Stelle Konstanten ver wendet und diese zur Ansicht gebracht.
So, hoffe ein paar Tips geben zu können..
Mal sehen, ob meine Infos jetzt von anderen zerpflückt werden