Verschachtelung von With:EndWith

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Verschachtelung von With:EndWith

Beitrag 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
Bild

- formerly known as Bananenfreak -
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: Verschachtelung von With:EndWith

Beitrag von Andesdaf »

http://purearea.net/pb/german/manual/re ... dwith.html

Laut der Hilfe sind keine Verschachtelungen von With/EndWith möglich.
Win11 x64 | PB 6.20
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Re: Verschachtelung von With:EndWith

Beitrag 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.
Bild

- formerly known as Bananenfreak -
Benutzeravatar
NicknameFJ
Beiträge: 324
Registriert: 03.06.2007 14:36
Wohnort: Von der Sonne aus gesehen der dritte Planet

Re: Verschachtelung von With:EndWith

Beitrag 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
PS: Alle im Text enthaltenen Schreibfehler sind beabsichtigt und dienen der Belustigung aller

Bild
Benutzeravatar
Sicro
Beiträge: 969
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Verschachtelung von With:EndWith

Beitrag 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
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Re: Verschachtelung von With:EndWith

Beitrag von Chimorin »

@Sicro:

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

- formerly known as Bananenfreak -
Antworten