Delphi-PRAXiS
Seite 3 von 3     123

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Dyn. Array of Double an funktion übergeben (https://www.delphipraxis.net/207421-dyn-array-double-funktion-uebergeben.html)

KodeZwerg 24. Mär 2021 23:39

AW: Dyn. Array of Double an funktion übergeben
 
TestArray[1..2]: Array of Byte;
...
WriteLn(TestArray[0]);

kann das funktionieren?

Andreas13 25. Mär 2021 00:09

AW: Dyn. Array of Double an funktion übergeben
 
Hallo Stefan,
mit "Gefahr" habe ich folgende Situation gemeint:
Delphi-Quellcode:
program Offene_Array_Parameter_1;
{$APPTYPE CONSOLE}
{$R *.res}
Procedure Print_Vektor(CONST Vektor: Array of Integer; Name: String); overload;
VAR
  Zeile: Integer;

Begin
  WriteLn(Name, ':');
  For Zeile:= Low(Vektor) To High(Vektor) Do
  Begin
    WriteLn('Vektor[', Zeile,'] = ', Vektor[Zeile]);
  End;
  WriteLn;
End;

Procedure Print_Vektor(CONST Vektor: Array of Integer; Zeile: Integer; Name: String); overload;

Begin
  WriteLn(Name, ':');
  WriteLn('Vektor[', Zeile,'] = ', Vektor[Zeile]);
  WriteLn;
End;

CONST
  Len = 8;

VAR
  Statischer_Vektor : Array[1..Len] of Integer;
  Dynamischer_Vektor: Array of Integer;

  i, Pos: Integer;
 
Begin
    SetLength(Dynamischer_Vektor, Len);

    Try  
      For i:= Low(Dynamischer_Vektor) To High(Dynamischer_Vektor) Do
      Begin
        Dynamischer_Vektor[i]:= i;    
      End;

      For i:= 1 To Len Do
      Begin
        Statischer_Vektor[i]:= i;    
      End;
           
      Print_Vektor(Dynamischer_Vektor, 'Dynamischer_Vektor');
      Print_Vektor(Statischer_Vektor,  'Statischer_Vektor');
      WriteLn;
     
      Pos:= 2;
      WriteLn(Pos, '-tes Element durcken:');
      WriteLn;
     
      Print_Vektor(Dynamischer_Vektor, Pos, 'Dynamischer_Vektor');
      Print_Vektor(Statischer_Vektor, Pos, 'Statischer_Vektor --> FALSCH');
     
      ReadLn;
   
    Finally
      Dynamischer_Vektor:= NIL;
    End;
  End.
Gruß, Andreas

Stevie 25. Mär 2021 00:56

AW: Dyn. Array of Double an funktion übergeben
 
Zitat:

Zitat von KodeZwerg (Beitrag 1485991)
TestArray[1..2]: Array of Byte;
...
WriteLn(TestArray[0]);

kann das funktionieren?

Die Rede ist von open array parametern und nicht von statischen arrays - logisch, dass das da out of bounds ist - war das ne Fangfrage? :roll:

Zitat:

Zitat von Andreas13 (Beitrag 1485992)
mit "Gefahr" habe ich folgende Situation gemeint

Den base index einer Range vermischen ist immer eine Gefahr - ändert aber nix daran, dass open array zero based ist.
Wenn ich also von einer Funktion, die ein open array entgegen nimmt, einen Index für ein übergebenes n-based array geliefert bekomme, oder übergebe, muss ich da zwischen 0 und n umrechnen, da ändert auch nen Low/High innerhalb der Funktion nix.

KodeZwerg 25. Mär 2021 01:59

AW: Dyn. Array of Double an funktion übergeben
 
Zitat:

Zitat von Stevie (Beitrag 1485996)
Zitat:

Zitat von KodeZwerg (Beitrag 1485991)
TestArray[1..2]: Array of Byte;
...
WriteLn(TestArray[0]);

kann das funktionieren?

Die Rede ist von open array parametern und nicht von statischen arrays - logisch, dass das da out of bounds ist - war das ne Fangfrage? :roll:

Ist nicht out of bound, ist schlichtweg völlig verkehrte Syntax.
Es würde nicht mal ansatzweise funktionieren da ich die Klammern verkehrt gesetzt hab, hätte als Antwort kommen müssen.
Aber ja ich weiß was Du meintest obwohl ich nen dynamisches array abgebildet habe.

Stevie 25. Mär 2021 02:25

AW: Dyn. Array of Double an funktion übergeben
 
Zitat:

Zitat von KodeZwerg (Beitrag 1485999)
ist schlichtweg völlig verkehrte Syntax.

Hab schon Autokorrektur beim Lesen, da so viele Leute defekten Pseudocode schreiben.
Offensichtlich funktioniert die auch nicht fehlerfrei. :mrgreen:

Andreas13 25. Mär 2021 09:31

AW: Dyn. Array of Double an funktion übergeben
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:38 Uhr.
Seite 3 von 3     123

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf