Login
Aktuelle Version
Aktuelle 3d games creator / Darkbasic Professional Version: 7.2
vom: 04.02.2009

Zum Download bitte hier klicken.
Aktuelle News
letztes Update:
05.02.2009
(siehe Neues)
Hauptmenü
Suche
Internationale Seiten
DarkBASIC Lounge
Werbung
Aktuelle Themen im Forum
Forum Thema Antworten Gelesen Letzter Beitrag
Noch unfertige Projekte (3dgc) Doyle 2 9 109 01.09.2010 22:41 Mc-Over
Community Projekt Zum Spiel selbst 26 3490 28.08.2010 20:47 Mc-Over
Noch unfertige Projekte (3dgc) Lab Rush 15 763 28.08.2010 18:19 Mc-Over
Programmierung (3dgc) endloser Wettbewerb 1219 43492 27.08.2010 11:11 Valle
Community Projekt was ist mit dem community-projekt? 15 173 23.08.2010 19:33 basti123
Sonstiges 2 neue videos zum gucken 2 83 20.08.2010 23:58 codecrusher
Werbung
3d games creator Forenübersicht
   Anfängerboard (3dgc)
     Speichern von Daten
Du musst dich erst registrieren bevor du Beiträge veröffentlichen kannst

Diskussion | Neueste zuerst Vorheriges Thema | Nächstes Thema | Unten
Autor Diskussion
Stephanos
Veröffentlicht am: 25.07.2010 20:04
Frischling
Registriert seit:: 24.07.2006
Aus:: Heidelberg
Beiträge: 28
Speichern von Daten
Hi Leute!

Ich habe hier ein kleineren Quellcode für euch. Mein Ziel war es, dass ich eine Möglichkeit suchte, mit dem ich Daten speichern kann, wie einen Array mit Namen und diesen dann wieder aufrufen wollte.
Es würde mir helfen, wenn ihr mal schaut, ob dieses Programm überhaupt funktionieren würde. (Ich habe momentan Probleme mit meinem PC.) Ich würde euch bitten, mir dann zu sagen, was ihr von der Idee, die ich hatte dafür DLL's zu benutzen.

global ex as Integer
Dim name$(9)
gosub Einstellungen
goto Hauptfunktion

Einstellungen:
     if file exist("Ranking.dll")
          load DLL "Ranking.dll",1
     else
          make file "Ranking.dll",
          load DLL "Ranking.dll
          ex=1
     endif
return

Hauptfunktion:
     if ex=1
          for x= 0 to 9
               cls
               input "Geben sie ihren Namen ein!",name$(x)
          next x
          
          save array "Ranking.dll", name$(9)

     else

          load Array "Ranking.dll", name$(9)

     for x= 0 to 9
          print name$(x)
     next x
     endif

     wait key


end


vielen Dank für eure konstruktive Kritik
lg Stephanos
Mc-Over
Veröffentlicht am: 26.07.2010 09:18
24 Stunden Online
Registriert seit:: 16.09.2005
Aus:: Troisdorf (NRW)
Beiträge: 620
Re: Speichern von Daten
Also erstmal fehlt im unteren Teil ein endif (oder kann man sich das bei einzelnen Befehlen sparen? Wäre mir jedenfalls neu), dann lässt du deine for-Schleife oben von 0 bis 10 und unten von 0 bis 9 laufen, ich nehme mal an das sollte einheitlich 0 bis 9 sein? Würde dann jedenfalls mit der Arraygröße übereinstimmen.
Abgesehen davon würde es glaube ich funktionieren, wobei ich wirklich nicht verstehe was der DLL-Kram soll. Was genau soll das bringen? Und ich glaube (hab den Befehl allerdings noch nie benutzt weil ich immer lieber mit open to write Dateien selbst beschreibe) save array funktioniert nur, wenn die Datei noch nicht existiert - korrigiert mich wenn das falsch ist - sodass "make file" und "load dll" nur dafür sorgen, dass das Programm crasht. Wie gesagt, glaub ich...
mfg


----------------
~~Projekte~~
Modern Lightmapper V.0.4.15

Stephanos
Veröffentlicht am: 26.07.2010 11:11
Frischling
Registriert seit:: 24.07.2006
Aus:: Heidelberg
Beiträge: 28
Re: Speichern von Daten
Mir fehlen jegliche Erfahrungen in Sachen Umgang mit Dateien. Es war nur eine Idee wie man eben Daten Speichern kann. es kann sein, dass ihr bessere Vorschläge hab, dass müssd ihr mir nur sagen, oder wie ihr Rankings macht!
Die Probleme mit dem Quellcode, die du angesprochen hattest habe ich behoben.
lg
Stephanos
Mc-Over
Veröffentlicht am: 26.07.2010 22:24
24 Stunden Online
Registriert seit:: 16.09.2005
Aus:: Troisdorf (NRW)
Beiträge: 620
Re: Speichern von Daten
Gut, also es ist ja so - ob du der Datei jetzt eine DLL-Endung gibst oder TXT oder DAT oder sonst was ist ja völlig wurscht so wie ich das sehe. Du willst ja nur Daten reinschreiben/auslesen, das hat ja mit DLLs so nicht viel zutun.
In sofern würde ich die DLL-Befehle einfach rausnehmen und die Endung anpassen (auch wenn es DBPro ziemlich egal sein dürfte, was für eine Dateiendung du benutzt). Dann kann es weiterhin noch sein, dass save array nur funktioniert, wenn die Datei noch nicht existiert, das weiß ich aber nicht und es scheint auch nicht in der Hilfe zu stehen. So ist es jedenfalls bei open to write.
Also dann experimentier mal weiter, viel Erfolg noch.


----------------
~~Projekte~~
Modern Lightmapper V.0.4.15

Stephanos
Veröffentlicht am: 30.07.2010 22:07
Frischling
Registriert seit:: 24.07.2006
Aus:: Heidelberg
Beiträge: 28
Re: Speichern von Daten
Also ich habe jetzt eine Version, die zu funktionieren scheint. Das Problem, bei open to write, dass die Datei nicht existieren darf, ist mir unbekannt. Das mit save array scheint jedoch nicht so zu sein. Hier ist die Version, die bei mir funktioniert.
Mit dieser Version kann man auch Änderungen vornehmen, ob die Daten geändert werden sollen, einfach bei der Frage danach mit j antworten. Die Namen sind im Prinziep von 1-10 nummeriert!
lg Stephanos

P.S.:
Es wäre zur überprüfung der Funktionsthermes sinnvoll, wenn ihr hierfür einen neuen Projektordner anlegt!

global ex as Integer : global ant as string
global x as integer
Dim name$(9)
gosub Einstellungen
goto Hauptfunktion

Einstellungen:
     if file exist("Ranking.dat")=0
          make file "Ranking.dat"
          ex=1
     endif
return

Hauptfunktion:
     if ex=1
          for x= 0 to 9
               cls
               input "Geben sie ihren Namen ein!",name$(x)
          next x

          save array "Ranking.dat", name$(9)

     else

          load Array "Ranking.dat", name$(9)

     for x= 0 to 9
          print name$(x)
     next x
     endif

     input "wollen sie die die Namen ändern?(j/n)",ant

     if ant="j"
         gosub Anderung
     else
         end
     endif
return

Anderung:
   input "welchen Namen wollt ihr ändern?",x
   input "wie soll der Spieler heißen?",name$(x-1)
   save array "Ranking.dat",name$(9)
return

end
NGE83
Veröffentlicht am: 31.07.2010 16:50
Frischling
Registriert seit:: 13.09.2007
Aus:: Berlin
Beiträge: 25
Re: Speichern von Daten
Hallo Stephanos,

also ich halte nicht viel von ( save Array und load Array ), grund dafür ist du kannst in einen Array mehr Daten Speichern also diese Speicherfunction wirklich Speichert.

Hier ein kleines Beispiel, denn Code musste aber deinem Skrip anpassen.

Type Eigenschaften
Name as String
Punkte as Byte `` Gibt nicht mehr als 255 Punkte her
endtype

Dim Ranking(10) as Eigenschaften


Nun haste du denn Dim zusätzliche Eigenschaften gegeben
dein Array heißt nun Ranking(X).Name und Ranking(X).Punkte



`` Speichern

Open to write 1,"Ranking.dat"
for Gespeichert=1 to 10
write String 1,Ranking(Gespeichert).Name
write Byte 1,Ranking(Gespeichert).Punkte
next Gespeichert

`` Laden

Open to read 1,"Ranking.dat"
for Gespeichert=1 to 10
read String 1,Ranking(Gespeichert).Name
read Byte 1,Ranking(Gespeichert).Punkte
next Gespeichert

Wieso ich die Punkte in Byte abspeicher und nicht als File oder so hat den grund das andere Leute nicht einfach die Datei aufmachen können, und ihre Punkte ändern können. Wenn du mehr als 255 Punkte brauchst hilft normale Malrechnung.

So mach ich das immer, viel Spaß hoffe kommst klar wenn nicht frag einfach.



Stephanos
Veröffentlicht am: 02.08.2010 20:07
Frischling
Registriert seit:: 24.07.2006
Aus:: Heidelberg
Beiträge: 28
Re: Speichern von Daten
Vielen Dank für den Tipp!
Nur ist leider der Nachteil dieser Methode, dass ich jedes Objekt nur einmal eine Datei verwenden kann, jedoch werde ich zumindes zum Teil deine Methode! Danke nochmals!
lg Stephanos

PS: Kann man mit Read Byte auch ganz normale Variablen auslesen, oder muss man die vorher als Byte deklarieren?
Mc-Over
Veröffentlicht am: 03.08.2010 19:48
24 Stunden Online
Registriert seit:: 16.09.2005
Aus:: Troisdorf (NRW)
Beiträge: 620
Re: Speichern von Daten
Zitat:
Nur ist leider der Nachteil dieser Methode, dass ich jedes Objekt nur einmal eine Datei verwenden kann


Wie meinen?

Zitat:
Kann man mit Read Byte auch ganz normale Variablen auslesen, oder muss man die vorher als Byte deklarieren?


Kann man in sofern dass es da soweit ich weiß keine Fehlermeldungen gibt, aber read byte liest eben auch nur ein Byte aus. D.h. wenn eine integer-Variable mit 4 Bytes da steht bekommst du durch read byte nur das erste Viertel und damit wertmäßig ziemlichen Blödsinn, es sei denn du wandelst das extra nochmal mehr oder weniger kompliziert um, aber da hat eigentlich niemand was von, deswegen bieten sich da eher read/write word (2 byte) oder read/write long (für integer und dword also 4 byte) an, und für floats read/write float.


----------------
~~Projekte~~
Modern Lightmapper V.0.4.15

Flexus
Veröffentlicht am: 08.08.2010 14:57
DB Süchtiger
Registriert seit:: 04.07.2007
Aus:: Zell
Beiträge: 163
Re: Speichern von Daten
Also ich an deiner Stelle würde es einfach speichern so wie es ist im Klartext. Und dann einfach ein verschlüsseln, damit du die Daten nicht von außen verändern kannst.

eine einfache Methode ist: Byte für Byte einlesen, ASCII Code auslesen

ASCII Veränderung

0-128 + eine beliebige Zahl

129-255 - eine beliebige Zahl


Dann wieder byteweiße speichern.

Ist nicht die beste Verschlüsselung aber dürfte reichen^^

kannst dir natürlich auch was besseres ausdenken


----------------
Was? Nein! Ich bin nicht die Signatur! Ich putz hier nur!
...Soll ich was ausrichten?

Diskussion | Neueste zuerst Vorheriges Thema | Nächstes Thema | Oben

Du musst dich erst registrieren bevor du Beiträge veröffentlichen kannst