Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi dyn. zweidimensionales Array an eine Funktion übergeben (https://www.delphipraxis.net/101262-dyn-zweidimensionales-array-eine-funktion-uebergeben.html)

bennle 10. Okt 2007 16:12


dyn. zweidimensionales Array an eine Funktion übergeben
 
Hallo,
Wie der Titel verrät möchte ich eine Funktion haben, welche ein dynamisches zweidimensionales Array aufnimmt.

Ich habe es folgendermaßen versucht:
Delphi-Quellcode:
function (xy: Array of Array of String) ....
Leider ohne Erfolg! Wie kann ich das realisieren ohne unbedingt dieses Array als globale Variable zu setzen?

Dax 10. Okt 2007 16:13

Re: dyn. zweidimensionales Array an eine Funktion übergeben
 
Delphi-Quellcode:
type
  Foo = array of array of string;

procedure bar(xyz: Foo);
begin
  // ...
end;

bennle 10. Okt 2007 16:16

Re: dyn. zweidimensionales Array an eine Funktion übergeben
 
Super, klappt hervorragend! Einfacher als ich dachte :D

bennle 10. Okt 2007 18:38

Re: dyn. zweidimensionales Array an eine Funktion übergeben
 
Zu früh gefreut!! Leider bekomme ich nun folgenden Fehler, wenn ich die Funktion ausführen will:
Delphi-Quellcode:
[DCC Fehler] Unit5.pas(308): E2010 Inkompatible Typen: 'a_Daten' und 'dynamic array'
a_Daten war natürlich ein dynamisches Array nur wurden diesem nun Werte zugewiesen! Wie kann ich diese Daten nun in meiner Funktion nutzen?
Ich kenne ja leider nicht die Eingabegröße!

Lord Shadow 10. Okt 2007 18:43

Re: dyn. zweidimensionales Array an eine Funktion übergeben
 
Falls du mir Eingabegröße meinst wieviele Einträge das Array besitzt dies erhältst du mit high(Array). Und noch was ein Array muss immer bevor du mit dem Arbeitest eine festgelegte Größe haben setlength(Array,x).

Mfg Shadow

bennle 10. Okt 2007 18:51

Re: dyn. zweidimensionales Array an eine Funktion übergeben
 
Zitat:

Zitat von Lord Shadow
Falls du mir Eingabegröße meinst wieviele Einträge das Array besitzt dies erhältst du mit high(Array). Und noch was ein Array muss immer bevor du mit dem Arbeitest eine festgelegte Größe haben setlength(Array,x).

Mfg Shadow

Ja das ist mir klar, allerdings habe ich wie oben eine function erstellt! Als Eingabewert der Funktion wurde einfach das type Array of Array of String gewählt.
Nun setze ich das definierte Array (z.B. mit 5 Feldern) in die function ein.
Und dann kommt die Meldung!
Ich verstehe es so, als würde er gerne das Array von der Funktion genauer definiert bekommen! (also Statisch!)

Was muss ich tun, damit ich mein Array hineinbekomme? Ohne die dynamische Größe zu verlieren!

FAlter 10. Okt 2007 19:19

Re: dyn. zweidimensionales Array an eine Funktion übergeben
 
Hi,

ich Schätze, es du hast es so:

Delphi-Quellcode:
type
  T2DStrings = array of array of String;

function foo(Strings: T2DStrings): TBlubb;

...
var
  Foo2: array of array of String;
...
if foo(Foo2) then
  ...
Ändere die Variablendeklaration dann auch in

Delphi-Quellcode:
var
  Foo2: T2DStrings;
Mfg
FAlter

bennle 10. Okt 2007 20:18

Re: dyn. zweidimensionales Array an eine Funktion übergeben
 
Super! Das führte zum Erfolg!

Kann ich eigentlich dieses type gleich oben im "Kopf" definieren?? Also an der Stelle mit den Objektdeklarationen. Wenn ja wie?

DeddyH 10. Okt 2007 20:23

Re: dyn. zweidimensionales Array an eine Funktion übergeben
 
Einfach drunterschreiben.
Delphi-Quellcode:
type TFormBla = class(TForm)
  ...
end;

T2DStrings = array of array of String;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 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 by Thomas Breitkreuz