Wie 2dim Array unbek.Grösse in funct. übergeben

Für Komponentenentwicklung in BD7:
Wie kann ich 2dim. Arrays unbekannter Grösse in eine Function oder Procedure einer Komponente übergeben.
Das Problem das ich dabei sehe ist:
Wenn ich ein Array als Pointer übergebe muss die Function/Procedure der Komponente die Struktur/Grösse kennen.
Wenn ich das Array undimensioniert übergebe muss ich es in der Komponente dimensionieren. dabei ist mir die Syntax unklar, da meine Versuche zu Compilerfehlern in der Parameterliste führten.
Mein Wunsch also, ein zweidim. Array bekannten Types und unbekannter Grösse möglichst einfach durch den Flaschenhals einer Parameterübergabe zu bekommen, so dass die Komponenten-Function/Procedure die Grösse wieder richtig erkennt.

Vielen Dank für einen Tip

E. B.

Einfach einen Typ deklarieren:

type
TMyArray = array of integer of string;

function XY(MyArray: TMyArray): xx

die Länge kann dann mit Length herausgefunden und mit SetLength gesetzt werden.

und das geht auch rückwirkend, Deine Deklaration und dann plötzlich wird die Function mit einem Parameter yy:array[1…512,1…256] of single; aufgerufen.
Ist es wirklich egal, welchen Typs/welcher Struktur/Grösse der ArrayTyp vorher deklariert wurde ?

Danke

E. B.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ja, das sagt der deklarierte Typ implizit, vermutlich mittels RTTI. Der gemeinsame Typ muss einfach allen Modulen, die Schnittstellen haben bekannt sein. Ginge auch mit Variant-Arrays.

Jeder ‚Teilnehmer‘ kann dann solche Informationen auslesen.

funktionierte bei mir leider nicht…
Hat bei mir leider nicht funktioniert.
Testprogramm mit entsprechender Komponente brachte Fehlermeldung:
AA und KA sind inkompatible Typen
(AA=array[1…5,1…5] of single (in der Anwendung)
und
KA=array of array of single (in der Komponente))
In der Komponente habe ich zwei procedures geschrieben, die erste zum dimensionieren des Arrays und die zweite zum benutzen des Arrays und Array-Parameterübernahme aus der Anwendung.

Nun habe ich keine Ahnung von RTTI und {$M+}.

Könnte ich nochmal Hilfe bekommen

Vielen Dank

E. B.

Naja, geht natürlich nur mit gleichen Typen, wenn du AA verlangst musst auch AA liefern und nicht KA. Sonst müsstest wohl mit Variants bzw. VariantArrays abeiten wenn Du beides willst…

Ich würde den gemeinsamen Typ z. B. in einer Dritt-Unit deklarieren, da die Komponente oder weitere Kernel/Core-Teile vermutlich in anderen Units implementiert sind als GUI-Geschichten.