Seite 1 von 1

Verschachtelung von With:EndWith

Verfasst: 08.12.2013 12:49
von Chimorin
Heyho,

ist es irgendwie möglich With:EndWith zu verschachteln?

Es sollte in etwa so aussehen:

Code: Alles auswählen

EnableExplicit

Structure eins
  a.i
  b.i
  c.i
EndStructure

Structure zwei
  d.i
  e.i
  f.i
EndStructure

Define.eins var1
Define.zwei var2

With var1
  \a = 12
  With var2
    \d = \a
    \e = 5
  EndWith
  \b = 9
EndWith

Debug var1\a
Debug var1\b
Debug var2\d
Debug var2\e

End
Ich habe einige Werte aus, die ich von einer Liste in eine Andere schreiben möchte (Pro Aufruf aber nur einer). Jetzt habe ich da aber einen riesigen Block an Code stehen, den man in der Breite mit With auf unter die Hälfte reduzieren könnte...

Gruß,

Banane

Re: Verschachtelung von With:EndWith

Verfasst: 08.12.2013 13:01
von Andesdaf
http://purearea.net/pb/german/manual/re ... dwith.html

Laut der Hilfe sind keine Verschachtelungen von With/EndWith möglich.

Re: Verschachtelung von With:EndWith

Verfasst: 08.12.2013 13:57
von Chimorin
Vielleicht habe ich mich nicht klar ausgedrückt:
Es geht mir darum, dass man das vielleicht auf irgendeine Art und Weise doch machen kann (Über Macros, Prozeduren,...).
Dass man With nicht verschachteln kann ist klar. Wie soll der Compiler auch wissen, welches Variable jetzt zu welchem With-Argument gehört, wenn man z.B. 2 Variablen mit gleicher Struktur benutzt.

Re: Verschachtelung von With:EndWith

Verfasst: 08.12.2013 14:08
von NicknameFJ
Bananenfreak hat geschrieben: Es geht mir darum, dass man das vielleicht auf irgendeine Art und Weise doch machen kann (Über Macros, Prozeduren,...).
Wenn Du Dir mal vor Augen führst wie Macros (oder auch Proceduren) funktionieren dann dürfte klar sein dass ein Macro an der betreffenden Stelle im Quellcode vom Compiler (zur Compilerzeit) eingefügt/aufgelöst wird. Dann würde, wenn Du es über Macros machst ja wieder im Quellcode verschachtelt With [...] With stehen. Kann also nicht funktionieren.

Über Proceduren wohl dann ja sowieso nicht - oder? Eine Procedure ist ein Stück Programm das zur Programmlaufzeit als Unterprogramm aufgerufen wird. Im Hauptprogramm wird dorthin verzeigt, das Unterprogramm ausgeführt und wieder ins Hauptprogramm zurück gesprungen, ähnlich wie Gosub nur dass z.B. eine Procedure lokale Variablen haben kann.


NicknameFJ

Re: Verschachtelung von With:EndWith

Verfasst: 08.12.2013 17:52
von Sicro
Hallo Bananenfreak,

mit Macros kannst du doch die Namen der Variablen kürzen:

Code: Alles auswählen

EnableExplicit

Structure eins
  a.i
  b.i
  c.i
EndStructure

Structure zwei
  d.i
  e.i
  f.i
EndStructure

Define.eins var1_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Define.zwei var2_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Macro var1_kurz
  var1_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
EndMacro

Macro var2_kurz
  var2_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
EndMacro

var1_kurz\a = 12
  var2_kurz\d = var1_kurz\a
  var2_kurz\e = 5
var1_kurz\b = 9

Debug var1_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\a
Debug var1_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\b
Debug var2_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\d
Debug var2_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\e

End

Re: Verschachtelung von With:EndWith

Verfasst: 08.12.2013 18:06
von Chimorin
@Sicro:

So etwas in die Richtung meinte ich. Vielen Dank <)