Banks in Banks Speichern

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Jan_

Ehemaliger Admin

Betreff: Banks in Banks Speichern

BeitragDi, März 07, 2006 9:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Aloa,

Ich wollte gestern meine Mapengine in Bmax 1.16 mal testen,
Ok, das hatte zum effekt, das ich ne menge umschreiben musste, aber es gibt ein Problem,
Ich speichere dort Banks in Banks.
aber das geht nciht mehr wie Früher,
Geht das überhaupt nciht mehr, oder mache ich was Falsch?
between angels and insects

Suco-X

Betreff: ........

BeitragDi, März 07, 2006 13:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Also Banks in Banks speichern scheint mir nicht gerade eine tolle Lösung, klingt ja richtig fies. Sicher dass du dich da mit deiner Lösung nicht verirrt hast?
Dir ist warscheinlich der Strict Modus zum verhängnis geworden, bei dem man nicht mehr mit Int Handles von Objecten rumspielen darf.
Probiers doch mal mit den Befehlen wie HandleToObject und HandleFromObject
um einen Integerwert deiner Banks zu bekommen. Das Integerzeugs kannst du ja dann in deine Banks speichern.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB
 

Dreamora

BeitragDi, März 07, 2006 14:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Alternativ kannst du jetzt auch Types mit Arrays drin nutzen, da diese im Unterschied zum alten BM jetzt dynamisch vergrössert und verkleinert werden können.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Jan_

Ehemaliger Admin

BeitragDi, März 07, 2006 14:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm,

Das Problem ist,
Das es um die Bmax Mapengine für mapeditor.de.vu geht,
diese war recht früh in Bmax Geschrieben und deshalb auch noch mit vielen BB techniken,
und das alles umzuschreiben über ca. 150 kb source die ganzen abhängigkeiten ,... wollte ich eigentlich cniht.
handle to objekt und handle from objekt funktioniren nciht.
da sagt der mir immer, int und Objekt passen nicht ...
between angels and insects
 

Dreamora

BeitragDi, März 07, 2006 15:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Handle to / from wäre auch keine effiziente Lösung weil er das Objekt im System erst wieder suchen muss mit dem Handle und dafür ist BM nimmer optimiert (wie es das alte Blitz war).
Speziell bei Banks ist IntHandle eine sehr ungesunde idee, da dann BM langsamer wird BlitzPlus. (deswegen die Banks auch immer mit :TBank deklarieren, sollte das nicht geschehen sein)

Da speicherst du besser den BytePtr der Bank in eine Bank.

PseudoCode:
WriteInt(Bank,BytePtr(Bank2))
local Bank2:tbank = TBank(ReadInt(Bank))
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Jan_

Ehemaliger Admin

BeitragDi, März 07, 2006 15:38
Antworten mit Zitat
Benutzer-Profile anzeigen
joa, sowas suchte ich,

mal sehen ob es funzt.
between angels and insects
 

Dreamora

BeitragDi, März 07, 2006 15:53
Antworten mit Zitat
Benutzer-Profile anzeigen
War doch ein klein bisschen länger Wink
Hier ein funktionierender Code:

Code: [AUSKLAPPEN]
Strict

Local bank:TBank   = CreateBank(128)
Local bank2:TBank   = CreateBank(128)
For Local i = 0 To 128/4 - 1
   PokeInt(bank2,i*4,i)
Next

PokeInt(bank,0,Int(BankBuf(bank2)))

Print "Adresse ist: " + PeekInt(bank,0)

Local bank3:TBank   = CreateStaticBank(Byte Ptr(PeekInt(bank,0)),128)
Print "Die Daten sind:"
For Local i = 0 To 128/4 - 1
   Print "Offset: " + i*4 + ", Inhalt: " + PeekInt(bank3,i*4)
Next

End
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Abrexxes

Betreff: Bank->Stream->positionieren

BeitragFr, Sep 29, 2006 15:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

wie kann ich mich in einem Stream auf eine bestimmte Stelle positionieren? Ich stehe da auf dem Schlauch. Smile

Code: [AUSKLAPPEN]

Blogdat:TBank=LoadBank("blo.dat ")
Local big=BankSize( Blogdat:TBank )
Print big

CreateBankStream:TBankStream( Blogdat )


in=ReadStream(Blogdat)
While Not Eof(in)
   Print ReadLine(in)
Wend
CloseStream in


Also zb von einer bestimmten Position anfangen auszulesen?

thx

FOODy

BeitragFr, Sep 29, 2006 16:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Meinst du jetzt mit Positionieren: SeekStream(stream:TStream,pos:Int)?

EDIT:
Irgendwie sieht der Code komisch aus...
Wieso machst du es nicht einfach so?

Code: [AUSKLAPPEN]
Blogdat:TBank=LoadBank("blo.dat ")
Local big=BankSize( Blogdat:TBank )
Print big

local in:TBankStream=CreateBankStream( Blogdat )

While Not Eof(in)
   Print ReadLine(in)
Wend
CloseStream in



Gruß,
FOODy
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB

Abrexxes

BeitragFr, Sep 29, 2006 16:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Yup, habe Seekstream die Bank und nicht den Stream übergeben. Rolling Eyes

Jetzt gehts. Smile

Nachtrag: Ich experimentiere rum

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group