Wie viele Verschachtelte IF abfragen kann PB ?
Ja, das weiß ich, das das kleienr wird. Mir gings nur darum, ob meine variante nicht kleiner/kompakter/komfortabler ist als dein 2. beitrag in diesem thread, z. B.
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
Danke für eure Bemühungen
Ich bin nun genauso schlau wie vorher...
Ein normales IF, ist ja ein normaler Programmvorgang.
Dies sollte natürlich immer funktionieren, sonnst wäre die ganze Programmiererei =
!!
Eine Schleife, mit einem IF, macht ja genau das! Es kann also nicht durch eine Schleife simuliert werden.
Ich meinte verschachtelte IF´s:
Da muss PB sich nämlich Rücksprung Adressen und Labels merken.
Und wenn man sich die Rücksprungadresse auch noch merken muss wann ist der Stack voll???


Ich bin nun genauso schlau wie vorher...

Ein normales IF, ist ja ein normaler Programmvorgang.
Code: Alles auswählen
IF......
Endif
IF......
Endif
IF......
Endif
IF......
Endif
IF......
Endif

Eine Schleife, mit einem IF, macht ja genau das! Es kann also nicht durch eine Schleife simuliert werden.
Ich meinte verschachtelte IF´s:
Code: Alles auswählen
IF......
IF......
IF......
IF......
IF......
Else
Endif
Else
Endif
Endif
Endif
Endif
Ich dachte immer ein Label ist eine (Programmrelative) Speicher-Adresse. Sich Speicher-Adressen zu merken kostet mindestens 4Byte!Deeem2031 hat geschrieben:Ein Endif ist aber nur ein Label, es braucht im fertigen Programm also überhaupt keinen Speicher.ts-soft hat geschrieben:Man kann nicht soviel If machen, wie Speicher da ist, die EndIf müssen ja auch noch passen
Und wenn man sich die Rücksprungadresse auch noch merken muss wann ist der Stack voll???



Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Deem2031 hats doch schon oben geschrieben, es gibt keine Grenze in diesem Sinne. Diese Grenze findet man normallerweise nur in interpretierten Sprachen. Die Grenze ist erreicht, wenn Windows keinen Speicher mehr zur Verfügung stellen kann. Hängt also von der verwendeten OS-Version, RAM und Festplattenkapazität ab. Das ganze ist aber eigentlich unwichtig, weil diese Grenze gilt nicht nur für If usw. sondern diese Grenze gilt immer.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- Tsuki-Namida
- Beiträge: 633
- Registriert: 17.11.2005 13:27
- Kontaktdaten:
Den spaß musste ich aber auch mal mit machen 
also mein letztes "EndIf" ist auf zeile 7465 ich habe die If's nicht gezählt auf jedenfall stürtzt der compiler immer ab egal ob ich testen möchte oder eine exe machen möchte. wie es aus sieht gibt es doch eine grenze
das ganze sieht bei mir si aus:
Test.l=0
If Test.l = 0
Test2.l+1
If Test.l = 0
Test2.l+1
If Test.l = 0
Test2.l+1
If Test.l = 0
Test2.l+1
<<<Und so weiter>>>
EndIf
EndIf
EndIf
EndIf
Debug Test2
End

also mein letztes "EndIf" ist auf zeile 7465 ich habe die If's nicht gezählt auf jedenfall stürtzt der compiler immer ab egal ob ich testen möchte oder eine exe machen möchte. wie es aus sieht gibt es doch eine grenze

das ganze sieht bei mir si aus:
Test.l=0
If Test.l = 0
Test2.l+1
If Test.l = 0
Test2.l+1
If Test.l = 0
Test2.l+1
If Test.l = 0
Test2.l+1
<<<Und so weiter>>>
EndIf
EndIf
EndIf
EndIf
Debug Test2
End
Wie funktioniert denn das If überhaupt ?
Irgendwie So?
Edit: Stürzt eigentlich mein Code (der mit den vielen Ifs) bei euch auch ab?
Irgendwie So?
Code: Alles auswählen
if A = B
debug "bla"
endif
->
0 If A = B = 0 : Adresse Zeile 3
1
2 sachen die nur bei nicht erfüllter Bedingung ausgeführt werden.
3 ; Endif benötigt keinen Speicher
- Tsuki-Namida
- Beiträge: 633
- Registriert: 17.11.2005 13:27
- Kontaktdaten:
Das stimmt zwar, allerdings merkt sich nicht das "Endif" selber die Adresse sondern das "If". Die 4 Byte gehören also zum Speicherbereich des "If"sPAMKKKKK hat geschrieben:Ich dachte immer ein Label ist eine (Programmrelative) Speicher-Adresse. Sich Speicher-Adressen zu merken kostet mindestens 4Byte!Deeem2031 hat geschrieben:Ein Endif ist aber nur ein Label, es braucht im fertigen Programm also überhaupt keinen Speicher.ts-soft hat geschrieben:Man kann nicht soviel If machen, wie Speicher da ist, die EndIf müssen ja auch noch passen
Welche Rücksprungadresse? Wieso sollte der Stack voll sein? Bei If-Abfragen wird der Stack überhaupt nicht belastet.PAMKKKKK hat geschrieben:Und wenn man sich die Rücksprungadresse auch noch merken muss wann ist der Stack voll???
![]()
![]()

[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]