Autor Beitrag
Hagbard Celine
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 119



BeitragVerfasst: So 22.09.02 18:40 
Ich muss als Ergebnis einer Funktion ein Array eines eigenen Objekttyps zurückgeben!

mein Aufruf sieht wie folgt aus :

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


Meine Procedure sieht so aus :

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


Meine Funktion sollte logischerweise diese Form haben :

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


Aber das gibt folgenden Fehler :

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 167



BeitragVerfasst: So 22.09.02 21:17 
Hi Celine,

du musst erst dein array als Typ deklarieren... Etwa so:
ausblenden Quelltext
1:
2:
type
  TTags = array of TmeineTags ;

Danach müsstest du dein Funktion deklarieren können mit
ausblenden Quelltext
1:
function TdeinObject.getTags : TTags ;					


Gruss,
tom
Hagbard Celine Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 119



BeitragVerfasst: So 22.09.02 21:29 
Cashels hat folgendes geschrieben:
Hi Celine,

du musst erst dein array als Typ deklarieren... Etwa so:
ausblenden Quelltext
1:
2:
type
  TTags = array of TmeineTags ;

Danach müsstest du dein Funktion deklarieren können mit
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 167



BeitragVerfasst: Mo 23.09.02 08:47 
Ups, die Zeile hab ich übersehen. Sorry.

Tom
Hagbard Celine Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 119



BeitragVerfasst: 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!!!

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: 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!

_________________
Computer können schneller rechnen als wir, deshalb machen sie auch mehr Fehler
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: 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