Arrays in einer Structure verwenden...
Verfasst: 22.01.2009 09:25
Ich arbeite im Moment an einem kleinen Programm, welches mir diverse Messkanäle in einem einzeiligen ListIcon anzeigen soll.
Insgesamt habe ich 16 Messkanäle, die zusammen in einer Datei untereinander (Messschritt) und nebeneinander (Kanal0...15)
durch Tabs getrennt (0...15) abgelegt werden.
Im Moment behelfe ich mir beim einlesen und ablegen der Daten im Speicher wie folgt:
...eine recht unelegante Lösung, da ich die Daten viel lieber in einem
Array innerhalb der "DATEN" Liste ablegen würde... also ungefähr so:
Aber genau DAS funktioniert nicht. Aus der Hilfe werde ich nicht schlau.
Wie kann man denn Arrays in einer Liste verwenden?
Kann mir da jemand von Euch vielleicht mit einem Beispiel helfen?
Thx...
Insgesamt habe ich 16 Messkanäle, die zusammen in einer Datei untereinander (Messschritt) und nebeneinander (Kanal0...15)
durch Tabs getrennt (0...15) abgelegt werden.
Im Moment behelfe ich mir beim einlesen und ablegen der Daten im Speicher wie folgt:
Code: Alles auswählen
Enumeration
#window_User
#listicon_Kanal
EndEnumeration
Structure Messkanal
channel00.s: channel01.s: channel02.s
channel03.s: channel04.s: channel05.s
channel06.s: channel07.s: channel08.s
channel09.s: channel10.s: channel11.s
channel12.s: channel13.s: channel14.s
channel15.s
EndStructure
Global NewList DATEN.Messkanal()
Procedure DrawInterface()
If OpenWindow(#window_User, 0, 0, 1, 1, " Rohdaten anzeigen", #PB_Window_SystemMenu|#PB_Window_Invisible)
SetWindowLong_(WindowID(#window_User),#GWL_EXSTYLE,#WS_EX_TOOLWINDOW)
ResizeWindow(#window_User,#PB_Ignore,#PB_Ignore,275,500) : ShowWindow_(WindowID(#window_User),#SW_SHOW)
If CreateGadgetList(WindowID(#window_User))
ListIconGadget(#listicon_Kanal , 5, 5,130,350,"Origalwert",126,#PB_ListIcon_GridLines)
EndIf
EndIf
EndProcedure
Procedure LoadRAWData(filename.s)
ClearList(DATEN())
ClearGadgetItemList(#listicon_Original)
If ReadFile(1,filename)
;Kopfdaten überlesen, hier stehen nur angaben zu den Messgeräten.
For Row=1 To 32: dummy.s=ReadString(1): Next Row
While Eof(1)=0
din.s=ReadString(1)
AddElement(DATEN())
DATEN()\channel00.s=StringField(din, 1,Chr(9))
DATEN()\channel01.s=StringField(din, 2,Chr(9))
DATEN()\channel02.s=StringField(din, 3,Chr(9))
DATEN()\channel03.s=StringField(din, 4,Chr(9))
DATEN()\channel04.s=StringField(din, 5,Chr(9))
DATEN()\channel05.s=StringField(din, 6,Chr(9))
DATEN()\channel06.s=StringField(din, 7,Chr(9))
DATEN()\channel07.s=StringField(din, 8,Chr(9))
DATEN()\channel08.s=StringField(din, 9,Chr(9))
DATEN()\channel09.s=StringField(din,10,Chr(9))
DATEN()\channel10.s=StringField(din,11,Chr(9))
DATEN()\channel11.s=StringField(din,12,Chr(9))
DATEN()\channel12.s=StringField(din,13,Chr(9))
DATEN()\channel13.s=StringField(din,14,Chr(9))
DATEN()\channel14.s=StringField(din,15,Chr(9))
DATEN()\channel15.s=StringField(din,16,Chr(9))
Wend
CloseFile(1)
EndIf
EndProcedure
Array innerhalb der "DATEN" Liste ablegen würde... also ungefähr so:
Code: Alles auswählen
Structure Messkanal
channel.s(16)
EndStructure
Global NewList DATEN.Messkanal()
Procedure LoadRAWData(filename.s)
ClearList(DATEN())
ClearGadgetItemList(#listicon_Original)
If ReadFile(1,filename)
;Kopfdaten überlesen, hier stehen nur angaben zu den Messgeräten.
For Row=1 To 32: dummy.s=ReadString(1): Next Row
While Eof(1)=0
din.s=ReadString(1)
AddElement(DATEN())
For ch=1 to 16
DATEN()\channel(ch)=StringField(din, ch,Chr(9))
Next ch
Wend
CloseFile(1)
EndIf
EndProcedure
Wie kann man denn Arrays in einer Liste verwenden?
Kann mir da jemand von Euch vielleicht mit einem Beispiel helfen?
Thx...