Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Rückgabe Array über Funktion (https://www.delphipraxis.net/130304-rueckgabe-array-ueber-funktion.html)

punker-lili 6. Mär 2009 07:29


Rückgabe Array über Funktion
 
Guten Morgen!
Ich möchte eine Funktion haben, die mir ein Array of integer zurückgibt. Wenn ich das normal hinschreibe, fibt Delphi folgende Fehlermeldung zurück: "Bezeichner erwartet, aber ARRAY gefunden."
-->
Delphi-Quellcode:
function ableiten_koeff(gesamte:array of string;koff:array of integer;var ableit_fkt:array of string):array of integer;
Wenn ich einen neuen Typ deklariere, meckert er auch rum.
Delphi-Quellcode:
function ableiten_koeff(gesamte:array of string;koff:array of integer;var ableit_fkt:array of string):array of integer;
var abl_koeff,i,exp:integer;
begin
for i:=1 to length(koff)-1 do
begin
 exp:=exponent(gesamte[i]);
 abl_koeff:=exp*koff[i];
 if exp > 2 then
  ableit_fkt[i]:=inttostr(abl_koeff)+'x^'+inttostr(exp-1)
 else
  ableit_fkt[i]:=inttostr(abl_koeff);
[u][b] ableiten_koeff[i]:=abl_koeff;[/b][/u]
end;
end;
Er compiliert zwar das Programm, aber er gibt einen Zugriffsfehler aus.

Wie kann ich das Problem beheben?

MfG punkerlili

Matze 6. Mär 2009 07:36

Re: Rückgabe Array über Funktion
 
Guten Morgen

Zitat:

Zitat von punker-lili
Wenn ich einen neuen Typ deklariere [...]

Dann mache es doch auch. ;)

Delphi-Quellcode:
type
  TMyArrayI: array of Integer;
  TMyArrayS: array of string;

var
  MyArrayI: TMyArrayI;
  MyArrayS: TMyArrayS;

// ...

function ableiten_koeff(gesamte: TMyArrayS; koff: TMyArrayI; var ableit_fkt: TMyArrayS): TMyArrayI;
Grüße, Matze

ChrisE 6. Mär 2009 08:13

Re: Rückgabe Array über Funktion
 
Hallo,

Und es gibt auch bereits fertige deklarationen für diese dynamischen Arrays in der Unit Types

Delphi-Quellcode:
TIntegerDynArray     = array of Integer;
{$EXTERNALSYM TIntegerDynArray}
//...
TStringDynArray      = array of string;
{$EXTERNALSYM TStringDynArray}
Dadurch kann man sich die Deklaration sparen und verwendet über versch. Projekte hinweg die selben Typen. Allerdings weiß ich nicht seit welcher Delphiversion es diese Typen gibt.

Gruß, Chris

Hawkeye219 6. Mär 2009 08:16

Re: Rückgabe Array über Funktion
 
Hallo punkerlili,

du kannst die Zugriffsverletzung verhindern, indem du das dynamische Rückgabe-Array geeignet dimensionierst:

Delphi-Quellcode:
begin
  SetLength (Result, Length(koeff));
[...]
end;
Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:18 Uhr.

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