Type als Array ansprechen
Übersicht

![]() |
hecticSieger des IS Talentwettbewerb 2006Betreff: Type als Array ansprechen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich benötige acht Typefelder mit jeweils unbekannter Anzahl von Einträgen. Dabei möchte ich vermeiden, dass eine riesige Liste per If AktuellerEintrag=BenötigterEintrag Then durchgearbeitet werden muss.
Gibt es eine Möglichkeit mehrere Types als Indizies (nennt man das so?) anzusprechen? Beispiel Code: [AUSKLAPPEN] Type TType[7]
Field Eins% Field Zwei% End Type Klar, man könnte einmal TType1, dann TType2 ... TType8 erstellen. Blöd ist dann aber die spätere Abfrage. Diese müsste dann auch achtmal vorhanden sein statt einmal For Liste.TType[wert]=Each TType[wert] zu schreiben. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
banks? | ||
between angels and insects |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ganze soll für ein Editor sein. In diesem sollen auch Einträge wieder gelöscht werden können. Oder wie meinst du das?
Folgendes hätte ich mir vorestellt gehabt: Code: [AUSKLAPPEN] Graphics 1920,1080,0,2
SetBuffer FrontBuffer() Type TType[1] Field eins% Field zwei% End Type Local meinType.TType[1] TNew(0,101,102) TNew(0,103,104) TNew(1,201,202) TNew(1,203,204) Print "zeige nur aus 0 die werte an '100er'" For meinType.TType[0]=Each TType Print meinType\eins+" "+meinType\zwei Next Print "zeige nur aus 1 die werte an '200er'" For meinType.TType[1]=Each TType Print meinType\eins+" "+meinType\zwei Next WaitKey Function TNew%(pos%,one%,two%) Local meinType.TType[pos]=New TType meinType\eins=one meinType\zwei=two Return Handle(meinType) End Function |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Chester |
![]() Antworten mit Zitat ![]() |
---|---|---|
Irre ich mich, oder sollte eigentlich nicht
Code: [AUSKLAPPEN] Type TType
funktionieren?
Field eins% Field zwei% End Type Local meinType[7].TType meinType[1]\eins=42 Kann es gerade nicht testen und bin mir über die Position der [] unsicher, aber iich glaub ich hatte das auch mal so ähnlich |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hat leider nicht geklappt. Aber das Type müsste ja in das BlitzArray gepackt werden damit es mehrere davon gibt. In deinem Beispiel gibt es ja nach wie vor nur ein Type. Hmmm. Also wenn du eine Lösung dazu hast, würde mich das freuen. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du die Liste sortierst kannst du einmal TType erstellen und dann folgendes tun:
Code: [AUSKLAPPEN] Local ersterEintrag[7].TType
Könntest jetzt 7 Dummy-Instanzen nehmen um damit die Sub-Listen zu trennen (dann musst du die bei For-Each aussortieren) oder du fügst viele !=Null-Vergleiche ein, gibst noch die listennummer jedem Objekt mit und gehst die Sub-Listen mit Until current.listennummer<>listennummer durch. Oder du ignorierst die interne Liste von BB und machst dein eigenes Dim array.TType(listeNummer,eintragNummer) das du mit For i .. For j durchgehst. |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das lässt sich nicht (schön/elegant) in BB lösen, weil es nur exakt eine Liste pro Type gibt.
Gib dem Type noch einen Wert "group" oder "list" und überspringe die ungewollten Werte (jede menge unnötige Schleifendurchläufe!) oder bau die komplette Listenlogik nochmal nach mit einer Mischung aus Handle ![]() ![]() |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das mit dem Nachbauen geht auch einfacher:
Code: [AUSKLAPPEN] Type TList
Field firstElement.TListElement End Type Type TListElement Field nextElement.TListElement ... End Type ;For Each einer Liste Local l.TList=First TList;welche Liste auch immer Local current.TListElement=l.first While current ... current=current\nextElement Wend ;Insert New TListElement Before First TListElement current=new TListElement current\nextElement=l.firstElement l\firstElement=current ;Delete current=... If current\nextElement current\nextElement=current\nextElement\nextElement Endif Delete current Dabei ist zu beachten, dass die Reihenfolge in den einzelnen Listen nichts mit der Reihenfolge von For Each/Insert After Before zu tun hat. Zum durchgehen allet TListElement kann man wenn einem die Reihenfolge egal ist aber immernoch For Each nehmen. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok, danke erstmal für die Vorschläge. Ich werde mir das mal die Tage zu Gemüte führen. Es ist jetzt zwar kein Weltuntergang acht Listen per Ident auszufiltern, dafür ist die Abarbeitung der Types zu schnell. Aber eine "schönere" Lösung hätte ich mir schon gewünscht. Das Beispiel von Silver_Knee prüfe ich auch noch mal durch. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group