Seite 1 von 2

PB Wishlist?

Verfasst: 25.03.2005 17:26
von FGK
Hallo Leute,

einen offizellen PB-Wishlist-Thread gibt es hier im Forum nicht, oder hab ich ihn nicht gleich gefunden?
Na egal ich würde mich über ein Kommando "With"
freuen daß wie in VB (da komm ich ursprünglich mal her *gg)
ein "tippfreundlicher" Umgang mit Struktur-Variablen möglich ist.

Beispiel:

Code: Alles auswählen


Structure Test 
 member.l
 name.s
 xpos.l
 ypos.l
EndStructure

Beispiel.Test

With Beispiel
 \member = 1
 \name = "Test"
 \ypos = 320
EndWith 

Wäre schön so was als "nice to have" in den nächsten Versionen zu finden. Ich weis aber auch daß es hier viel viel wichtigere Dinge gibt die implemnetiert oder verbessert werden müßten bevor man sich an "Nice to have" 's vergnügen sollte. Trotzdem ist das nicht ne Anregung?

Gruß FGK

Verfasst: 25.03.2005 19:04
von mipooh
Meinst Du sowas?

Code: Alles auswählen

  Structure Person
    Name.s
    ForName.s 
    Age.w 
  EndStructure

  Dim MyFriends.Person(100)

  ; Here the position '0' of the array MyFriend()
  ; will contain one person and it's own informations

  MyFriends(0)\Name = "Andersson"
  MyFriends(0)\Forname = "Richard" 
  MyFriends(0)\Age = 32

Das war in der PB-Hilfe unter Structure...

Oder ich hab nicht kapiert, was Du meinst...

Gruss
Mipooh

Verfasst: 25.03.2005 19:05
von bluejoke
ja, was bezweckt dieses "with"?

Verfasst: 25.03.2005 19:17
von freedimension
Das soll nur die Schreibweise etwas abkürzen.

Aus

Code: Alles auswählen

EineRichtigLangeVariable.MeineStruktur

EineRichtigLangeVariable\x = 100
EineRichtigLangeVariable\y = 50
EineRichtigLangeVariable\color = RGB(5,23,42)

Line(EineRichtigLangeVariable\x, EineRichtigLangeVariable\y, EineRichtigLangeVariable\color)
würde

Code: Alles auswählen

EineRichtigLangeVariable.MeineStruktur
With EineRichtigLangeVariable
  \x = 100
  \y = 50
  \color = RGB(5,23,42)

  Line(\x, \y, \color)
EndWith
Ganz einfach - obwohl ich's so auch nich wirklich schön finde, irgendwie fehlt mir jetzt was vor dem Backslash :(

So oder so ähnlich fänd ich OK

Code: Alles auswählen

EineRichtigLangeVariable.MeineStruktur
With EineRichtigLangeVariable
  *\x = 100
  *\y = 50
  *\color = RGB(5,23,42)

  Line(*\x, *\y, *\color)
EndWith

Verfasst: 25.03.2005 19:20
von FGK
Hi ihr beiden,

Freedimension war schneller und hat das ganze auch sofort überrissen - :allright:

es geht mir darum, wenn man viel mit Strukturen arbeitet
und jedesemal um auf ne Variable in dieser Struktur
zugreifen will man den Variablennamen vor den \ schreiben muß. Das ist mir zu tippaufwändig. Deshalb so wie in VB das "With" Kommando
(in VB hat das noch den Vorteil daß z.B. Objekt-Referenzen nicht jedes mal neu aufgelöst werden müssen wenn ein Zugriff auf dieses Objekt gemacht wird. Was die Sache etwas beschleunigt - das ist aber hier nebensächlich! *g)

aus diesem Code

Code: Alles auswählen


  MyFriends(0)\Name = "Andersson" 
  MyFriends(0)\Forname = "Richard" 
  MyFriends(0)\Age = 32

würde dann

Code: Alles auswählen

  
   With MyFriends(0)
     \Name = "Andersson" 
     \Forname = "Richard" 
     \Age = 32
   EndWith

Sicherlich bei nur drei Zuweisungen ist das noch vertretbar aber stellt euch mal ne aufwändigere Structure vor! Und vor jedem Zugriff auf eine Variable da drin muß man den Namen vorher qualifizieren. Und "MyFriends() ist noch nicht mal so besonders lang.
Jetzt klarer?

Hier ein auszug aus der VB-Anleitung

Bemerkungen

Mit der With-Anweisung können Sie eine Reihe von Anweisungen für ein bestimmtes Objekt ausführen, ohne den Namen des Objekts mehrmals angeben zu müssen. Wenn Sie zum Beispiel mehrereEigenschaften eines bestimmten Objekts verändern möchten, sollten Sie die Zuweisungsanweisungen für die Eigenschaft in einer With-Kontrollstruktur unterbringen. Sie brauchen dann den Namen des Objekts nicht bei jeder einzelnen Zuweisung, sondern nur einmal zu Beginn der Kontrollstruktur anzugeben. Das folgende Beispiel veranschaulicht die Verwendung der With-Anweisung, um mehreren Eigenschaften desselben Objekts Werte zuzuweisen.

With Bezeichnungsfeld1
.Height = 2000
.Width = 2000
.Caption = "Schönen Tag noch"
End With

Müßt doch zugeben würde die Sache doch angenehmer gestalten?


Gruß FGK

Verfasst: 25.03.2005 19:44
von Leo
Noch besser wär das hier:

Code: Alles auswählen

With Variable1 And Variable2
\Text = "Hallo"
\Wert = 4
MessageRequester(\Text,Str(\Wert)
EndWith
;Würde jetz für beide gemacht werden..

Verfasst: 25.03.2005 19:51
von MVXA
und wenn ein Element die gleichen variable namen hat? Außerdem finde ich diese Schreibweise grausam. Sie nimmt ein etwas schreibarbeit ab aber sieht auch nicht gerade schön aus. Kannst ja mit copy&past arbeiten, wenns zu viel zu schreiben ist /:->.

Was meiner meinung nach viell wichtiger ist dass deklarieren von Variablen zu erzwingen und das man Zeilen mit einem '_' oder was auch immer verknüpfen kann. Das wäre für Fred vielleicht 30-40 minuten arbeit aber warum macht er das nicht, hält er das für unwichtig oder was sind seine gründe?

Verfasst: 25.03.2005 20:21
von freedimension
MVXA hat geschrieben:Das wäre für Fred vielleicht 30-40 minuten arbeit aber warum macht er das nicht, hält er das für unwichtig oder was sind seine gründe?
Die Antwort darauf lautet sicherlich "42" ;) Zumindest ist die Frage genauso tiefgründig wie die Frage aller Fragen.

Verfasst: 25.03.2005 20:31
von Kekskiller
Was ich wirklich am liebsten hätte, wären einheitlich Klassen und nicht die elend langen Umwege per com-Objekt oder irgendsowas anderen. Das habe ich bisher nie benutzt, da ich nie wirklich Zeit und Musse hatte, mir von irgendwoher brauchbare Infos dazu zusammenzuschustern. Da wäre ein simples und einfaches:

Code: Alles auswählen

Class Effect
  var.l
  Methode Set(v.l)
    var.l = v.l
  EndMethode
EndClass
doch viel angenehmer und einheitlicher. Aber es würde auch eine ganze Menge an dicker Arbeit und Umschreibereien bedeuten und PB wäre danach nicht mehr wirklich PB...

Und wie schon gesagt unbedingt den Unterstrich und die nächste Zeile miteinzubinden, das kann ja sogar meine Scriptsprache..

Verfasst: 25.03.2005 20:51
von 125
Kekskiller was könnte man denn mit so einer erstellten Klasse machen?