![]() |
Dynamisches Array als Parameter einer Prozedur
Hallo,
ich probiere jetzt schon längere Zeit herum, komme aber zu keiner schönen Lösung. Ich möchte eine Funktion schreiben, die ein Array zurück gibt, dessen Länge variabel sein soll. Diese Prozedur soll wie folgt aufgerufen werden:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var liste : array of string; begin explode('-', 'Mein Name - ist - Stefan', liste); {Länge des dyn. Array soll in explode gesetzt werden} end; In der procedure explode würde ich dann gern so verfahren:
Delphi-Quellcode:
Leider lässt die herkömmliche Deklaration eines Arrays als Parameter keine Unterscheidung zwischen dynamischem und statischem Array zu.
procedure TForm1.explode(separator, str: String; var liste: array of string); {hier ist Teil 1 des Problems}
var n:integer; begin n:=0; repeat if ... then begin inc(n) setlength(liste, n); {hier ist Teil 2 des Problems} liste[n] := ... end; end; Wie kann ich dieses Problem umgehen/lösen? Wäre ein dynamisches Array evtl. auch als Rückgabewert einer function realisierbar? Diese Lösung wäre ja noch ein wenig eleganter. Ich würde allerdings gern vermeiden, einen eigenen Typ zu deklarieren, wie es unter ![]() Wäre wirklich nett, wenn mir jemand helfen würde. mfg changlee |
Re: Dynamisches Array als Parameter einer Prozedur
hier nen beitrag mit der gesuchten funktion:
![]() und um deine frage zu beantworten.... du musst dein "array of string" einfach in als typ definieren quasi: type TDynStrArray=Array of String; und dann immer 'TDynStrArray' statt 'Array of String' benutzen und schon gehts :) vllt weiß ja noch jemand wieso das so sein muss... und nicht auch anders geht... grüße, paresy |
Re: Dynamisches Array als Parameter einer Prozedur
Hallo Paresy,
danke für deine Antwort. Ich werde mich wohl damit abfinden müssen einen eigenen Typ zu deklarieren. Ich hab das auch gerade mal nach deinem Vorschlag umgesetzt. Funktioniert alles. Danke auch für den Link, wo der Quellcode für die gewünscht Funktion/Prozedur explode steht. Ich hatte das seltsamerweise gar nicht gefunden. Naja, jetzt habe ich explode sowieso schon selbst fertig geschrieben :) mfg changlee |
Re: Dynamisches Array als Parameter einer Prozedur
Zitat:
In der Delphi 7 Onlinehilfe steht Typidentität Für die Typidentität gilt folgende Regel: Wenn ein Typbezeichner mit einem anderen Typbezeichner deklariert wird (ohne Qualifizierer), bezeichnen beide denselben Typ. Betrachten Sie die folgenden Typdeklarationen:
Delphi-Quellcode:
Hieraus folgt, dass T1, T2, T3, T4 und Integer identische Typen sind. Um unterschiedliche Typen zu definieren, wiederholen Sie das Wort type in der Deklaration. Ein Beispiel:
type
T1 = Integer; T2 = T1; T3 = Integer; T4 = T2;
Delphi-Quellcode:
Diese Anweisung erzeugt z. B. einen neuen Typ namens TMyInteger, der nicht mit Integer identisch ist.
type TMyInteger = type Integer;
Sprachkonstrukte, die als Typnamen fungieren, erzeugen bei jedem Auftreten einen anderen Typ. Die folgenden Typdeklarationen
Delphi-Quellcode:
definieren beispielsweise die beiden unterschiedlichen Typen TS1 und TS2. Entsprechend werden mit den Variablendeklarationen
type
TS1 = set of Char; TS2 = set of Char;
Delphi-Quellcode:
zwei Variablen unterschiedlichen Typs erzeugt. Um Variablen mit identischem Typ zu deklarieren, gehen Sie folgendermaßen vor:
var
S1: string[10]; S2: string[10];
Delphi-Quellcode:
or
var S1, S2: string[10];
Delphi-Quellcode:
type CString = string[10];
var S1: MyString; S2: MyString; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:56 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-2025 by Thomas Breitkreuz