Types als parameter übergeben (problem)

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

horstböhse

Betreff: Types als parameter übergeben (problem)

BeitragMi, Sep 21, 2005 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!!

Ich hänge mal wieder beim Verstehen der internen Behandlung von BlitzBasic-Type-Listen.

Ich habe folgendes Verdeutlichungs-Programm geschrieben:

Code: [AUSKLAPPEN]

Type bla

   Field x
   Field y

End Type


Global var.bla=New bla

var\x=2
var\y=3


For i= 0 To 4

  funk(var)
   
Next


Function funk(s.bla)
   
   For s=Each bla

      Print s\x
   
   Next
   

End Function


Eigentlich müssten doch jetzt auf dem Bildschirm 5 Zahlen ausgegeben werden, oder?

Es werden aber nur 2 ausgegeben!!

Ich kann mir aber absolut nicht erklären, warum!

Ich hoffe, es kann mir jemand helfen!!

Spikespine

BeitragMi, Sep 21, 2005 21:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich verstehe nicht, wieso du in der Function eine For...Each-Schleife verwendest. Lass die doch einfach weg, dann gehts.
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax
 

horstböhse

BeitragMi, Sep 21, 2005 21:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie gesagt, ich habe dieses Programm nur zum Testen geschrieben!!

Wenn die Liste nun mehr als einen Eintrag hat, dann soll damit 5mal die gesamte Liste ausgegeben werden!!
Somit komme ich nicht an der For Each Schleife vorbei!!

Aber trotzdem danke für den Vorschlag!
 

Florian

BeitragMi, Sep 21, 2005 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]


Type bla

Field x
Field y

End Type


Global var.bla=New bla

var\x=2
var\y=3


For i= 0 To 4
funk
Next

WaitKey

Function funk()

For var=Each bla

Print var\x

Next


End Function

 

horstböhse

BeitragMi, Sep 21, 2005 22:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, so kann mans natürlich machen!! Danke

Aber was mich interessieren würde, warum funktioniert es nicht, die variable lokal zu über geben.

Das wäre für mein eigentliches Problem die elegantere Lösung!!

Und eigentlich muss es doch so auch funktionieren!!

Dachte immer, BB verwaltet Listen wie verkettete Listen in C++!

In jeder TypeVariablen ist auch eine Zahl gespeichert! Dachte, das ist eine Art Referenz auf den Datensatz!!
 

horstböhse

BeitragMi, Sep 21, 2005 23:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab mir grad das Tutorial zu Types durchgelesen, und demnach muss das so funktionieren!!

Ich fange bei diesen Types noch an zu verzweifeln!!

Spikespine

BeitragDo, Sep 22, 2005 14:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich verstehe nicht genau was du willst...
Wozu übergibst du die Type-Variable an die Funktion, und machst dann eine For-Each-Schleife?
Übergeb die Variable doch einfach an die Funktion und gib die var\x ohne For-Each aus.
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax
 

horstböhse

BeitragDo, Sep 22, 2005 14:40
Antworten mit Zitat
Benutzer-Profile anzeigen
In wirklichkeit ist es auch nicht nur eine variable, sondern in der liste befinden sich mehrere!!

Wenn ich die Liste manuell mit FIRST und dann AFTER durchgehe, funktioniert das ganze!!

Aber es muss doch auch so mit FOR EACH gehen, oder? Denn FOR EACH macht meines Erachtens auch nichts anderes, als die Liste mit AFTER durchzugehen, oder?

Meine Frage zielt quasi nicht in die Richtung, wie ich mein Beispiel anders machen kann, damit es die gleiche Ausgabe liefert, sondern ich würd gern wissen, warum das mit FOR EACH nicht geht, obwohl es das doch müsste!

Xaron

BeitragDo, Sep 22, 2005 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm... interessant ist ja, dass er die Zahl immerhin zweimal ausgibt. Ich hätte ja jetzt auf einmal oder 5mal getippt, aber zweimal?

Gruß - Xaron
Cerberus X - Monkey X Reloaded!
 

horstböhse

BeitragDo, Sep 22, 2005 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Du sprichst mir aus der Seele!!

Ich hab auch keinen Plan, was das sein kann!! Vielleicht kennt sich ja jemand mit der Internerna von BB aus und kann mir die Frage beantworten!
 

Florian

BeitragDo, Sep 22, 2005 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]


Type bla

Field x
Field y

End Type


Global var.bla

var.bla=New bla

var\x=1
var\y=1

var.bla=New bla

var\x=2
var\y=2


For i= 0 To 4

funk(var)

Next

WaitKey


Function funk(s.bla)

For s=Each bla

Print s\x

Next


End Function

;Ausgabe:
;1
;2
;1
;1
;1
;1



BlitzBasic: [AUSKLAPPEN]


Type bla

Field x
Field y

End Type


Global var.bla

var.bla=New bla

var\x=1
var\y=1

var.bla=New bla

var\x=2
var\y=2

var.bla=New bla

var\x=3
var\y=3


For i= 0 To 4

funk(var)

Next

WaitKey


Function funk(s.bla)

For s=Each bla

Print s\x

Next


End Function



;Ausgabe:
;1
;2
;3
;1
;2
;1
;2
;1
;2
;1
;2







BlitzBasic: [AUSKLAPPEN]
Type bla 

Field x
Field y

End Type


Global var.bla

var.bla=New bla

var\x=1
var\y=1

var.bla=New bla

var\x=2
var\y=2

var.bla=New bla

var\x=3
var\y=3


For i= 0 To 4
Var=First Bla
funk(var)

Next

WaitKey


Function funk(s.bla)

For s=Each bla

Print s\x

Next


End Function



;Ausgabe:
;1
;2
;3
;1
;2
;3
;2
;3
;2
;3
;3


 

horstböhse

BeitragSa, Sep 24, 2005 15:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, sieht für mich so aus, also ob die FOR EACH - Funktion ganz schön viel Misst baut, oder?

Muss ich das wohl doch manuell mit after machen, was?
 

Florian

BeitragSa, Sep 24, 2005 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:


Muss ich das wohl doch manuell mit after machen, was?



Nein
Du muss doch keine lokale variabel über geben.
Mit den Globalen Variabeln geht es doch.

Wo für benutzt du globale Variabeln, wenn du die globale Variabeln in Funktion nicht nutzt?
Welchen Sinn soll das haben?
 

horstböhse

BeitragMo, Sep 26, 2005 11:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich wollte es eigentlich auch mit lokalen machen, mir ist auch grad aufgefallen, dass ich hier die Version mit der globalen gepostet habe, aber auch mit einer lokalen Variablen tritt das Problem auf, hab ich schon ausprobiert!!!

Ich finde das Übergeben von lokalen Variablen an Funktionen besser, da dann die FUnktionen eigenständiger sind, und mann nicht jedesmal, wenn man irgendwas an der globalen Variablen ändert, das in allen Funktionen ändern muss!

Xaron

BeitragDi, Okt 04, 2005 8:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, auf jeden Fall ist das ein offizieller Bug, bestätigt von Marc:

http://www.blitzbasic.com/Comm...opic=51198

Und Marc schreibt auch, dass es wohl bald eine neue Version geben wird! Smile

Gruß - Xaron
Cerberus X - Monkey X Reloaded!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group