| |
|
|
Jörg Sellmeyer | Mir war es immer zu umständlich, extra irgendwelche Zeilen einzuprogrammieren, um mir bei der Entwicklung die Werte einer Classenstruktur anzeigen zu lassen. Ich hab mir darum was geschrieben, mit dem das sehr einfach machbar ist. Es muss eine Methode zu jeder Klasse hinzugefügt werden und in der Prozedur dazu zwei Zeilen angepasst werden.
Class tTest = hdl&,\
ID%,\
Index%,\
Text$(100),\
tTest@,\
ShowValues@' die Methode muss natürlich in der Struktur eingefügt werden.
Proc tTest.tTest
Parameters h&,i%,ind%,t$
.hdl& = h&
.ID% = i%
.Index% = ind%
.Text$ = t$
EndProc
'diese Prozedur muss eingefügt werden.
Proc tTest.ShowValues
Parameters T#,Titel$
If %pCount > 2
'diese Zeile muss dem jeweiligen Code angepasst werden
Var Values$ = "hdl&,\
ID%,\
Index%,\
Text$(10)"
Declare Wert$,txt$
WhileLoop 3,%pcount
txt$ =SubStr$(Values$,&Loop - 2,",") + " = " + $(&Loop) + "\n"
Wert$ = Wert$ + txt$
Wend
MessageBox(Wert$,ClassOf(T#) + " " + Titel$, 0)
ElseIf %pcount = 2
'und diese Zeile muss dem jeweiligen Code angepasst werden
.ShowValues(T#,Titel$,.hdl&,\
.ID%,\
.Index%,\
.Text$)
EndIf
EndProc
Declare Test#[]
Randomize
Cls
Var hTb& = Create("Toolbar",%hwnd,0,0,4,0,0)
WhileLoop 4
Toolbar("AddButton",hTb&,&Loop,2000 + &Loop,"Text " + Str$(&Loop))
Test#[&Loop - 1] = New(tTest,hTb&,Rnd(20),2000 + &Loop,"Text " + Str$(&Loop))
Wend
Toolbar("Separator",hTb&)
Toolbar("AddButton",hTb&,5,2005,"Zufallswerte")
Toolbar("AddButton",hTb&,6,2006,"beenden")
While 1
WaitInput
If Between(%menuitem,2001,2004)
Test#[%menuitem - 2001].ShowValues(Test#[%menuitem - 2001],"Bitte anzeigen")
ElseIf MenuItem(2005)
Test#[Rnd(4)].tTest(Rnd($FFFFFF),Rnd($FFFF),Rnd($FF),"Zufall " + Time$(0) + ":" + Time$(1))
ElseIf MenuItem(2006)
Break
EndIf
Wend
Dispose Test#[]
|
|
|
| |
|
|
|
p.specht
| |
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 19.05.2018 ▲ |
|
|
|
|
Jörg Sellmeyer | Danke
In dem Zusammenhang würde mich noch interessieren, ob man irgendwie an die Variablen einer Struktur kommt, ohne sie von "innen" aufzurufen.
Mit Long(Test#,n&) kann man sich im Prinzip durchhangeln, wenn nur Longs gespeichert sind. Aber den Bereich nach Werten zu parsen ist praktisch unmöglich. Gibt es also einen Punkt, wo die Einsprungadressen eines Bereichs angegeben sind und evtl auch die Größe des jeweiligen Platzes? |
|
|
| |
|
|
|
p.specht
| RGH fragen ... wird aber vielleicht zu versionsabhängig? |
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 20.05.2018 ▲ |
|
|
|
|
H.Brill | Da so ein Bereich im Grunde nur ein linearer, aneinander liegender Speicherbereich ist, denke ich nicht, daß man da von 'außen' noch anders rankommt. Man kann ja auch mit den normalen Bereichs-Befehlen reinschreiben, was man will. Die Struktur (struct) ist nur ein Hilfsmittel, besonders auch, wenn man mehrere Strukturen in so ein Bereich reinschieben will. Da ist dann auch Rechenarbeit angesagt, bzw. die Länge einer solchen Struktur ist dann zu berücksichtigen. |
|
|
| 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. | 20.05.2018 ▲ |
|
|
|
|
Jörg Sellmeyer | Es kommt ja drauf an, wie Roland das intern verwaltet. Die Einsprungadressen für die einzelnen Strukturvariablen müssen ja zumindest irgendwo abgelegt sein. Mal sehen, was Roland dazu sagt. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 20.05.2018 ▲ |
|
|
|
|
H.Brill | Da gibt es wahrscheinlich keine Einsprungsadressen. Ich denke mal, daß Roland die Strukturvariablen intern zwar verwaltet, aber den Inhalt auch einfach über Errechnen der Position (Byte = 1, Word = 2, Long = 4 usw.) aus dem Bereich ausliest bzw. reinschreibt.
Darum müssen ja auch die Strings in einer Struct ein feste Größe haben. Wie man an folgendem Code sieht, schneidet Roland bei einem größeren String als in der Struct vorgegeben, einfach den Rest ab.
Bei variablen Strings könnte er die Position nicht mehr so einfach errechnen, sondern müßte das Nullbyte mit einbeziehen.
Wenn man sowas braucht, stehen ja immer noch die normalen Bereichsfunktionen zur Verfügung. |
|
|
| 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. | 20.05.2018 ▲ |
|
|
|