![]() |
überladene Operator und dyn. Array's
Wie im Freeware-Bereich bereits ersichtlich, bastle ich ein paar Units mit Hilfe von überladenen Operatoren. Dabei gibt es mit komplexe Zahlen und Brüchen keine Probleme.
Jetzt bin ich bei Polynomen und hier taucht das 1.Porblem auf, denn die Koeffizienten sind ein dynamisches Array of Double. Bei der Zuweisung:
Code:
ist X(x) = x-4 und Z(x)=x-4 !
type
TPolynom = record public A: array of Double; // usw. end; var FX,FZ: TPolynom; begin FX .Grad := 1; FX.A[0] := -2; FX.A[1] := 1; //x-2 FZ := FX; FZ[0] := -4; end; Sogar ein Überschreiben von
Code:
bringt nichts.class operator Implicit(const A: TPolynom): TPolynom; Hat jemand einen Rat? |
Re: überladene Operator und dyn. Array's
Hallo
Da dynamische Arrays leider kein copyonwrite haben wie strings musst du das selber machen! Du musst bei jedem setter prüfen ob der referenzcounter > 0 ist und wenn ja musst du ein copy() machen :) Liebe Grüsse Laufi |
Re: überladene Operator und dyn. Array's
du musst den zugriffs- operator Items realisieren; probiere es mal so:
Delphi-Quellcode:
dann kannst du auch schreiben und lesen der koefizienten wie folgt realisieren
type TPolynom = record
private function GetCoef(idx:Integer):double; procedure PutCoef(Idx: Integer; value:double); public A: array of Double; Grad:integer; // usw. property Items[Idx: Integer]: double read GetCoef write PutCoef; default; end; var FX,FZ: TPolynom;
Delphi-Quellcode:
grüsse
setLength(FX.A,10);
setLength(FZ.A,10); FX.Grad := 1; FX.A[0] := -2; FX.A[1] := 1; //x-2 FZ := FX; FZ[0] := -4; |
Re: überladene Operator und dyn. Array's
laufi: Danke, habe ich momentan per Methode Assign realisiert
Mr.borland: das usw. heißt dass A gekapselt per Get- und Set-proceduren, und so funktioniert es ja eben nicht! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 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