Autor Thema: @isset() für temporäre Variable - wie realisieren?  (Gelesen 4817 mal)

Offline jww

  • Aktives Mitglied
  • ***
  • Beiträge: 190
  • Geschlecht: Männlich
Hallo,

wahrscheinlich stehe ich mit beiden Füssen gerade fest auf dem Schlauch und was ich brauche ist total einfach ... ich find's aber nicht.


Für Felder gibt's @isAvailable, um zu prüfen ob ein Feld da ist oder nicht, und wenn man einen Default Wert setzen will, ist's noch einfacher, da nimmt man einfach DEFAULT xyz := ...

Aber wie geht das bei temoporären Variablen (also keine Felder), die man in einer Formel benutzt?

Hintergrund:
Ich habe Formelteile (die in einem Feld stehen), welche ich mit @eval() an anderer Stelle in eine Formel einbinde - quasi als "sub" oder "function" Ersatz.

Nun kann es, je nach Stelle der Verwendung, sein, dass eine Variable, sagen wir "_place" gesetzt ist ( von der Formel, die das sub per @eval() benutzt) oder eben nicht:

Variante 1: _place = "hier"; @eval( mycode );

Variante 2:  @eval( mycode );


Nun wollte ich gerne in der sub (welche im Feld mycode als Text steht)  folgende (Teil-)Formel realisieren:

__place := @if( @isset( __place ) ; __place; __place_default );

kann mir jemand das "missing piece" - @isset() - verraten?

1000 Dank





Notes ist klasse - und ab und an zum auf den Mond schiessen.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: @isset() für temporäre Variable - wie realisieren?
« Antwort #1 am: 28.06.13 - 18:16:02 »
Reicht es nicht aus, auf "leer" zu prüfen?

__place := @if(  __place != "" ; __place; __place_default );

bzw. falls es nicht Text ist (z.B. eine Zahl)

__place := @if( @Text (__place) != "" ; __place; __place_default );

Offline jww

  • Aktives Mitglied
  • ***
  • Beiträge: 190
  • Geschlecht: Männlich
Re: @isset() für temporäre Variable - wie realisieren?
« Antwort #2 am: 29.06.13 - 12:09:57 »
hmm. Stimmt. Zu einfach!

Wäre nicht darauf gekommen, dass eine nicht deklarierte Variable schlicht gleich "" ist ... und selbst ein numerischer Wert in __place  keinen Fehler wirft bei

@if( __place = "" ...

Danke für den "heads up"!

p.s.: Ich muss wohl anfangs irgendwie was falsch gemacht haben ...  nun geht nämlich auch @isavailable auf eine Variable. Keine Ahnung, warum das ursprünglich nicht funktioniert hat ... scheinbar ist's der Ort, wo ich diese Formeln Verwende: URL und Computet Text. Die geben einfach gar nix aus, wenn eine Formel "in die Büsche geht".
 
Notes ist klasse - und ab und an zum auf den Mond schiessen.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: @isset() für temporäre Variable - wie realisieren?
« Antwort #3 am: 29.06.13 - 12:27:02 »
Den Feldnamen in Anführungszeichen zu setzen

@IsAvailable ("Feldname") -> falsch

@IsAvailable (Feldname) -> richtig

wäre eine (sehr wahrscheinliche) Fehlerursache. Gibt wohl niemanden, der nicht darauf schon mal hereingefallen wäre ...

Offline jww

  • Aktives Mitglied
  • ***
  • Beiträge: 190
  • Geschlecht: Männlich
Re: @isset() für temporäre Variable - wie realisieren?
« Antwort #4 am: 29.06.13 - 21:07:39 »
Die Anführungszeichen können es ziemlich sicher gewesen sein. Ich progge inzwischen sehr viel PHP und anderem und es gibt fast keine Sprache, wo man derartige Referenzen ohne die Hochkomma verwendet ... hat mir seinerzeit, als ich viel Notes programmiert hab, schon misfallen.

Anyhow, es tut nun ja. Danke nochmals!
Notes ist klasse - und ab und an zum auf den Mond schiessen.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz