[gelöst] Type Handle
Übersicht

Hex²Betreff: [gelöst] Type Handle |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich schau mir grade BMax an und habe da etwas, was ich bisher nirgends gefunden habe.
Wie komme ich an ein bestimmten Type ran, ohne die komplette Liste durchlaufen zu lassen? Also in BB3D war es ja so: obj.window=OBJECT.window(id) Gibt es sowas auch in BMax? Und wenn nicht, wie löse ich es dann? Danke.. |
||
- Zuletzt bearbeitet von Hex² am Sa, März 18, 2006 2:11, insgesamt einmal bearbeitet
klepto2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Global List:TList = New TList Type TTest Field Name:String End Type For Local I:Int = 0 To 99 Local T:TTest = New TTest T.Name = "TestType"+I List.Addlast(T) Next Local Temp:TTest = TTest(List.Valueatindex(45)) Print "Type 45 = " + Temp.Name mit ValueatIndex kann man Werte direkt ansprechen, wenn man die genaue Position kennt. Allerdings macht diese Funktion auch nichts anderes als die Liste solange durchzugehen, bis sie an der gewünschten stelle ist. Das kostet halt viel Zeit und ist dementsprechend langsam. |
||
Matrix Screensaver
Console Modul für BlitzMax KLPacker Modul für BlitzMax HomePage : http://www.brsoftware.de.vu |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du das Objekt dauerhaft brauchst speichere es einfach
in eine extra Variable . Wird das Objekt angefordert machst du erst einen vergleich mit dem was du zwischen gespeichert hast und wenn es unterschiedlich ist suchst du in der Liste und merkst es dir wieder . |
||
Hex² |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok, danke. Ich werde mal ein wenig rumprobieren. Ich muß aber sagen, die Lösung mit dem Handle fehlt mir schon ein wenig sehr in BMax...
Ich denke mit ein bißchen Fummeln wird mir klepto2's Lösung erstmal weiterhelfen. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du brauchst in BM keine Handles mehr, weil die Objekte wirkliche Objekte sind und nicht nur Zahlen, wie in den alten Blitz.
Vorausgesetzt natürlich das Objekt wurde richtig deklariert (zb bild:TImage) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Suco-XBetreff: ........ |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Hex: Dir ist doch sicher klar, dass viele Wege nach Rom führen. Wenn du einen gefunden hast, heiß das nicht, dass es
A: Der beste ist. B: Man die anderen Wege nicht auch mal ausprobieren kann. Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
Hex² |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe es jetzt erstmal so gelöst, nur ich bin mir sicher es gibt eine wesendlich bessere Lösung ![]() Code: [AUSKLAPPEN] Global List:TList = New TList Global anzahl Type Obst Field Name:String End Type Global apfel:Int=Create("Ein Apfel") Global birne:Int=Create("Eine Birne") Global banane:Int=Create("Eine Banane") Global melone:Int=Create("Eine Melone") Print Draw(banane) Function Draw:String(id:Int) Local t:Obst = Obst(List.Valueatindex(id)) Return t.Name End Function Function Create:Int(text:String) Local T:Obst = New Obst T.Name = text List.Addlast(T) anzahl:+1 Return anzahl-1 End Function Wie erwähnt, bin noch nicht so vertraut mit BMax, und habe auch noch die Demoversion, also ganz frisch umgestiegen ![]() |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das ist eine sehr schlechte Variante es zu lösen, da ValueAtIndex jeweils durch die ganze Liste gehen muss bis es beim Index ankommt. Speicher es besser direkt in einen Array (global obstarray:obst[] = new obst[10] oder was auch immer).
Warum du allerdings umbedingt mit Zahlen arbeiten musst, anstatt mit "sinnvollen" Informationen ... |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Hex² |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ahso.. glaub nun steig ich langsam dahinter.. danke...
natürlich arbeite ich nicht lieber mit zahlen wenn ich es zu verhindern weiß ![]() |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Falls du für jede Obstsorte was eigenes zeichnen willst, würde sich Vererbung gut anbieten. Oder geht es dir wirklich nur um direkten Zugriff auf ein bestimmtes Objekt? Dann ignorier das einfach ![]() Code: [AUSKLAPPEN] Type Obst Field Name:String Method Draw() DrawText Name, 10, 10 End Method End Type Type Apfel Extends Obst Method New() Name = "Apfel" End Method End Type Type Birne Extends Obst Method New() Name = "Birne" End Method End Type Type Banane Extends Obst Method New() Name = "Banane" End Method End Type Type Melone Extends Obst Method New() Name = "Melone" End Method End Type Local list:TList = new TList list.AddLast(new Apfel) list.AddLast(new Birne) list.AddLast(new Banane) list.AddLast(new Melone) 'Alle Typen zeichnen For Local o:Obst = EachIn list o.Draw() Next 'Nur Äpfel zeichnen For Local a:Apfel = EachIn list a.Draw() Next ... |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Global List:TList = New TList Global anzahl Type TObst Field Name:String Function Neu:TObst(Name:String) Local T:TObst=New TObst T.Name=Name List.addlast T anzahl=anzahl+1 Return T End Function Method Zeigen() Print Name End Method End Type Global apfel:TObst=TObst.Neu("Ein Apfel") Global birne:TObst=TObst.Neu("Eine Birne") Global banane:TObst=TObst.Neu("Eine Banane") Global melone:TObst=TObst.Neu("Eine Melone") banane.Zeigen |
||
Hex² |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja super =) danke nochmals an alle, Markus2 hat genau das was ich nun schon seit gestern Abend versuche gepostet lol .. und wenn ich nun sehe wie das funktioniert, vermisse ich die Handles doch nicht mehr *g* .. War ja eigendlich ganz simpel ^^ | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group