String in Bank Speichhern.
Übersicht

![]() |
BobBetreff: String in Bank Speichhern. |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Leute
ich möchte mal meine ersten Gehversuche mit den Bank Befehlen starten. Ist es möglich (und wenn, wie) Stings in Banken zu speichern?. In der Hilfe werden nur Zahlenwerte erwähnt. Danke Bob |
||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja, du kannst jedes Zeichen als einzelnes Byte speichern.
pseudo: Code: [AUSKLAPPEN] bnk = createbank(len(string)) For i=0 to len(string$)-1 peek(oder poke)byte bnk,i,mid$(string$,i,1) next das mit pekk oder poke: sorry hab den befehl und parameter u. deren Reihenfolge nicht im Kopf. MfG |
||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
http://mitglied.lycos.de/theve.../Banks.doc
da habe ich 2 varianten beschrieben. Es gibt noch eine 3. Variante, die ich mal mit in das Tut einbinden werde. Das sind die Pascalstrings die aus 256 Byte bestehen, wobei das erste Byte die Länge der Zeichenkette angibt. mfg olli |
||
![]() |
Bob |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo D2006,
danke für die Antwort. Schön das es grundsätzlich IRGENDWIE geht. Die Lösung ist aber total mangelhaft (Bank! Setzen. 5) um größere Texte im Speicher zu halten und zu verwalten. Das liegt natürlich nicht an deinem Code sondern am Bank Object selbst. Langsam bekomme ich mit BlitzBasic echte Probleme. Die Sprache taugt zwar dazu mal eben ein paar 3D Objecte auf den Screen zu zaubern (und das auch noch mit ordentlicher Performenc) aber die Verwaltung von Variablen ist unter aller Kannone. Gibt es überhaubt 1 einziges BlitzBasic RPG was jemals vollendet wurde mit mehr als 5 Gegner und 20 Items? Ich wünsche mir ein echtes Object Modell mit Klassen und Vererbung. Bei größeren Projekten besteht der halbe Code nur noch aus Flickwerk von dims, Banken und Typen, mit denen keine anständige Hirachie aufgebaut werden kann, ohne das im Untertyp das Handle des Obertypen mitgeschleppt werden muss. (und wieder ne Schleife mehr) Das nervt total ab. Dazu kommt noch die ungenügende Ide (Hinsetzen. 6). Da sollten die Programmierer mal ein Fremdprodukt einkaufen. (Obwohl BlitzView und BlitzEdit auch voll die Macken haben). Wenn ich weiterhin solche Frusterlebnisse habe kehre ich reumütig zu VB 6 zurück. Das Profionellste was ich bisher gesehen habe ist ParticleCandy. Da kann ich mehr als gut verstehen das er das verkauft und nicht zum kostenlosen Download anbietet. Ich kann mir gut vorstellen das auf den HD's der Blitzer, also euren und meiner, es nur so von halb angefangenen Projecten wimmelt. Überlegt euch mal wo genau den da immer die Schwierigkeiten auftreten. Sorry Leute aber ich musste echt mal Dampf ablassen. Ich hoffe in der nächsten Version wird sich da was tun. Für diejenigen die sich auf die Maus getreten fühlen, sei gesagt; die Kritik geht nicht an euch sondern an BB. PokeString EvilBank,1, DieseNachricht$ Ach wie schade das geht ja auch nicht. Böser ![]() |
||
![]() |
Suco-XBetreff: .... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstelle doch mal einen Standard Code der deiner Meninung nach so nicht hinzunehmen ist. Ich denke die Männers hier werden sich dann bemühen dir die bestemögliche Alternative anzubieten. Jedenfalls besser als nörgeln.
EDIT : Übrigens, eines der bekanntesten basic RPG`s wurde von Master Creating und Qbasic erstellt. Und das bietet eher wneiger praktische möglichkeiten wie Blitzbasic. bye |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
- Zuletzt bearbeitet von Suco-X am Di, Jun 15, 2004 13:56, insgesamt einmal bearbeitet
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: PokeString EvilBank,1, DieseNachricht$
...geht nicht? Doch! Mach dir ne Function draus, dann hasste PokeString (EvilBank,1, DieseNachricht$)... und mittes include kannst Du dir so alle benötigten Befehle "dazu laden". |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
BobBetreff: Re: .... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Suco-X hat Folgendes geschrieben: Erstelle doch mal einen Standard Code der deiner Meninung nach so nicht hinzunehmen ist. Ich denke die Männers hier werden sich dann bemühen dir die bestemögliche Alternative anzubieten. Jedenfalls besser als nörgeln.
Ok. Ich werd mal einen Posten den es zu Optimieren gilt. Suco-X hat Folgendes geschrieben: EDIT : Übrigens, eines der bekanntesten basic RPG`s wurde von Master Creating und Qbasic erstellt. Und das bietet eher wneiger praktische möglichkeiten wie Blitzbasic.
bye Eben. Qbasic und nicht Blitzbasic. Es geht aber genau darum. 8) Hi BladeRunner. Freu mich das du es gelassen nimmst. ![]() |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was sollte ich auch sonst tun ? Kein Programmierer kann an alle Nutzer seines Produktes denken, grade bei Programmiersprachen wo wirklich jeder andere Ansprüche stellt.
Das BB nicht OO ist, ist denke ich für einen Basic-dialekt durchaus zu entschuldigen. Und Marc ist halt eben auch nur ein Mensch. Und allein sowas wie BB zu erschaffen hat schon Respekt verdient. Also überseh ich die Macken und arbeite mit dem was ich hab (und erweitere es mir innerhalb meiner Möglichkeiten, wenn nötig.) |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Bob |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also. Auf Anregung von Suco-X hier mal den Code den es zu Optimieren gilt.
Aufgabe. Direkte Zugriff auf das gewünschte Item ohne die gesamte Collection zu Durchlaufen Das separate Speichern des Handels des Gewünschten Items ist natürlich nicht erlaubt sons wäre das ja alles quatsch. Momentan behelfe ich mir eben so das ich das Handle des Obertypes im Untertyp festhalte und in einer schleif nach dem Hnadle suche. Ich hoffe das geht einfacher. Code: [AUSKLAPPEN] ; Hauptobject Local cMonster Type NPC Field Monster$ ; Orc, Troll, Hund Katze Maus Field HP% ; Na was wohl Field Name$ End Type ;Unterobject Type Item Field NPC_HND ; Handle des Monsters Field Bez$ ; z.B. Drachentöter Field Typ ; z.B. Langschwert End Type For i = 0 To 9 NPC.NPC = New NPC NPC\HP = Rand(5,25) NPC\Monster = "Orc" If i =5 Then NPC\Name = "Hauptman der Orcs" cMonster = Handle(Npc) ; Handle des Hauptmans festhalten Else NPC\Name = "Dumbatz" EndIf hnd = Handle(NPC) it.item =New Item it\NPC_Hnd = hnd If i = 5 Then it\Bez$ = "BlitzBasic Spies der ewigen verdammniss" Else it\Bez$ = "Orcsäbel" EndIf it\Typ = "Hiebwaffe" Next Npc = Object.NPC(cMonster) For it.item = Each Item If it\npc_hnd = cMonster Then Print it\Bez$ Exit Else Print " Nicht die Waffe vom Hauptmann" EndIf Next ;Wünschenswert wäre es in dem Type NPC einen Verweis auf Item zu haben ;der auch nur die ITEMS des entsprechend NPC enthält |
||
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie wärs mit einfachCode: [AUSKLAPPEN] Field NPC.NPC statt NPC_HND?
|
||
![]() |
Bob |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi
Edlothiol hat Folgendes geschrieben: Wie wärs mit einfachCode: [AUSKLAPPEN]
Field NPC.NPC statt NPC_HND?Na dann probier das mal aus. Ich lass mich gerne überzeugen. Aber ich bezweifle das daß geht. Im übrigen wäre es sinnvoller (wenn es den klappen würde) besser in NPC einen Field Item.Item anzulegen. Damit würde man allerdings immer auf alle Items verweisen. |
||
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Warum sollte das nicht funktionieren?
Zitat: Damit würde man allerdings immer auf alle Items verweisen. Auf mehrere Objekte gleichzeitig verweisen kannst du allersings nicht, wenn die Inventargröße aber eh nicht sonderlich groß ist, kannst du sowas machen:Code: [AUSKLAPPEN] Field Item.Item[20] Das nennt sich BlitzArray, kann nur eindimensional sein und kann nicht geredimt werden, dafür kannst du es überall (Local, Global, Field) verwenden.
|
||
![]() |
Bob |
![]() Antworten mit Zitat ![]() |
---|---|---|
Edlothiol, ich glaube wir reden aneinander vorbei.
Ich kenn sowohl die Dim Felder als auch die BlitzArrays. Das Problem ist das sie nicht die Lösung sind für dieses Problem. Natürlich funktioniert es damit aber man unterligt halt immer den Beschränkungen. Mann muss schon tiefer in die Materie eintauchen um alle Zusammenhänge und auch Folgeprobleme zu erkennen. Bleiben wir bei dem Beispiel des Typs NPC. Darin sollen ja auch z.B. alle Händler bzw. Shops erfasst werden. (Um beim RPG fortzufahren) Da reichen dann a. 20 Felder nicht unbedingt aus. Was dann?. Dan halt Dim Item(50)? Das ist Speicherverschwendung. Grundsätzlich sollte ein Objekt oder eine variable, Feld oder was auch immer, nur so groß sein wie es notwendig ist. Dann schon lieber Dim Item(1) und neu Dimmen, umkopieren oder was auch immer, wenn es notwendig wird. Genau darum aber gehts ja hier. Man muss relativ viele Daten Bewegen und Manipuliern um kleinste Mengen effektiv zu verwalten. Es gilt eine Lösung zu finden die a. ohne viele Schleifen auskommt, bei denne Werte miteinander verglichen werden müssen um das gewünschte zu finden. (Speed Speed Speed) b. nur den Platz an Speicher verbraucht der auch notwendig ist. (insbesondere V-Ram ist kostbar) Zur Zeit arbeite ich sehr intensiv daran. Ein Lösung scheint in greifbare Nähe zu rücken. Wenn's fertig ist Poste ich es. Es wird eine sich selbst organisierendes Parent/Child Objekt. Es können n Parents existieren die jeweils n Childs haben. Ist das Parent Identifiziert (Ohne Schleife) kann auf jedes Schild direkt (ebenfalls ohne Schleife ) zugegriffen werden. Wird ein Parent gelöscht, werden alle Childs Gelöscht. Ein Parent hat nur soviel Chields wie nötig. Damit ist es dann egal ob Particle System oder RPG NPC/Item Verwaltung. Da ich Hauptberuflich Datenbanken Programmiere erscheinen mir unzusammenhängende Daten und Objekte als total Konfus. (Ich Denke das es klappt) Code zu ca. 60 Prozent fertig. oh mist die Deutschen Spielen gleich. muss bier holen ![]() |
||
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: Da reichen dann a. 20 Felder nicht unbedingt aus.
Das weiß ich auch, ich meinte ja auch: Nur wenn das Inventar begrenzt und relativ klein ist. Zu empfehlen wären da z.B. Banks (obwohl da das Problem der Handles bleibt).
Was dann?. Dan halt Dim Item(50)? Das ist Speicherverschwendung. Abgesehen davon: Die Verwaltung der Datenstrukturen ist in BB wohl nicht die größte Speedfrage - der langsamste Teil ist eh die Grafik, und wenn dein Spiel zu langsam ist, helfen dir meist auch deine ultraschnellen Objekte nichts, sondern vielmehr Optimierungen an der Grafik. Da ist auch die Frage, ob VB6 nicht doch zu langsam für ein Spiel ist (gut, ich weiß, ist alles optimiert und so ![]() ![]() ![]() Zitat: (insbesondere V-Ram ist kostbar) Hm, und was bringen dir da kleine Datenstrukturen?
|
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schon mal Type-Instanzen von blitzbase/quellcodes probiert???
newlist() deletelist() newentry() deleteentry() afterentry() beforeentry() firstentry() lastentry() |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
Bob |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Abgesehen davon: Die Verwaltung der Datenstrukturen ist in BB wohl nicht die größte Speedfrage - der langsamste Teil ist eh die Grafik, und wenn dein Spiel zu langsam ist, helfen dir meist auch deine ultraschnellen Objekte nichts, sondern vielmehr Optimierungen an der Grafik. Da ist auch die Frage, ob VB6 nicht doch zu langsam für ein Spiel ist (gut, ich weiß, ist alles optimiert und so
![]() ![]() ![]() Na da geb ich dir ja Recht. Ich beruhig mich ja schon wieder. Zitat: (insbesondere V-Ram ist kostbar) Hm, und was bringen dir da kleine Datenstrukturen?[/quote]
Das war allgemein gemeint. Wer sich nicht um die Speicherverwaltung seiner Werte im kleinen kümmert, asst meistens auch mit Grafiken rum. Hallo TheSchadow, Zitat: TheSchadow:Schon mal Type-Instanzen von blitzbase/quellcodes probiert
Ja. Das ist bisher noch das beste und kommt der Sache am nächsten. Wenn mein Vorhaben scheitert, werde ich mit den listen weitertricksen. Im übrigen kann ich deine guten Tuts schon im schlaf rauf und runter beten. (Wenn sie den von dir stammen) Du glaubst garnicht wie oft ich mit, insbesondere das kompakte und ausführlicht Tut über Types, schon reingezogen habe. Leider habe ich Sie erst relative spät entdeckt und bin somit auch voll in die Type Falle gelaufen. ![]() Ich wünschte mir mehr Tuts. in dieser Qualität. Zitat: Aus Tutorial: ...ist es ein sehr komplexes Thema und besonders Anfänger haben große Schwierigkeiten bei Verwendung von Types. Oft liegt es an anderer Vorstellung wie Types überhaupt funktionieren. Ich selbst war zuerst etwas verwirrt, da Types in anderen Programmiersprachen ganz anders funktionierten.
Gruß an alle Bob |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
hehe ja... ansonsten kann ich noch die "einfachere" Variante empfehlen - Handles in BANK speichern - die BANK kannst du beliebig vergrößern oder verkleindern.... | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
dubitat |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also irgendwie blick ich da nicht mehr durch! zuerst wolltest du doch noch einen einfachen text in einer bank gespeichert haben! das kannste ja noch ganz einfach machen da du einfach den string durchsuchst nach buchstaben und speicherst diese dann als zahlenwert in deine bank!
hab die befhele nicht im kopf aber du kannst ihm ja sagen das er für a 1, b 2, c 3,... speichern soll! und dann kannste den text auich mit chr(x) wieder sichtbar in eine string speichern! |
||
Erare humanum est - Irren ist Menschlich |
![]() |
Bob |
![]() Antworten mit Zitat ![]() |
---|---|---|
TheShadow hat Folgendes geschrieben: hehe ja... ansonsten kann ich noch die "einfachere" Variante empfehlen - Handles in BANK speichern - die BANK kannst du beliebig vergrößern oder verkleindern....
Grins ![]() Genau auf den Trichter bin ich auch gekommen. Ist nur Schade das mir das keiner vorher mal verraten hat und ich mir das (als BlitzNewbie) allein ausdenken musste. Ich habe auch noche kein Posting oder Tut dazu gefunden. Hauptobject = Type mit einem Feld Bank. Unterobject = Type handel in HO Bank. Arbeitete natürlich mit Int Werten / 4 Byte. Erfordert natürlich vom User ein bißchen Disziplin nicht mit Insert Befor After usw. zu hantieren. Man muss halt alle Functionen selber machen. Aber es lohnt. Bin grade an einem Universellen "Msg Screen" amArbeiten der die Funtionalität verdeutlicht. Die Screens (X belibiger gleichzeitig) können z.b. Als DebugFenster im Vollbbild Modus laufen. Das Unterobject nimt alle meldungen auf. Keine Schleifen mehr nötig. Hurra. Frei Positionierbar. Unterschiedliche Farben, Größe Hide, Show, Move, TextScrolling und. und. und. ca 90% Fertig. Nur noch Feintunning und Dokumentieren. Würde gerne eine ausfürliches Tutorial darüber machen mit 2 Demos. U.a. "RPG und effektives verwalten von Items und Charackterdeten" (Um auf den Uhrsprünglichen Grund zurück zu kommen) Mit seperater HTML Dokumentation. Ich denke es würde einigen Neueinsteigern helfen, die wie ich nahe am Verzweifeln waren / sind, die Kurve zu kratzen und BB nicht in die Tonne zu drücken. Hi dubitat. Hat sich erledigt. Text_in_Bank = False Text_in_Type = True hnd_von_Type_mit_Text_in_Bank = True Alles wird gut. Lieber ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group