ich habe eine Prozedur Lff geschrieben, die die Erstellung von Fenstern mit Listenfeldern (ListView) automatisieren soll. Genauer: Die Prozedur erstellt ein Fenster mit einem Listenfeld , befüllt es und plaziert Bildschaltflächen darunter, was dann in etwa so aussieht: https://www.dropbox.com/s/c31ozj4nt4pg9 ... nhalte.jpg
Die Nummern für Fenster, Listenfeld und Bildschaltflächen werden in der Prozedur mit #PB_Any generiert und in einem Array (zur späteren Verwendung in der Repeat-Ereignisschleife) abgelegt.
Nun kann eine Prozedur bedauerlicherweise keine Arrays zurückliefern. Ich konnte mich aber noch dunkel an eine Bemerkung in Gary Willoughbys Buch erinnern, daß man diese Einschränkung umgehen kann:
(S. 92 unten). Meine Prozedur gibt also kein Array, sondern den Zeiger auf das Array mit den Nummern zurück: ProcedureReturn @K(). Der Aufruf der Prozedur sieht dann so aus:It is however possible to get around these limitations, by returning a pointer.
Code: Alles auswählen
Define *K=Lff("Lerninhalte", 375, "Helios", 10, 20, I(), BuHt(), 1)Code: Alles auswählen
Define Fe_H=PeekI(*K), Zs_Lf=PeekI(*K+8), Lf_Li=PeekI(*K+16)Code: Alles auswählen
Dim K(9)
K(0)=PeekI(*K)
K(1)=PeekI(*K+8)
K(2)=PeekI(*K+16)
K(3)=PeekI(*K+24)
K(4)=PeekI(*K+32)
K(5)=PeekI(*K+40)
K(6)=PeekI(*K+48)
K(7)=PeekI(*K+56)
K(8)=PeekI(*K+64)
K(9)=PeekI(*K+72)Und nun ein Effekt, den ich mir nicht erklären kann. Wenn ich diese umständliche explizite Wertezuweisung durch eine For-Next-Schleife automatisieren will (zumal ja auch die Gefahr besteht, sich bei längeren Arrays beim Offset zu verrechnen):
Code: Alles auswählen
Dim K(9)
For Ix=0 To ArraySize(K())
K(Ix)=PeekI(*K+Ix*8)
NextHat von Euch jemand eine Idee, woran das liegt?
Vielen Dank