Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Merkwürdiges Problem mit einem dynamischen Array (https://www.delphipraxis.net/73823-merkwuerdiges-problem-mit-einem-dynamischen-array.html)

thomasdrewermann 24. Jul 2006 16:01


Merkwürdiges Problem mit einem dynamischen Array
 
Hallo,

wenn ich ein dynamisches Array global wir folgt deklarieren will:
Code:
 private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1; var a:Array of Double;


implementation
Bekomme ich vom Compiler folgende Fehler ausgeworfen:
1. Fehler: [ erwartet, aber 'OF' gefunden
2. Fehler: 'OF' erwartet, aber 'implementation' gefunden


Kopiere ich folgende Methoden aus der Delphi-Hilfe in den Quellcode, compiliert er ohne Fehler:
Code:
procedure Clear(var A: array of Double);
var
 I: Integer;
begin
 for I := 0 to High(A) do A[I] := 0;
end;
function Sum(const A: array of Double): Double;
var
 I: Integer;
 S: Double;
begin
 S := 0;
 for I := 0 to High(A) do S := S + A[I];
 Sum := S;
end;

Weiss jemand woran dieses Verhalten liegt? Was mache ich falsch?

Meine Delphi-Version ist 3.

Gruß
Thomas

Klaus01 24. Jul 2006 16:07

Re: Merkwürdiges Problem mit einem dynamischen Array
 
Delphi 3 kann so weit ich das weiß keine dynamischen Arrays.


Delphi-Quellcode:
private
    { Private-Deklarationen } 
  public
    { Public-Deklarationen } 
  end;

var
  Form1: TForm1;

var a:Array [0..10] of Double;

implementation
Grüße
Klaus

Eichhoernchen 24. Jul 2006 16:07

Re: Merkwürdiges Problem mit einem dynamischen Array
 
Ich glaub Delphi 3 unterstützt noch gar keine dynamischen Arrays,
schlagt mich wenn ich falsch liege aber ich meine ich hätte dass mal gelesen!

marabu 24. Jul 2006 16:09

Re: Merkwürdiges Problem mit einem dynamischen Array
 
Nochmal anders formuliert: es ist ein Unterschied zwischen einer dynamischen Array-Variablen und einem offenen Array-Parameter.

Grüße vom marabu

thomasdrewermann 24. Jul 2006 16:10

Re: Merkwürdiges Problem mit einem dynamischen Array
 
Worin lieg denn dieser?

Wie nutze ich Array-Variablen?

Gruß
Thomas

himitsu 24. Jul 2006 16:23

Re: Merkwürdiges Problem mit einem dynamischen Array
 
Du erstellst die 'nen VorlageTypen
Delphi-Quellcode:
Type TMyDoubleArray = Array[0..0] of Double;
daraus wird dann der PointerTyp erstellt/genutzt
Delphi-Quellcode:
Type PMyDoubleArray = ^TMyDoubleArray;
Var MyDoubleVar: PMyDoubleArray;
// oder
Var MyDoubleVar: ^TMyDoubleArray;
und dann mußt du für die Speicherresservierung (z.B. per GetMem/FreeMem/eallocMem) sorgen.
Delphi-Quellcode:
MyDoubleVar := GetMem(x * SizeOf(Double));

thomasdrewermann 24. Jul 2006 16:42

Re: Merkwürdiges Problem mit einem dynamischen Array
 
Nach der Speicherreservierung kann ich das verpointete Array normal nutzen? Also über a[x]?

Gruß
Thomas

DGL-luke 24. Jul 2006 16:49

Re: Merkwürdiges Problem mit einem dynamischen Array
 
jop.

Setlength funktioniert dann natürlich nicht, zur Vergrößerung musst du wieder Speicher alloziieren. (wie geht denn das? den speicherbereich vergrößern? :gruebel: )

thomasdrewermann 24. Jul 2006 16:51

Re: Merkwürdiges Problem mit einem dynamischen Array
 
Vielen Dank!

Dann weiss ich bescheid!

Gruß
Thomas

Khabarakh 24. Jul 2006 16:54

Re: Merkwürdiges Problem mit einem dynamischen Array
 
Zitat:

Zitat von DGL-luke
(wie geht denn das? den speicherbereich vergrößern? :gruebel: )

So wie es SetLength auch macht: Neuen, größeren Speicher reservieren, Inhalt aus dem alten rauskopieren und diesen dann freigeben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:49 Uhr.
Seite 1 von 2  1 2   

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