Deutsch
Forum

Werte einer Klasse anzeigen Class Struct

 

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#[]
 
XProfan X3
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
19.05.2018  
 




p.specht

Toll!
 
XProfan 11
Computer: 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?
 
XProfan X3
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
20.05.2018  
 




p.specht

RGH fragen ... wird aber vielleicht zu versionsabhängig?
 
XProfan 11
Computer: 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.
Declare Mem bereich
Struct Daten = Alter&, Name$(10), Gehalt%
Dim bereich, Daten
Cls

With bereich

    bereich.Alter& = 60
    bereich.Name$ = "RGH Autor von XPROFAN"
    bereich.Gehalt% = 10000

EndWith

Print bereich.Alter&, bereich.Name$, bereich.Gehalt%
Print
Print Long(bereich, 0)
Print String$(bereich, 4)
Print Long(bereich, 15)' 1 Byte mehr wegen Chr$(0)
Waitkey
Dispose bereich
End

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  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

4.160 Betrachtungen

Unbenanntvor 0 min.
Matzbub03.02.2024
Normann Strübli05.02.2023
Stringray05.01.2022
iF31.10.2020
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

Jörg Sellmeyer (3x)
H.Brill (2x)
p.specht (2x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie