Aktuelle Zeit: 19. Okt 2017, 02:02
Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Parameter lassen sich nicht zurückschreiben
BeitragVerfasst: 10. Okt 2017, 11:12 
Offline
Mitglied
Benutzeravatar

Registriert: 28. Aug 2014, 21:34
Beiträge: 448
Land: CH
Ich steh gerade vor dem Rätsel (und auf dem Schlauch), dass ich meine Parameter nicht in Abhängigkeit ändern kann.
Das sieht dann so aus (Parameterscript):
Code:
VALUES "papersize" "A3", "A2", "A1", "A0"
IF "papersize" = "A3" THEN
   PARAMETERS  A = 0.42, B = 0.297
ENDIF
...
...

Naheliegenderweise ein Objekt, dass zum Platzieren auf dem Layout gedacht ist; über ein Dropdownfeld kann man schnell die nötige Grösse auswählen – zumindest in der Theorie.
Tatsächlich aber passiert genau nichts, A und B bleiben unverändert.
Wo sehe ich den Wald vor lauter Bäumen nicht? Danke schonmal recht herzlich!

_________________
AC 20 Voll, CH auf iMac 10.12 (mid 2011, 21")
»slower than ever«|Entwickler von GDL für Sublime Text


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Parameter lassen sich nicht zurückschreiben
BeitragVerfasst: 10. Okt 2017, 12:25 
Offline
Forum Veteran
Benutzeravatar

Registriert: 26. Mai 2002, 01:01
Beiträge: 792
Wohnort: Osterwald
Land: DE
Betriebsystem: MacOS 10.11
Ich würde es ohne Anführungszeichen versuchen:
IF papersize .....

_________________
ArchiCAD 9 - 21 | iMac 3.5 Ghz | Mac OS X 10.11 | Win 10


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Parameter lassen sich nicht zurückschreiben
BeitragVerfasst: 10. Okt 2017, 12:26 
Offline
Mitglied

Registriert: 6. Sep 2012, 19:49
Beiträge: 327
Land: DE
Betriebsystem: Windows 7
Och Jochen, jetzt warst Du schneller :-) Gruß

_________________
Beste Grüße
Mario
Archicad 20, WIN 7, 16 GB RAM, NVIDIA Quadro K4200


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Parameter lassen sich nicht zurückschreiben
BeitragVerfasst: 10. Okt 2017, 12:29 
Offline
Mitglied
Benutzeravatar

Registriert: 28. Aug 2014, 21:34
Beiträge: 448
Land: CH
Jochen Suehlo hat geschrieben:
Ich würde es ohne Anführungszeichen versuchen:
IF papersize .....

Danke Jochen! EDIT: Dir auch, Mario :wink:
Das war's natürlich :roll:
Dass GDL so inkonsistent mit seinen Anführungszeichen ist, geht mir so dermaßen auf den Keks.
Bei LOCK brauchts sie, bei PARAMETERS wieder nicht... :evil:

_________________
AC 20 Voll, CH auf iMac 10.12 (mid 2011, 21")
»slower than ever«|Entwickler von GDL für Sublime Text


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Parameter lassen sich nicht zurückschreiben
BeitragVerfasst: 10. Okt 2017, 16:59 
Offline
Forum Veteran

Registriert: 3. Mär 2003, 02:01
Beiträge: 1624
Da ist gar nichts inkonsistent. Zumindest nicht an der Stelle. Mal geht es um den Inhalt und mal um den Parameter selbst.

LOCK "papersize" : Du willst ja nicht den Inhalt von Papersize sperren, sondern den Parameter
PARAMETER papersize = "A3" : Du willst ja nicht den Parameter in A3 umbenennen, sondern den Inhalt ändern.

Das sind Programmiersprachen-Syntax Basics. ;)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Parameter lassen sich nicht zurückschreiben
BeitragVerfasst: 11. Okt 2017, 09:32 
Offline
Mitglied
Benutzeravatar

Registriert: 28. Aug 2014, 21:34
Beiträge: 448
Land: CH
Ove hat geschrieben:
Da ist gar nichts inkonsistent. Zumindest nicht an der Stelle. Mal geht es um den Inhalt und mal um den Parameter selbst.

LOCK "papersize" : Du willst ja nicht den Inhalt von Papersize sperren, sondern den Parameter
PARAMETER papersize = "A3" : Du willst ja nicht den Parameter in A3 umbenennen, sondern den Inhalt ändern.


Das ist zwar eine sehr greifbare Erklärung, sie funktioniert aber auch nur genau bei den eben genannten (und selbst da eigentlich nicht, siehe unten). Bei VALUES z.B. dürften deiner Version nach keine Anführungszeichen um den Parameter sein – sind sie aber.
Davon abgesehen: Eine Grundsätzlichket für mich ist, dass "das hier stets Strings sind".

Deine Erklärung ist auch dahingehend nicht zutreffend, weil man den Inhalt einer Variablen (Parameter) grundsätzlich nicht sperren kann, es sei denn sie ist immutable. Das müsste man aber entweder bei der Erschaffung (const) angeben, oder bei manchen Sprachen umgekehrt angeben, dass die Variable mutable (mut) ist. Den Inhalt danach sperren oder entsperren geht nie. Das wäre auch Murks, weil der Status der Variable klar sein muss. Daher ist sowieso anzunehmen dass LOCK niemals den Inhalt sperrt.
Variablen umbenennen geht erst recht niemals, das wäre ja genauso tödlich.
Beides Programmiersprachenbasics. :|

_________________
AC 20 Voll, CH auf iMac 10.12 (mid 2011, 21")
»slower than ever«|Entwickler von GDL für Sublime Text


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Parameter lassen sich nicht zurückschreiben
BeitragVerfasst: 11. Okt 2017, 12:55 
Offline
Forum Veteran

Registriert: 3. Mär 2003, 02:01
Beiträge: 1624
Zitat:
Bei VALUES z.B. dürften deiner Version nach keine Anführungszeichen um den Parameter sein – sind sie aber.

Sehr wohl. Auch hier will ich den Parameter nicht ändern, sondern eine Liste erzeugen, die für den Parameter "parameter" gilt und nicht für den Inhalt des Parameters/der Variablen parameter. Das ergibt einen ziemlichen Sinn, wenn du die Group-Befehle anschaust, wo es tatsächlich um den Inhalt der Variablen/Parameter geht.

Auch bei LOCK ist es logisch, weil du nicht wirklich den Inhalt sperrst, sondern für das UI die Zugänglichkeit des Eingabefeldes.

Also ich habe da syntaktisch keinerlei Probleme. ;) Für mich ist das sowas von logisch. :)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Parameter lassen sich nicht zurückschreiben
BeitragVerfasst: 11. Okt 2017, 12:58 
Offline
Forum Veteran

Registriert: 3. Mär 2003, 02:01
Beiträge: 1624
const und immutable gibt es bei GDL nicht. Du kannst keine Konstanten deklarieren. Noch nicht mal Typen. DAS ist eine Inkonsistenz, das Variablen während des Skriptdurchlaufes durchaus mal ihren Typ ändern können. (Oder zumindest in früheren Versionen als 21 konnten.)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Parameter lassen sich nicht zurückschreiben
BeitragVerfasst: 11. Okt 2017, 15:12 
Offline
Mitglied
Benutzeravatar

Registriert: 28. Aug 2014, 21:34
Beiträge: 448
Land: CH
Na gut, Ove, wenn du keine Probleme damit hast, ist das schön.
Lass ich mal gelten. :wink:
(Finde ich wirklich immer wieder interessant, wie die "Herkunft" einen unterschiedliche Sichtweisen einnehmen lassen kann. Daher großes Danke für dein Input, Ove! Gerade weil wir ganz unterschiedliche Philosophien haben)

Liegt vielleicht an meinem Alter, dass ich das als unlogisch empfinde, weil ich mit vernünftigen Sprachen aufwachsen durfte, und nicht mit prähistorischen Krüppeln (*hust*GOTO*hust*). :lol:

Ove hat geschrieben:
const und immutable gibt es bei GDL nicht.

Ist mir bewusst. Ich hab das nur benutzt, um zu zeigen, dass dein Argument nicht stichhaltig ist.

Ove hat geschrieben:
Zitat:
Bei VALUES z.B. dürften deiner Version nach keine Anführungszeichen um den Parameter sein – sind sie aber.

Sehr wohl. Auch hier will ich den Parameter nicht ändern, sondern eine Liste erzeugen, die für den Parameter "parameter" gilt und nicht für den Inhalt des Parameters/der Variablen parameter.

Okay, ist ne Grauzone. Es sind erstmal nur mögliche Werte, aber zugleich wird ja einer der Werte als default gesetzt, und damit der Parameter tatsächlich geändert; er erhält einen Wert.

Ove hat geschrieben:
Das ergibt einen ziemlichen Sinn, wenn du die Group-Befehle anschaust, wo es tatsächlich um den Inhalt der Variablen/Parameter geht.

Die GROUP Befehle sind das schlechteste Beispiel überhaupt. Noch schlimmer kann man eine Sprache nicht gestalten.
PLACEGROUP braucht entweder Anführungszeichen oder nicht, je nach dem ob die Gruppe einfach nur eine Gruppe oder das Resultat aus einer Operation ist. Bei beidem wird Geometrie ausgegeben, die Herkunft sollte unerheblich sein.

Ove hat geschrieben:
Auch bei LOCK ist es logisch, weil du nicht wirklich den Inhalt sperrst, sondern für das UI die Zugänglichkeit des Eingabefeldes.

Das ist natürlich eine Besonderheit bei GDL. Nur wie ich bereits vorhin gesagt habe: weil man den Inhalt von Variablen eh nicht sperren kann, ist es erst recht nicht logisch.

Ove hat geschrieben:
Noch nicht mal Typen. DAS ist eine Inkonsistenz, das Variablen während des Skriptdurchlaufes durchaus mal ihren Typ ändern können.

Das sieht selfgdl anders.
Was genau meinst du?

_________________
AC 20 Voll, CH auf iMac 10.12 (mid 2011, 21")
»slower than ever«|Entwickler von GDL für Sublime Text


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Parameter lassen sich nicht zurückschreiben
BeitragVerfasst: 11. Okt 2017, 16:14 
Offline
Forum Veteran

Registriert: 3. Mär 2003, 02:01
Beiträge: 1624
Zitat:
Das sieht selfgdl anders.
Was genau meinst du?

Dass es in GDL unterschiedliche Typen gibt und auch geben muss ist klar, aber du kannst sie nicht deklarieren.

name = 1

Könnte ein Typ boolean, integer oder real sein.

Schreibst Du:

name = 1
IF name = 1 THEN block 1,2,3
name = 2.7
IF name = 1 THEN block 3,4,5

Gibt es eine Typenwarnung. Aber erst beim zweiten IF. Weil kurz davor der Typ von integer auf real gewechselt hat. Das ist inkonsequent und schwer zu vermitteln! ;)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Parameter lassen sich nicht zurückschreiben
BeitragVerfasst: 11. Okt 2017, 16:15 
Offline
Forum Veteran

Registriert: 3. Mär 2003, 02:01
Beiträge: 1624
Zitat:
Die GROUP Befehle sind das schlechteste Beispiel überhaupt. Noch schlimmer kann man eine Sprache nicht gestalten.
PLACEGROUP braucht entweder Anführungszeichen oder nicht, je nach dem ob die Gruppe einfach nur eine Gruppe oder das Resultat aus einer Operation ist. Bei beidem wird Geometrie ausgegeben, die Herkunft sollte unerheblich sein.


placegroup "test"
name = "test"
placegroup name

platziert 2x das gleiche Element. Nämlich die Gruppe, die "test" heißt. Das hat nichts mit der Hekunft zu tun.
IMHO nicht inkonsequent.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Parameter lassen sich nicht zurückschreiben
BeitragVerfasst: 11. Okt 2017, 16:54 
Offline
Mitglied
Benutzeravatar

Registriert: 28. Aug 2014, 21:34
Beiträge: 448
Land: CH
Ove hat geschrieben:
Zitat:
Was genau meinst du?

Dass es in GDL unterschiedliche Typen gibt und auch geben muss ist klar, aber du kannst sie nicht deklarieren.
....
Weil kurz davor der Typ von integer auf real gewechselt hat. Das ist inkonsequent und schwer zu vermitteln! ;)


Ohja, das hast du recht, das ist wirklich übel.
Vor allem weil man strong typing ja erzwingen kann, indem man einen Parameter erstellt.

Ove hat geschrieben:
placegroup "test"
name = "test"
placegroup name

platziert 2x das gleiche Element. Nämlich die Gruppe, die "test" heißt. Das hat nichts mit der Hekunft zu tun. IMHO nicht inkonsequent.


Die Inkosequenz liegt darin, dass einmal Anführungszeichen nötig sind und einmal nicht.
Eigentlich gehts mir im Grunde ja nur darum, dass Strings wie Strings aussehen soll, und alles andere nicht. :oops: :lol:
Um bei dem Beispiel zu bleiben: Mit Herkunft ist gemeint, wie das Element deklariert wurde. Und dem Programmierer sollte es egal sein, wie die Gruppe entstanden ist.
Beides verweist ja auf das selbe, so wie du richtig schreibst. Dennoch muss man jetzt peinlich genau darau achten, wie die jeweilige Referenz zustande gekommen ist.

_________________
AC 20 Voll, CH auf iMac 10.12 (mid 2011, 21")
»slower than ever«|Entwickler von GDL für Sublime Text


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Parameter lassen sich nicht zurückschreiben
BeitragVerfasst: 12. Okt 2017, 17:21 
Offline
Forum Veteran

Registriert: 3. Mär 2003, 02:01
Beiträge: 1624
Dann mache es wie GS. Benenne Deine Variablen mit s für String, i für integer und b für boolean am Anfang des Namens. Wenn ein Wert keine Anführungszeichen hat und demnach auf einen Parameter zu verweisen scheint, kannst Du es am s erkennen.

Code:
placegroup "test"
name = "test"
placegroup "name"


KANN halt nicht das gleiche wie
Code:
placegroup "test"
name = "test"
placegroup name

sein. Wie willst du sonst unterscheiden, wo geht es um einen String und wo um einen Stringwert einer Variablen.

Zitat:
Beides verweist ja auf das selbe, so wie du richtig schreibst. Dennoch muss man jetzt peinlich genau darau achten, wie die jeweilige Referenz zustande gekommen ist.

Ja, das Leben ist hart. ;)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Parameter lassen sich nicht zurückschreiben
BeitragVerfasst: 12. Okt 2017, 17:47 
Offline
Mitglied
Benutzeravatar

Registriert: 28. Aug 2014, 21:34
Beiträge: 448
Land: CH
Ove hat geschrieben:
Dann mache es wie GS. Benenne Deine Variablen mit s für String, i für integer und b für boolean am Anfang des Namens.

Ja, das habe ich mir längst angewöhnt.
Aber das hilft auch nur bedingt; zwar ist dann klar, was wirklich ein String ist und was nicht, aber ich muss mir dennoch Gedanken machen, wo ich Anführungszeichen hinzupacken habe, und wo nicht.
Zudem habe ich ja nicht umsonst das Sublime Text Plugin entwickelt. Ich mach lieber Copy&Paste, als dass ich mir den integrierten GDL-Editor antue.
Leider sieht momentan alles in Anführungszeichen aus wie ein String. :?
(Da bin ich allerdings dran das zu ändern... Denn zum Lesen braucht es dann doch den zweiten Blick.)

Ove hat geschrieben:
Zitat:
Beides verweist ja auf das selbe, so wie du richtig schreibst. Dennoch muss man jetzt peinlich genau darau achten, wie die jeweilige Referenz zustande gekommen ist.

Ja, das Leben ist hart. ;)

Ohja – du siehst, ich leide schwer! :cry: :lol:

_________________
AC 20 Voll, CH auf iMac 10.12 (mid 2011, 21")
»slower than ever«|Entwickler von GDL für Sublime Text


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ] 


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu: