![]() |
Re: wie kann man globale Flags in eine Rechenoperation wande
Du kannst Typen im private-Abschnitt deklarieren? Das war mir neu und funktioniert bei mir auch nicht.
|
Re: wie kann man globale Flags in eine Rechenoperation wande
Zitat:
|
Re: wie kann man globale Flags in eine Rechenoperation wande
Ahja, wieder was dazugelernt, Danke.
|
Re: wie kann man globale Flags in eine Rechenoperation wande
@ Muetze1,
wenn ich bei mir unter Delphi 2007 die Type-Deklaration von TMyRec in den "private" Abschnitt rein setze, bekomme ich aber die Fehlermeldung, dass TMyRec nicht deklariert wäre... :gruebel: Wenn ich es "standardmäßig" wie im Beispielcode mache, funktioniert es. Oder muss ich in meiner Delphiversion erst irgendeinen Compiler-Schalter setzen? Grüße Jürgen |
Re: wie kann man globale Flags in eine Rechenoperation wande
Zitat:
Und wenn du es im private Abschnitt definierst, dann soll diese Deklaration auch private sein. Du willst sie aber außerhalb der Klasse in doCalc nutzen. Somit entweder public oder du nutzt das friend-Prinzip aus, da du ja mit private und nicht strict private arbeitest. Ich würde dir aber eigentlich eher raten die Funktion zu einer Methode zu wandeln. Die Lösung unter Nutzung des friend-Verhaltens:
Delphi-Quellcode:
function doCalc(const Arr: array of TForm1.TMyRec; var Ergebnis: Integer): Boolean;
var i: Integer; begin Result := false; Ergebnis := 0; if Length(Arr) < 1 then Exit; //Operator des 1. Elements wird ignoriert Ergebnis := Arr[Low(Arr)].Zahl; //die folgenden Elemente werden je nach Wert von Calc_Operation addiert oder subtrahiert for i := Succ(Low(Arr)) to High(Arr) do begin if Arr[i].Calc_Operation = opAdd then Inc(Ergebnis, Arr[i].Zahl) else if Arr[i].Calc_Operation = opSub then Dec(Ergebnis, Arr[i].Zahl) end; Result := True; end; |
Re: wie kann man globale Flags in eine Rechenoperation wande
@Muetze1,
Ahhhh, Danke für die ausführlichen Erklärungen! Die Wandlung der Funktion in eine Methode ist ein guter Vorschlag! schöne Grüße aus Dortmund nach Rostock! Jürgen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:28 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