Object (aus SoftPixel Engine)

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

PacMani

Betreff: Object (aus SoftPixel Engine)

BeitragSo, Aug 19, 2012 12:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Den Fehler habe ich auch. Parameter einfach umbenannt in "Obj". Anscheinend ist "Object" schon definiert?

~AUFSPALTUNG~

Von hier.
Xeres.

Chester

BeitragSo, Aug 19, 2012 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Object ist BB-intern schon reserviert.
 

PacMani

BeitragSo, Aug 19, 2012 19:20
Antworten mit Zitat
Benutzer-Profile anzeigen
und was sich dahinter verbirgt, ist ja unheimlich praktisch Very Happy warum ist sowas undokumentiert? Very Happy

Propellator

BeitragSo, Aug 19, 2012 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Weils unnötig ist, du kannst ja einfach das Objekt rumgeben.
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis.
 

PacMani

BeitragSo, Aug 19, 2012 22:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich aber nur den Handle habe, nicht.

BladeRunner

Moderator

BeitragMo, Aug 20, 2012 8:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann hast Du fehlerhaft programmiert, denn eigentlich solltest Du ja alle Objekte die zur Laufzeit eexistieren selbst erstellt haben und daher auch ihren Typ kennen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

PacMani

BeitragMo, Aug 20, 2012 8:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, unschön ist das schon irgendwo. Ich merke mir aber zum Beispiel bei einem Menüsystem nur den Handle des angeklickten Buttons, damit ich in einer Select-Case-Anweisung je nach Button eine zugehörige Aktion aufrufen kann. Die Button-"Instanz" brauche ich dazu aber nicht - falls doch, habe ich nun aber zwei Möglichkeiten: Entweder die Instanz ablegen oder mit Object die Instanz zum Handle holen.

Letzteres ist aber in der Tat unschön.
Ehrlich gesagt meinte ich auch eher, warum so etwas wie Handle undokumentiert ist - bisher habe ich immer eigene IDs berechnet - was ich mir hierdurch sparen kann.

Propellator

BeitragMo, Aug 20, 2012 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst dir nicht mal eigene IDs berechnen, das Objekt selbst ist schon die ID, afair. Jedenfalls vermute ich dem so, wäre es nicht, dann ist BlitzBasic echt eine seltsame Sprache.
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis.
 

PacMani

BeitragMo, Aug 20, 2012 17:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, du kannst aber keine Types als gegenprüfenden Wert in Select...Case-Anweisungen nutzen.

Chester

BeitragMo, Aug 20, 2012 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Handle/Object-Prinzip ist aus dem Grund den BladeRunner schon sagte eigentlich wirklich überflüssig. Man erhält einen schöneren Code und spart sich an vielen Stellen Schreibarbeit, aber letztendlich funktioniert es auch ohne. Es stimmt aber, dass Select nicht mit Types arbeitet. Aber ist es ja auch kein großer Aufwand mit normalen Abfragen zu arbeiten.

BlitzBasic: [AUSKLAPPEN]
Type TTest : End Type : Test1.TTest= New TTest

TestSelect.TTest=Test1

If TestSelect = Test1 Then bla()

; macht das selbe wie:
TestSelect = Handle (Test1)

Select TestSelect
Case Handle(Test1)
bla()
End Select

Eingeproggt

BeitragMo, Aug 20, 2012 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist es lang her dass ich damit gespielt hab... aber was mir in Erinnerung blieb möcht ich hier beitragen:
Die einzige sinnvolle Anwendung davon fand ich in der blitzUI (jaja, manch einer wird noch wissen dass ich da mal länger damit herum gebastelt hab Wink )
Dort gab es, um die einzelnen GUI-Komponenten zu steuern ein "SendMessage" welchem man ein Handle übergibt. Dieses Handle wird dann der Reihe nach zu einem Fenster, Button, Textbox,... gecastet und wenn <>Null raus kommt wußte man, woran man ist.
Mag etwas verwirrend sein und möglicherweise kann mir jemand eine gute Alternative dazu nennen. Aber auf diese Weise wurde Object() verwendet, um nicht für jeden Type eine eigene Funktion zu basteln.
Und da mein Gerede mittlerweile niemand versteht, hier ein praktisches Beispiel:

So siehts in der blitzUi aus:
Code: [AUSKLAPPEN]
SendMessage(Handle(button1),"SetLabel","Hallo")

so würde das nach BladeRunners Vorschlag aussehen:
Code: [AUSKLAPPEN]
SendMessage(button1,"SetLabel","Hallo")

Doch dann könnte man "SendMessage" nur für Buttons gebrauchen und für sonst nix. Das meinte ich mit "für jeden Type ne eigene Funktion" weil die logische Weiterentwicklung wär doch:
Code: [AUSKLAPPEN]
SendButtonMessage(button1,"SetLabel","Hallo")

...und genau das würde etwas ausarten und ich bin froh dass es mit Object/Handle umgangen wird in diesem speziellen Fall.

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

Freak123

BeitragDi, Aug 21, 2012 9:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke auch, dass ein verwenden von Handle/Object in der Lib-Programmierung verwendet werden sollte.
Sonst müsste sich der Anwender ständig mit irgendwelchen Typenamen auseinandersetzten, die er schlussendlich dann eh nicht braucht.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group