mehr elemnte in einer liste, als NEW aufgerufen wird!!

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

horstböhse

Betreff: mehr elemnte in einer liste, als NEW aufgerufen wird!!

BeitragDo, Feb 03, 2005 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Ich arbeite gerade mit Typelisten, was ich sehr praktisch finde!
Allerdings kann ich mir etwas nicht erklären:

Mit NEW kann man ja ein neues Element an eine Liste anfügen.
Nun wird in meinem Programm im Zusammenhang mit der Variablen
zur Laufzeit NEW nur 15mal aufgerufen (Habs mit dem Debugger überprüft)
Wenn ich die Liste aber mit der FOR...EACH - Schleife ausgebe, listet er mir 24 Elemente auf!!

Wie kann denn das sein! Legt ein andere Befehl außer NEW ein neues element an?? Kann mir das nicht erklären und hoffe, es kann mir hier jemand helfen!!
 

Blitzkrieg Bop

BeitragDo, Feb 03, 2005 16:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Lokalisiere dein Problem und gebe uns ein dementsprechendes Code-Beispiel, dann können wir glaube ich besser helfen Wink
~ Hey Ho Let's Go ~
 

Dreamora

BeitragDo, Feb 03, 2005 16:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Da wir keine Götter sind und nicht hellsehen können brauchen wir da schon Source
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

horstböhse

BeitragDo, Feb 03, 2005 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry, dachte, ist vielleich ein generelles Problem.
Also, hier meine Typedeklarationen:

Code: [AUSKLAPPEN]

Type KoeffizT
   Field a#
   Field b#
   Field c#
   Field d#
End Type

Type PunktT
   Field wert#
   Field steigungx#
   Field steigungy#
End Type

Type Array2DT
   Field Punkte.PunktT=Null
   Field zeilen%
   Field spalten%
End Type


Und die Funktion, in der das Problem auftritt:

Code: [AUSKLAPPEN]

Function Interpolate.Array2DT(stuetzpunkte.Array2DT,anzahlinterp%)
   
   Heightfield.Array2DT=New Array2DT
   Hilfspunkt.PunktT=Null
   Koeffiz.koeffizT=New koeffizT
   
   ;Alles an den Anfang setzen
   stuetzpunkte\Punkte= First PunktT
   
   ;Stuetzpunktfeld durchlaufen
   For y=0 To (stuetzpunkte\zeilen-1)
   
      For x=0 To (stuetzpunkte\spalten-2)
      
         ;Nachfolger holen
         Hilfspunkt=After stuetzpunkte\Punkte
         
         GetKoeffiz(Koeffiz,x,stuetzpunkte\Punkte\wert,stuetzpunkte\Punkte\steigungx,x+1,Hilfspunkt\wert,Hilfspunkt\steigungx)
         
         DeltaStY#=(Hilfspunkt\steigungY-stuetzpunkte\Punkte\steigungY)/(anzahlinterp+1.0)
         
         ;Berechnung der Zwischenpunkte und der YSteigungen
         For a = 0 To anzahlinterp
         
            IntX#=x+a/(anzahlinterp+1.0)
            
            Heightfield\Punkte=New PunktT
            Heightfield\Punkte\wert=Koeffiz\a*IntX^3+Koeffiz\b*IntX^2+Koeffiz\c*IntX+Koeffiz\d
            Heightfield\Punkte\steigungY=stuetzpunkte\Punkte\steigungY+a*DeltaStY#
         Next
         
         stuetzpunkte\Punkte=After stuetzpunkte\Punkte
      Next
      ;Letzer Punkt der Zeile
      heightfield\punkte=New punktT
      Heightfield\Punkte\wert=stuetzpunkte\Punkte\wert
      Heightfield\Punkte\steigungX=stuetzpunkte\Punkte\steigungX
      Heightfield\Punkte\steigungY=stuetzpunkte\Punkte\steigungY
      
      ;Zur nächsten Zeile springen
      If Not stuetzpunkte\zeilen = (y+1) Then
         stuetzpunkte\Punkte=After stuetzpunkte\Punkte
      End If
   Next
   
   Heightfield\zeilen=stuetzpunkte\zeilen
   Heightfield\spalten=(stuetzpunkte\spalten-1)*(anzahlinterp+1)+1
   
   stuetzpunkte\punkte=First punktT
   heightfield\punkte=First punktT
   
   For heightfield\punkte=Each punktT
      DebugLog(heightfield\punkte\wert)
   Next
   
   Return(Heightfield)

End Function
 

horstböhse

BeitragFr, Feb 04, 2005 9:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann mir keiner Helfen?

Dann vielleicht noch die Information:

Bei meinem Testlauf sind in Code: [AUSKLAPPEN]
stuetzpunkte
3*3 Punkte enthalten und Code: [AUSKLAPPEN]
anzahlinterp%
beträgt 1.

Dann müssten sich in Code: [AUSKLAPPEN]
Heightfield
am Ende 15 Punkte befinden, es sind aber 24!!! Question Question Question
 

horstböhse

BeitragFr, Feb 04, 2005 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Mitlerweile habe ich den Fehler lokalisiert!!

BB behandelt jeden Type als eine ganze Liste!!

Ich dachte, Type ist nur der Datentyp und jede neue Instanz ist eine eigene Liste!!

Gibt es nicht die Möglichkeit, mehrere unabhängige Listen eines Types zu erstellen?
 

horstböhse

BeitragFr, Feb 04, 2005 15:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Mitlerweile habe ich den Fehler lokalisiert!!

BB behandelt jeden Type als eine ganze Liste!!

Ich dachte, Type ist nur der Datentyp und jede neue Instanz ist eine eigene Liste!!

Gibt es nicht die Möglichkeit, mehrere unabhängige Listen eines Types zu erstellen?
 

OJay

BeitragFr, Feb 04, 2005 15:59
Antworten mit Zitat
Benutzer-Profile anzeigen
nein leider nicht. das gibt es erst ab blitzmax. musst dir wohl oder übel über soetwas wie "Field ID%" aushelfen um types nach kategorien zu unterscheiden
 

horstböhse

BeitragSa, Feb 05, 2005 13:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh man, langsam aber sicher schwindet meine anfängliche Begeisterung für BlitzBasic!! Sad

Kann es nicht sowas wie BlitzC++ geben??

Naja, trotzdem danke!!
 

OJay

BeitragSa, Feb 05, 2005 15:21
Antworten mit Zitat
Benutzer-Profile anzeigen
horstböhse hat Folgendes geschrieben:
Kann es nicht sowas wie BlitzC++ geben??


BlitzMax Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group