Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Array als result einer Funktion


Hagbard Celine - So 22.09.02 18:40
Titel: Array als result einer Funktion
Ich muss als Ergebnis einer Funktion ein Array eines eigenen Objekttyps zurückgeben!

mein Aufruf sieht wie folgt aus :


Quelltext
1:
meinObject.setTags(deinObject.getTags);                    


Meine Procedure sieht so aus :


Quelltext
1:
procedure TmeinObject.setTags(tags: array of TmeineTags);                    


Meine Funktion sollte logischerweise diese Form haben :


Quelltext
1:
function TdeinObject.getTags : array of TmeineTags;                    


Aber das gibt folgenden Fehler :


Quelltext
1:
[Fehler] meinObj.pas(14): Bezeichner erwartet, aber 'ARRAY' gefunden                    


Will keinen eigenen Datentyp erzeugen! Gibt es eine Möglichkeit ohne eigenen Datentyp???


Cashels - So 22.09.02 21:17

Hi Celine,

du musst erst dein array als Typ deklarieren... Etwa so:

Quelltext
1:
2:
type
  TTags = array of TmeineTags ;

Danach müsstest du dein Funktion deklarieren können mit

Quelltext
1:
function TdeinObject.getTags : TTags ;                    


Gruss,
tom


Hagbard Celine - So 22.09.02 21:29

Cashels hat folgendes geschrieben:
Hi Celine,

du musst erst dein array als Typ deklarieren... Etwa so:

Quelltext
1:
2:
type
  TTags = array of TmeineTags ;

Danach müsstest du dein Funktion deklarieren können mit

Quelltext
1:
function TdeinObject.getTags : TTags ;                    


Gruss,
tom


Das ist klar!

Deshalb habe ich aber geschrieben ich suche eine Lösung ohne eigenen Datentyp!

Das ist aus verschiedenen Gründen nicht die angenehmste Lösung!!!


Cashels - Mo 23.09.02 08:47

Ups, die Zeile hab ich übersehen. Sorry.

Tom


Hagbard Celine - Mo 23.09.02 09:18

Cashels hat folgendes geschrieben:
Ups, die Zeile hab ich übersehen. Sorry.

Tom


Kein Thema!

Habs auch einfach nochmal so gelöst wie Du es auch vorgeschlagen hattest! Um vorran zu kommen!
Ein Fehler ist dabei auch nicht mehr aufgetreten!

Ich hatte zuvor Probleme wenn ich mir ein Array eines Datentyps als neuen Typ definiert habe, dann konnte ich ihn nicht einer variable zuordnen welche vom selben aber nicht neu definierten Datentyp war!!!


Quelltext
1:
2:
3:
4:
5:
Type arrStr = array of String;

var
    orgData : array of String;
    myData : arrStr;

Wenn ich jetzt eine Zuweisung orgData := myData gemacht habe gab es fehler!!! Inkompatible Datentypen!!!

Keine Ahnung warum!!

Bin mir nicht mehr sicher wie rum die Zuordnung war und welcher Datentyp es war, muss nicht String gewesen sein! Poste es wenn ich den Fehler noch einmal finde!!!


Manfred - Mo 23.09.02 13:12

Hi!
Warum lässt Du Deine Funktion nicht einfach einen Pointer auf das Array returnieren. Der Aufrufer kann dann damit machen, was er will!


Tino - Mo 23.09.02 14:07

Manfred hat folgendes geschrieben:
Der Aufrufer kann dann damit machen, was er will!

Genau deshalb sollte man es nicht machen :-D