Seite 6 von 16
					
				Re: Wäre es nicht mal wieder an der Zeit...
				Verfasst: 16.04.2012 14:06
				von 7x7
				Code: Alles auswählen
EnableExplicit
Global d=9,f,b,m
Global.s c,e="+-<>.,[]",g,h,i,j,l
Macro U
Input()
EndMacro
Macro V
Case
EndMacro
Macro W
EndIf
EndMacro
Macro X
Procedure
EndMacro
Macro Y
End#X
EndMacro
Macro Z(a=1)
b=a
Repeat
m+a
If Mid(c,m,1)="]"
b-1
ElseIf Mid(c,m,1)="["
b+1
W
Until b=0
EndMacro
X A()
Print(#LF$+#LF$+"Press ENTER to exit")
U
End
Y
X B(n$)
PrintN(n$)
A()
Y
OpenConsole()
Print("Filename (blank to use std in)...?")
g=U
If g
OpenFile(1,g)
Repeat
i+ReadString(1)
Until Eof(1)
CloseFile(1)
Else
Repeat
h=U
i+h
Until h=""
W
b=0
For m=1 To Len(i)
j=Mid(i,m,1)
If FindString(e,j,1)
c+j
If j="["
b+1
ElseIf j="]"
b-1
W
W
Next
If b
B("Uneven brackets")
W
Dim k(d)
For m=1 To Len(c)
Select Asc(Mid(c,m,1))-40
V 3
k(f)+1
V 5
k(f)-1
V 6
Print(Chr(k(f)))
V 4
If l=""
l=U
W
k(f)=Asc(Left(l,1))
l=Mid(l,2)
V 22
f+1
If f>d
d+d
ReDim k(d)
W
V 20
f-1
If f<0
B("Memory pointer out of range")
W
V 51
If k(f)=0
Z()
W
V 53
If k(f)<>0
Z(-1)
W
EndSelect
Next
A()
 839 
 
			 
			
					
				Re: Wäre es nicht mal wieder an der Zeit...
				Verfasst: 16.04.2012 14:18
				von Sirius-2337
				818
Code: Alles auswählen
EnableExplicit
Global d=9,f,b,m
Global.s c,e="+-<>.,[]",g,h,i,j,l
Macro U
Input()
EndMacro
Macro V
Case
EndMacro
Macro W
EndIf
EndMacro
Macro Z(a=1)
b=a
Repeat
m+a
If Mid(c,m,1)="]"
b-1
ElseIf Mid(c,m,1)="["
b+1
W
Until b=0
EndMacro
Procedure B(n$,o=1)
If o
PrintN(n$)
W
Print(#LF$+#LF$+"Press ENTER to exit")
U
End
EndProcedure
OpenConsole()
Print("Filename (blank to use std in)...?")
g=U
If g
OpenFile(1,g)
Repeat
i+ReadString(1)
Until Eof(1)
CloseFile(1)
Else
Repeat
h=U
i+h
Until h=""
W
b=0
For m=1 To Len(i)
j=Mid(i,m,1)
If FindString(e,j,1)
c+j
If j="["
b+1
ElseIf j="]"
b-1
W
W
Next
If b
B("Uneven brackets")
W
Dim k(d)
For m=1 To Len(c)
Select Asc(Mid(c,m,1))-40
V 3
k(f)+1
V 5
k(f)-1
V 6
Print(Chr(k(f)))
V 4
If l=""
l=U
W
k(f)=Asc(Left(l,1))
l=Mid(l,2)
V 22
f+1
If f>d
d+d
ReDim k(d)
W
V 20
f-1
If f<0
B("Memory pointer out of range")
W
V 51
If k(f)=0
Z()
W
V 53
If k(f)<>0
Z(-1)
W
EndSelect
Next
B("",0)
 
			 
			
					
				Re: Wäre es nicht mal wieder an der Zeit...
				Verfasst: 16.04.2012 14:30
				von ts-soft
				816
Code: Alles auswählen
EnableExplicit
Global d=9,f,b,m
Global.s c,e="+-<>.,[]",g,h,i,j,l
Macro U
Input()
EndMacro
Macro V
Case
EndMacro
Macro W
EndIf
EndMacro
Macro Z(a=1)
b=a
Repeat
m+a
If Mid(c,m,1)="]"
b-1
ElseIf Mid(c,m,1)="["
b+1
W
Until b=0
EndMacro
Procedure B(n$,o=1)
If o
PrintN(n$)
W
Print(#LF$+#LF$+"Press ENTER to exit")
U
End
EndProcedure
OpenConsole()
Print("Filename (blank to use std in)...?")
g=U
If g
OpenFile(1,g)
Repeat
i+ReadString(1)
Until Eof(1)
CloseFile(1)
Else
Repeat
h=U
i+h
Until h=""
W
b=0
For m=1 To Len(i)
j=Mid(i,m,1)
If FindString(e,j,1)
c+j
If j="["
b+1
ElseIf j="]"
b-1
W
W
Next
If b
B("Uneven brackets")
W
Dim k(d)
For m=1 To Len(c)
Select Asc(Mid(c,m,1))-40
V 3
k(f)+1
V 5
k(f)-1
V 6
Print(Chr(k(f)))
V 4
If l=""
l=U
W
k(f)=Asc(Left(l,1))
l=Mid(l,2)
V 22
f+1
If f>d
d+d
Dim k(d)
W
V 20
f-1
If f<0
B("Memory pointer out of range")
W
V 51
If k(f)=0
Z()
W
V 53
If k(f)<>0
Z(-1)
W
EndSelect
Next
B("",0)
 
			 
			
					
				Re: Wäre es nicht mal wieder an der Zeit...
				Verfasst: 16.04.2012 14:31
				von The Shark
				STARGÅTE hat geschrieben:
Macros können nicht verschachtelt werden! Der aufruf von Macro ... Macro ist also nicht erlaubt, auch wenn er "verkleidet wird"
Das funktioniert aber ohne Probleme:
Code: Alles auswählen
Macro n(a,b)
Macro a
b
EndMacro
n(T,Procedure)
EndMacro
Bug?
 
			 
			
					
				Re: Wäre es nicht mal wieder an der Zeit...
				Verfasst: 16.04.2012 14:51
				von NicTheQuick
				807
Code: Alles auswählen
EnableExplicit
Global d=9,f,b,m,n
Global.s c,e="+-<>.,[]",g,h,i,j,l
Macro U
Input()
EndMacro
Macro V
Case
EndMacro
Macro W
EndIf
EndMacro
Macro Z(a=1)
b=a
Repeat
m+a
n=Asc(Mid(c,m,1))
b+(n/90)*(92-n)
Until b=0
EndMacro
Procedure B(n$,o=1)
If o
PrintN(n$)
W
Print(#LF$+#LF$+"Press ENTER to exit")
U
End
EndProcedure
OpenConsole()
Print("Filename (blank to use std in)...?")
g=U
If g
OpenFile(1,g)
Repeat
i+ReadString(1)
Until Eof(1)
CloseFile(1)
Else
Repeat
h=U
i+h
Until h=""
W
b=0
For m=1 To Len(i)
j=Mid(i,m,1)
If FindString(e,j,1)
c+j
If j="["
b+1
ElseIf j="]"
b-1
W
W
Next
If b
B("Uneven brackets")
W
Dim k(d)
For m=1 To Len(c)
Select Asc(Mid(c,m,1))-40
V 3
k(f)+1
V 5
k(f)-1
V 6
Print(Chr(k(f)))
V 4
If l=""
l=U
W
k(f)=Asc(Left(l,1))
l=Mid(l,2)
V 22
f+1
If f>d
d+d
ReDim k(d)
W
V 20
f-1
If f<0
B("Memory pointer out of range")
W
V 51
If k(f)=0
Z()
W
V 53
If k(f)<>0
Z(-1)
W
EndSelect
Next
B("",0)
 
			 
			
					
				Re: Wäre es nicht mal wieder an der Zeit...
				Verfasst: 16.04.2012 14:54
				von NicTheQuick
				803
Code: Alles auswählen
EnableExplicit
Global d=9,f,b,m,n
Global.s c,e="+-<>.,[]",g,h,i,j,l
Macro U
Input()
EndMacro
Macro V
Case
EndMacro
Macro W
EndIf
EndMacro
Macro Z(a=1)
b=a
Repeat
m+a
n=Asc(Mid(c,m,1))
b+(n/90)*(92-n)
Until b=0
EndMacro
Procedure B(n$,o=1)
If o
PrintN(n$)
W
Print(#LF$+#LF$+"Press ENTER to exit")
U
End
EndProcedure
OpenConsole()
Print("Filename (blank to use std in)...?")
g=U
If g
OpenFile(1,g)
Repeat
i+ReadString(1)
Until Eof(1)
CloseFile(1)
Else
Repeat
h=U
i+h
Until h=""
W
b=0
For m=1 To Len(i)
j=Mid(i,m,1)
If FindString(e,j,1)
c+j
n=Asc(j)
b+(n/90)*(92-n)
W
Next
If b
B("Uneven brackets")
W
Dim k(d)
For m=1 To Len(c)
Select Asc(Mid(c,m,1))-40
V 3
k(f)+1
V 5
k(f)-1
V 6
Print(Chr(k(f)))
V 4
If l=""
l=U
W
k(f)=Asc(Left(l,1))
l=Mid(l,2)
V 22
f+1
If f>d
d+d
ReDim k(d)
W
V 20
f-1
If f<0
B("Memory pointer out of range")
W
V 51
If k(f)=0
Z()
W
V 53
If k(f)<>0
Z(-1)
W
EndSelect
Next
B("",0)
 
			 
			
					
				Re: Wäre es nicht mal wieder an der Zeit...
				Verfasst: 16.04.2012 15:02
				von Sirius-2337
				802
Code: Alles auswählen
EnableExplicit
Global d=9,f,b,m,n
Global.s c,e="+-<>.,[]",g,h,i,j,l
Macro U
Input()
EndMacro
Macro V
Case
EndMacro
Macro W
EndIf
EndMacro
Macro Z(a)
b=a
Repeat
m+a
n=Asc(Mid(c,m,1))
b+(n/90)*(92-n)
Until b=0
EndMacro
Procedure B(n$,o=1)
If o
PrintN(n$)
W
Print(#LF$+#LF$+"Press ENTER to exit")
U
End
EndProcedure
OpenConsole()
Print("Filename (blank to use std in)...?")
g=U
If g
OpenFile(1,g)
Repeat
i+ReadString(1)
Until Eof(1)
CloseFile(1)
Else
Repeat
h=U
i+h
Until h=""
W
b=0
For m=1 To Len(i)
j=Mid(i,m,1)
If FindString(e,j,1)
c+j
n=Asc(j)
b+(n/90)*(92-n)
W
Next
If b
B("Uneven brackets")
W
Dim k(d)
For m=1 To Len(c)
Select Asc(Mid(c,m,1))-40
V 3
k(f)+1
V 5
k(f)-1
V 6
Print(Chr(k(f)))
V 4
If l=""
l=U
W
k(f)=Asc(Left(l,1))
l=Mid(l,2)
V 22
f+1
If f>d
d+d
ReDim k(d)
W
V 20
f-1
If f<0
B("Memory pointer out of range")
W
V 51
If k(f)=0
Z(1)
W
V 53
If k(f)<>0
Z(-1)
W
EndSelect
Next
B("",0)
 
			 
			
					
				Re: Wäre es nicht mal wieder an der Zeit...
				Verfasst: 16.04.2012 15:11
				von STARGÅTE
				The Shark hat geschrieben:Das funktioniert aber ohne Probleme:
Code: Alles auswählen
Macro n(a,b)
Macro a
b
EndMacro
n(T,Procedure)
EndMacro
Bug?
 
Nein kein Bug, da ein Macro (also deren Inhalt) ist gelesen und eingesetzt wird, wenn dieses Macro auch aufgerufen wird:
Macro verhalten sich wirklich komplett anders als Prozeduren (auch wenn deren Definition ähnlich ist).
Der Compiler liest immer nur die erste Zeile "Macro Test" und übergeht solange den nachfolgenden Code bis ein "EndMacro" kommt, es findert keinerlei Syntaxkontrolle statt.
Erst wenn im Code dann diese Macro verwendet wird also: "Test", dann wird der Inhalt zwischen Macro und EndMacro Zeichen für Zeichen übernommen und erst dann auf Syntax kontrolliert.
Edit: dein Code wird so ersetzt:
das heißt, danach würde
funktionieren
 
			 
			
					
				Re: Wäre es nicht mal wieder an der Zeit...
				Verfasst: 16.04.2012 15:22
				von NicTheQuick
				799
Code: Alles auswählen
EnableExplicit
Global d=9,f,b,m,n
Global.s c,e="+-<>.,[]",g,h,i,j,l
Macro U
Input()
EndMacro
Macro V
Case
EndMacro
Macro W
EndIf
EndMacro
Macro Z(a)
b=a
Repeat
m+a
n=Asc(Mid(c,m,1))
b+(n/90)*(92-n)
Until b=0
EndMacro
Procedure B(n$,o=1)
If o
PrintN(n$)
W
Print(#LF$+#LF$+"Press ENTER to exit")
U
End
EndProcedure
OpenConsole()
Print("Filename (blank to use std in)...?")
g=U
If g
OpenFile(1,g)
Repeat
i+ReadString(1)
Until Eof(1)
CloseFile(1)
Else
Repeat
h=U
i+h
Until h=""
W
b=0
For m=1 To Len(i)
j=Mid(i,m,1)
If FindString(e,j,1)
c+j
n=Asc(j)
b+(n/90)*(92-n)
W
Next
If b
B("Uneven brackets")
W
Dim k(d)
For m=1 To Len(c)
Select Asc(Mid(c,m,1))-40
V 3
k(f)+1
V 5
k(f)-1
V 6
Print(Chr(k(f)))
V 4
If l=""
l=U
W
k(f)=Asc(Left(l,1))
l=Mid(l,2)
V 22
f+1
If f>d
d+d
ReDim k(d)
W
V 20
f-1
If f<0
B("Memory pointer out of range")
W
V 51
If k(f)=0
Z(1)
W
V 53
If k(f)
Z(-1)
W
EndSelect
Next
B("",0)
 
			 
			
					
				Re: Wäre es nicht mal wieder an der Zeit...
				Verfasst: 16.04.2012 16:38
				von c4s
				776
Code: Alles auswählen
EnableExplicit
Global d=9,f,b,m,n
Global.s c,e="+-<>.,[]",g,h,i,j,l
Macro U
Input()
EndMacro
Macro V
Case
EndMacro
Macro W
EndIf
EndMacro
Macro Z(a)
b=a
Repeat
m+a
n=PeekA(@c+m-1)
b+(n/90)*(92-n)
Until b=0
EndMacro
Macro B(z,o=1)
If o
PrintN(z)
W
Print(#LF$+#LF$+"Press ENTER to exit")
U
End
EndMacro
OpenConsole()
Print("Filename (blank to use std in)...?")
g=U
If g
OpenFile(1,g)
Repeat
i+ReadString(1)
Until Eof(1)
CloseFile(1)
Else
h=U
While h
i+h
h=U
Wend
W
b=0
For m=1 To Len(i)
j=Mid(i,m,1)
If FindString(e,j)
c+j
n=Asc(j)
b+(n/90)*(92-n)
W
Next
If b
B("Uneven brackets")
W
Dim k(d)
For m=1 To Len(c)
Select PeekA(@c+m-1)-40
V 3
k(f)+1
V 5
k(f)-1
V 6
Print(Chr(k(f)))
V 4
If l=""
l=U
W
k(f)=PeekA(@l)
l=Mid(l,2)
V 22
f+1
If f>d
d+d
ReDim k(d)
W
V 20
f-1
If f<0
B("Memory pointer out of range")
W
V 51
If k(f)=0
Z(1)
W
V 53
If k(f)
Z(-1)
W
EndSelect
Next
B("",0)