Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Andreas13,
25. Mär 2021
Hi Stefan,
mit "Gefahr" habe ich ganz konkret gemeint: Finger weg von "Open Array-Parametern", sondern den Array-Type immer explizit deklarieren, damit gar nicht so ein Chaos entstehen kann.
Gruß, Andreas
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Andreas13,
24. Mär 2021
Hallo Stefan,
mit "Gefahr" habe ich folgende Situation gemeint:
program Offene_Array_Parameter_1;
{$APPTYPE CONSOLE}
{$R *.res}
Procedure Print_Vektor(CONST Vektor: Array of Integer; Name: String); overload;
VAR
Zeile: Integer;
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Andreas13,
24. Mär 2021
Hallo Wendelin,
noch ein kleiner Tipp: Wenn Delphi 7 Enterprise noch kein CONST im Funktionskopf kennt, Du solltest stattdessen überall VAR benutzen.
Gruß, Andreas
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Andreas13,
24. Mär 2021
Viel Efolg, Wendelin !:-D
Gruß, Andreas
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Andreas13,
24. Mär 2021
CONST im Funktionskopf sorgt dafür, daß
- ein Pointer auf das Array übergeben wird und nicht der Inhalt des Arrays kopiert wird,
- das Original-Array nicht verändert werden kann
- das Ablegen des Arrays im Speicher vom Compiler optimiert werden kann, um effizientere Zugriffe zu ermöglichen.
Möglicherweise gibt es noch mehr Gründe, die unsere Top-Spezialisten Dir besser erklären können....
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Andreas13,
22. Mär 2021
Die "Gefahr" bei offenen Parametern besteht nur darin, daß der Index sowohl bei 0 (dynamisch), als auch bei 1 (statisch) beginnen kann. Daher sollte der Zugriff immer über Low(..) und High(..) erfolgen, wenn man nicht total durcheinanderkommen will.
Andreas
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Andreas13,
22. Mär 2021
Deine Funktion function GetMaxDoubleArrayIndex(const DoubleArray: array of Double): Integer; hat einen sogenannten offenen Array-Parameter, der sowohl statische, wie auch dynamische Arrays "schluckt".
Gruß, Andreas
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Andreas13,
22. Mär 2021
Wendelin wollte dynamische Arrays übergeben. KodeZwerg's TestArray: Array of Double; ist aber ein statisches Array.
Ohne Deine Fehlermeldungen ist es schwer zu sagen, woran der ursprüngliche Fehler liegt, ich vermute jedoch, daß das dynamische Array nicht initialisiert worden ist.
Wahrscheinlich fehlt
...
SetLength(X_Array, Len);
Gruß, Andreas
Zeig doch mal Deinen Code, wo Du das...