| |
|
|
pfisterhamj | Hallo,
ich würde gerne ein assoziatives Array oder ein dynamisches Array innerhalb einer Klasse nutzen (Als Eigenschaft). Leider hab ich bisher noch keinen Weg gefunden XProfan (X4) das auch korrekt mitzuteilen.
Wenn ich die Hilfe jedoch richtig lese kommt bei mir die Frage - geht das überhaupt?
Vielleicht hat jemand einen Tip wie ich sowas bewerkstelligen könnte.
Vielen Dank schonmal. |
|
|
| |
|
|
|
H.Brill | Leider ist es halt so, daß Strukturen und Klassen eine feste Größe haben müssen, damit man mit DIM eine solche erzeugen kann. Deshalb kommen auch nur die einfachen Variablen in Betracht :
Der Typ der Elemente wird durch das Postfix gekennzeichnet:
&: 32-Bit Integer (Integer, LongInt: 4 Byte).
%: vorzeichenloser 16-Bit Integer (Word, ShortInt: 2 Byte).
$(n): Strings. n=Länge des Strings. Es ist zu berücksichtigen, dass immer ein Null-Byte als Endekennzeichen an den String angehängt wird! Deshalb muß n hier immer um 1 Byte größer angegeben werden, als Zeichen in den String passen sollen.
!: Fließkommazahlen (Double-Format: 64 Bit bzw. 8 Byte, das entspricht dem Float-Typ von XProfan).
#(n): Speicherbereich. n=Größe des Bereiches. Diese Speicherbereiche innerhalb einer Bereichsvariablen sind nicht mit Bereichsvariablen selbst zu verwechseln. Innerhalb der Struktur wird ein entsprechend großer Bereich an Bytes definiert, auf den wie bei einem String zugegriffen werden kann, mit dem Unterschied, dass es kein Null-Byte als Endekennzeichen gibt.
:@ Methode: Name einer Methode. Diese muss als Prozedur im Programm definiert sein, wobei ihr Name aus dem Klassennamen und dem Methodennamen (ohne @), verbunden mit einem Punkt, besteht.
Einzig mit #(n) könnte man ein statisches (festes) Array simulieren. Mit Zahlen ist das ja kein Problem wegen der 4-Byte Grenze. Bei Strings würde ich dann alle Strings gleich lang machen (MKStr$), um sie später besser ausfiltern zu können.
Da muß man sich halt überlegen, was man mit OOP macht und was besser ohne geht. Ein korrespondierendes dyn. Array geht ja auch. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 24.12.2019 ▲ |
|
|
|
|
pfisterhamj | Danke für die Antwort. Dann muss ich mir was anderes überlegen. |
|
|
| |
|
|
|
H.Brill | Vielleicht wäre sowas interessant. Gerade mal ausprobiert :
Class MeineKlasse = X%, T$(10), MeineKlasse@
Class MeinArray = X%, B$(10), MeinArray@
Proc MeineKlasse.MeineKlasse
Parameters Long A[], String B[]
WhileLoop 0, SizeOf(A[]) - 1
.X% = A[&LOOP]
.T$ = B[&LOOP]
Print .X%, .T$
EndWhile
EndProc
Proc MeinArray.MeinArray
Parameters String A[]
Declare String C[]
C[] = A[]
WhileLoop 0, SizeOf(C[]) - 1
Print C[&LOOP]
EndWhile
EndProc
Declare MeinObjekt#, MeinFeld#
Cls
MeinObjekt# = New(MeineKlasse,Array(Long 1, 2, 3, 4 ,5), Array(String "Das", "ist", "ein", "kleiner", "Test !"))
Print
MeinFeld# = New(MeinArray, Array(String "das", "geht", "auch."))
WaitKey
Dispose MeinObjekt#, MeinFeld#
End
|
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 24.12.2019 ▲ |
|
|
|