![]() |
AW: Aufrechnen von Integer-Werten in ein neues Ergebnis
Zitat:
Delphi-Quellcode:
Er sagt er ist am üben. Dann kann man doch wohl auch in den Raum werfen, dass int32 exakt dasselbe wie Integer ist und man es umschreiben sollte.
FZahl1 : integer;
FZahl2 : integer; FErgebnis: Integer; FAufrechnung: int32; Sollte nur ein nett gemeinter Hinweis sein bevor er sich irgendwann fragt was zur hölle ist int32 ? |
AW: Aufrechnen von Integer-Werten in ein neues Ergebnis
Danke Zacherl
Zitat:
ausgeben zu können. Dazu habe ich mir zum Test das Additionsprogramm geschrieben, doch kam ich ersichtlich zwar zur Addition von Zahl1 und Zahl2, doch eine Addition von weiteren Werten zum bisherigen Ergebnis scheiterte. Sicher muss ich das mit Geter und Seter nochmals versuchen, ohne die Klasse sofort wieder zu vernichten. Das mit der class function habe ich noch nicht verstanden. Danke Delphi.Narium, ich glaube es ist wirklich zweckmäßig die Instanz von TAddition im create des Formulars zu erstellen, wie Du es vorgeschlagen hast. Wenn ich das so hinbekommen habe melde ich mich erneut LTE5 die Variablen integer und int32 sind gleich. Das ist mir durchaus klar und ich habe mich nach dem Studium von Marco Cantu entschlossen im konkreten Beispiel int32 zu verwenden. |
AW: Aufrechnen von Integer-Werten in ein neues Ergebnis
Zitat:
|
AW: Aufrechnen von Integer-Werten in ein neues Ergebnis
Zitat:
![]() |
AW: Aufrechnen von Integer-Werten in ein neues Ergebnis
Das soll doch keine Grundsatzdiskussion werden. Ich interessiere mich nur dafür, was du dir für Gedanken machst int32 zu wählen? Bessere Lesbarkeit etc?
|
AW: Aufrechnen von Integer-Werten in ein neues Ergebnis
nochmals zum Thema Integer oder int32: Marco Cantù, Object Pascal Handbook:
Zitat:
|
AW: Aufrechnen von Integer-Werten in ein neues Ergebnis
Zitat:
|
AW: Aufrechnen von Integer-Werten in ein neues Ergebnis
eine kleine Änderung und schon geht's. Habe Formcreate für die Instanzierung der class genutzt wie von Delphi.Narium angeregt und leise von mir vermutet wurde.
Warum kam ich nicht gleich darauf? anbei das Ergebnis: Die Form:
Delphi-Quellcode:
hier die logic:
procedure TForm1.btn1Click(Sender: TObject);
var ergSummierung: int32; begin Add.Zahl1 := StrToIntDef(edtZahl1.text,0); Add.Zahl2 := StrToIntDef(EdtZahl2.Text, 0); Add.Addition; LblErgebnis.Caption := IntToStr(Add.Ergebnis); ergSummierung:=add.Ergebnis; Add.aufrechnen(ergSummierung); lblAufrechnung.caption:=inttostr(add.Ergebnisaufrechnen); end; procedure TForm1.btn2Click(Sender: TObject); begin close; end; procedure TForm1.FormCreate(Sender: TObject); begin add:= TAddition.create; end; procedure TForm1.FormDestroy(Sender: TObject); begin add.Free; end;
Delphi-Quellcode:
So ist sicher auch eine Rückrechnung von einer bestimmten Anzahl von Stücken bis auf 0 möglich. Diese Musterlösung hilft mir nun bescheiden weiter in meinen Übungen.
type
TAddition = class private FZahl1 : int32; FZahl2 : int32; FErgebnis: Int32; FAufrechnung: int32; public constructor create; destructor override; procedure Addition; procedure aufrechnen(value:int32); property Zahl1: Integer read FZahl1 write FZahl1; property Zahl2: Integer read FZahl2 write FZahl2; property Ergebnis: Integer read FErgebnis; property Ergebnisaufrechnen : int32 read FAufrechnung ; end; implementation { TAddition } procedure TAddition.Addition; begin FErgebnis:=FZahl1+FZahl2; end; procedure TAddition.aufrechnen(Value:int32); begin FAufrechnung:= Faufrechnung + Value ; end; constructor TAddition.create; begin inherited create; end; destructor TAddition.override; begin inherited Destroy; end; Doch ich bin auch neugierig geworden auf den Hinweis von Zacherl zur Nutzung von class function. Zitat:
konkrete Vorstellung zum möglichen Einsatz. Man könne eine class procedure auch dann ausführen, wenn die Klasse noch garnicht instanziert wurde habe ich gelesen. Heißt das beispielsweise, ich könnte mit dieser Möglichkeit die "Aufaddierung" mittels class function realisieren und dann nach Instanzierung der class ausführen? Wie geht das? Oder habe ich das völlig falsch verstanden? Wäre das Additionsbeispiel mit der von mir gewollten "Aufaddition" für ein Beispiel mit class function geeignet und könntest Du mir da etwas aufzeigen? Es dient lediglich meiner Fortbildung auch in den "höheren Bereich" der OOP, in den ich mich mühseelig mit der Übersetzung von Marco Cantù's Object Pascal Handbook vorwage. Noch eine Verfahrensfrage: Wie füge ich ein Zitat mit dem Hinweis von wem es kommt hier ein. Bislang schreibe ich nur Zitat und wollte jedoch kennzeichnen, dass das Zitat von Zacherl stammt. Vielen Dank |
AW: Aufrechnen von Integer-Werten in ein neues Ergebnis
Zitat:
Zitat:
Delphi-Quellcode:
Funktion ohne Änderungen beibehalten willst, darfst/kannst du sie nicht zu einer
Addition
Delphi-Quellcode:
machen, da dann nicht mehr auf die (Instanz-)Felder
class procedure
Delphi-Quellcode:
zugegriffen werden kann. Die Begründung hast du dir schon selbst gegeben mit
FErgebnis, FZahl1 und FZahl2
Zitat:
Delphi-Quellcode:
erfolgen anstelle von
TMyClass.Test()
Delphi-Quellcode:
.
TMyClass.Create.Test() bzw. MyClassInstanze.Test()
Es gibt im Grunde 3 verschiedene Varianten, die man betrachten muss:
Zitat:
Zitat:
Delphi-Quellcode:
.
class function TAddition.Add(Value1, Value2: Integer): Integer; static;
Statt
Delphi-Quellcode:
würde sich dein Aufruf dann in
Add.Zahl1 := StrToIntDef(edtZahl1.text,0);
Add.Zahl2 := StrToIntDef(EdtZahl2.Text, 0); Add.Addition; LblErgebnis.Caption := IntToStr(Add.Ergebnis);
Delphi-Quellcode:
ändern.
LblErgebnis.Caption :=
IntToStr(TAddition.Add(StrToIntDef(edtZahl1.text,0), StrToIntDef(edtZahl2.text,0)); Wie du siehst wäre dann hierfür auch keine Instanz notwendig. Die
Delphi-Quellcode:
kann man allerdings nicht in dieser Form umschreiben, da du dir hier den Wert ja zwischen zwei Aufrufen merken willst, demnach also zwingend eine Instanz mit Feld benötigst.
Aufsummierung
Edit: Zitat:
|
AW: Aufrechnen von Integer-Werten in ein neues Ergebnis
Danke Zacherl für Deine Hinweise. Ich werde das gleich mal durchexerzieren. Auch Danke für den Hinweis mit dem Zitat. Ich habe überall gesucht und bin einfach nicht darauf gekommen, dass es auf der gleichen Seite den entspr. Button gibt.
Nochmals vielen Dank auch an die anderen user für die Hinweise. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:29 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 by Thomas Breitkreuz