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 dynamisches array an procedure übergeben (https://www.delphipraxis.net/140342-dynamisches-array-procedure-uebergeben.html)

messie 16. Sep 2009 11:00


dynamisches array an procedure übergeben
 
Moin,

habe gerade mal wieder eine kleine Blockade.
Ich habe ein array{Zeile} of array{Spalte} und möchte array[x] {also eine Zeile} an eine Prozedur übergeben. Da renne ich mal wieder mit dem Kopf an die Wand, weil das array in der Prozedurdeklaration ja anders betrachtet wird als das dynamische array. Normalerweise würde ich da Typen benutzen, schon wegen der Übersichtlichkeit. Hier geht das aber nicht.

Kann mir jemand einen Anstoss geben?

Danke, Messie

Klaus01 16. Sep 2009 11:02

Re: dynamisches array an procedure übergeben
 
Hallo messie,

geht es denn nicht mit einem offenen Array in der Parameterliste der Prozedur?

Delphi-Quellcode:
procedure einName(data: Array of Byte);
Grüße
Klaus

Medium 16. Sep 2009 11:05

Re: dynamisches array an procedure übergeben
 
Oder eben doch mit nem Typen:
Delphi-Quellcode:
type
  TSubArray = array of Foo;
.
.
procedure Foobar(peng: TSubArray);
.
.

var
  Bar: array of TSubArray;
begin
  Foobar(Bar[i]);
end;

DeddyH 16. Sep 2009 11:05

Re: dynamisches array an procedure übergeben
 
[edit] Siehe mein Vorredner [/edit]

messie 16. Sep 2009 11:17

Re: dynamisches array an procedure übergeben
 
Nee, gibt Compilermecker
Delphi-Quellcode:
var
  Dingens : array of array of variant;

implementation
 
  procedure MachMalWas(Input : array of variant)
wird bei der Übergabe von
Delphi-Quellcode:
MachMalWas(Dingens[0])
abgelehnt.
Zitat:

Inkompatible Typen: Array und Dynamic array
Typen dürfen nicht benutzt werden.

Grüße, Messie

gammatester 16. Sep 2009 11:28

Re: dynamisches array an procedure übergeben
 
Zitat:

Zitat von messie
Nee, gibt Compilermecker
Delphi-Quellcode:
var
  Dingens : array of array of variant;

implementation
 
  procedure MachMalWas(Input : array of variant)
wird bei der Übergabe von
Delphi-Quellcode:
MachMalWas(Dingens[0])
abgelehnt.
Zitat:

Inmopatible Typen: Array und Dynamic array
Typen dürfen nicht benutzt werden.

Grüße, Messie

Und was hat das mit dem Thema zu tun? Außerdem benutzt Du doch gar keine Typdefinitionen (type Tdinges = ...)!

Medium 16. Sep 2009 11:30

Re: dynamisches array an procedure übergeben
 
Zitat:

Zitat von messie
Typen dürfen nicht benutzt werden.

Dann bleibt dir nur noch die C-Variante: Pointer auf's erste Element, und Count übergeben. Warum keine Typen!?

gammatester 16. Sep 2009 11:38

Re: dynamisches array an procedure übergeben
 
Messies Beispiel kann man natürlich so umschreiben, daß es ohne Fehler kompiliert:

Delphi-Quellcode:
type
 TDingens1 = array of variant;
 TDingens2 = array of TDingens1;

var
  Dingens : TDingens2;

procedure MachMalWas(Input : TDingens1);
begin
  //....
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MachMalWas(Dingens[0]);
end;

himitsu 16. Sep 2009 11:39

Re: dynamisches array an procedure übergeben
 
Delphi-Quellcode:
type TDingens = array of variant;
  TDingens2 = array of TDingens;

var
  Dingens : TDingens2;

implementation

  procedure MachMalWas(Input : TDingens)
[edit]
da is man ma kurz abgelenkt :cry:

nja, aber zum Problem: Typen müssen genau übereinstimmen und nicht nur gleich aussehn

also das geht auch, da dort TDidinges GENAU das Gleiche ist
Delphi-Quellcode:
type TDingens = array of variant;

var
  Dingens : array of TDingens;

implementation

  procedure MachMalWas(Input : TDingens)

messie 16. Sep 2009 11:56

Re: dynamisches array an procedure übergeben
 
Zitat:

Zitat von Medium
Warum keine Typen!?

Typen dürfen nicht benutzt werden, weil der Code später in ein Script ausgelagert werden soll (FastScript). Und das unterstützt keine Typen. Denn ein Typ ist eine Speicherstruktur, wie soll das dem Script übergeben werden?

Grüße, Messie


Alle Zeitangaben in WEZ +1. Es ist jetzt 01: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