Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 02.06.2006, 21:11 Titel: Ein File-Tutorial :) |
|
|
ich hab auch mal ein tut geschrieben: es behandelt die zukunftssichere dateibehandlung. also wie man z.b. ein savegame-format entwickeln kann, das viele versionen eines spiels überleben kann, bei dem man ein savegame von version 10 auch noch in der ersten beta-release laden kann
Das Tutorial!
ich freu mich auf lob/kritik/etc!  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.

Zuletzt bearbeitet von Jojo am 02.10.2006, 22:35, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 02.06.2006, 21:44 Titel: |
|
|
Hi jojo,
das Tutorial hat mir so gut gefallen, daß ich es mir gleich gezogen habe..
*ganzdickeslobaussprechundschulterklopf*
Dafür darfst du jetzt auch mein Tutorial ansehen..
[Edit]
Link geändert..
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO..
Zuletzt bearbeitet von ytwinky am 23.07.2006, 12:54, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 02.06.2006, 22:00 Titel: |
|
|
ja, echt geniales tut  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Dominik
Anmeldungsdatum: 22.12.2004 Beiträge: 172
|
Verfasst am: 02.06.2006, 23:42 Titel: |
|
|
Hallo,
ich muss sagen, dass ich beide Tuts von euch gut finde.
Also: Großes Lob an euch beide.
Vielleicht sollte ich auch mal ein Tut schreiben, nur über was?!....  |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 03.06.2006, 09:49 Titel: |
|
|
Meine in dem Sinn Tutorialsammlung kennen ja die meisten schon:
http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/index.html
Ansonsten zum Thema Dateiformat: Formate mit dem Grundkonzept <TagName> = <Value> sowie Chunk-Strukturen (z.B. IFF aus der Commodore Amiga-Welt) waren schon immer gegenüber irgendwelchen Record-Strukturen mit womöglich fixen Positionen überlegen, was das Thema Kompatibilität betrifft. HTML wurde ja nicht zuletzt deswegen so erfolgreich, weil ein alter Browser bei einem neuen HTML-Dokumente die für ihn unbekannten Tags einfach überlesen konnte.
Mittlerweilen, wo man ja mit dem Plattenspeicher nicht mehr wie früher geizen muss, hält auch der Trend zu ASCII-Dateiformaten an, nicht zuletzt wegen des Vorteils, dass ich mittels NOTEPAD.EXE Änderungen vornehmen kann. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 03.06.2006, 12:39 Titel: |
|
|
Hi, von mir auch
@Jojo, Gute Idee, dieses Problem zu thematisieren.
..eine Verbesserung hätte ich aber:
Code: | ...
Dim ff as integer
ff = FreeFile
Open "test.bin" For Binary As #ff
...
'(alle folgenden #1 durch #ff ersetzen)
...
Close #ff |
Gruß Volta _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Infection 93 gesperrt

Anmeldungsdatum: 11.03.2006 Beiträge: 377 Wohnort: Egal, dort wo ein PC ist.
|
Verfasst am: 03.06.2006, 13:02 Titel: |
|
|
@Jojo
Ich finde, man sollte Spielstände in Dateien speichern, die mit RANDOM geöffnet werden. Aber das Tutorial ist sehr gut geschrieben. _________________ Meine Homepage:
www.infection93.org
Und das Forum von mir und King01:
www.infection93.bboard.de |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 03.06.2006, 13:07 Titel: |
|
|
@Michael Frey:
Genau dafür isses..
@volta:
Ich hatte bei ROSI3 auch erst FF für den FilePointer genommen, aber in meinen Augen
sieht FF immer wie 255 aus, deshalb habe ich mich bei ROSI3 für fptr entschieden..
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 03.06.2006, 16:25 Titel: |
|
|
infection wenn man zwischen Laden und Speichern explizit unterscheidet is Input und Output wohl besser... _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Infection 93 gesperrt

Anmeldungsdatum: 11.03.2006 Beiträge: 377 Wohnort: Egal, dort wo ein PC ist.
|
Verfasst am: 03.06.2006, 16:30 Titel: |
|
|
Wieso? Wenn mans mit RANDOM öffnet, heißt das ja nicht, das der User nach belieben Laden oder Speichern kann. Aber damit der Quellcode übersichtlich bleibt, sollte man schon INPUT und OUTPUT verwenden. _________________ Meine Homepage:
www.infection93.org
Und das Forum von mir und King01:
www.infection93.bboard.de |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 03.06.2006, 16:34 Titel: |
|
|
das betriebssystem handlet dateien anders wenn sie mit random geöffnet wurden. Grundsätzlich machst du das savegame auf for input, dann liest du alles aus und machst das file wieder zu. Dann zum speichern eben open for output, schreiben, wieder zumachen. Du lässt die datei ja nicht die ganze zeit offen. Und wenn du nur lesen willst, warum sollst dus dann für beide zugriffsarten öffnen? Ich kenn mich mit dateisystemen ned so gut aus aber unter fat können bei abstürzen noch geöffnete dateien (zumindest wenn sie für schreibzugriff geöffnet sind) hinterher weg bzw kaputt sein, daher kam früher nach nem absturz immer erstmal scandisk. (könnte natürlich auch anders sein, hab ich glaub ich irgendwo mal nur so gelesen, dreael weiß das bestimmt ) natürlich kannst du auch faul sein und einfach immer random nehmen, aber wenn man eben wirklich nur liest oder nur schreibt ist das irgendwie sinnlos.. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 03.06.2006, 21:56 Titel: |
|
|
@infection: random hab ich nie benutzt... vor allem weil jeder block gleich groß sein muss... was ich mit "binärie" unterbinde
achja, das mit den freefiles kann ich türlich auch noch machen  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 13.02.2007, 21:01 Titel: |
|
|
Sorry, ich weiß das der Thread echt alt ist aber:
Das ganze hab ich mal nach QB übersetzt :
Code: |
DECLARE FUNCTION HoleWert$ (Dateinummer AS INTEGER, BlockID AS STRING)
KEY(1) ON
ON KEY(1) GOSUB ende
SCREEN 0
DIM ID AS STRING * 6
DIM BlockLaenge AS INTEGER
DIM Block AS STRING
'Fiktive Spielvariablen
DIM Gold 'AS INTEGER
DIM KartenName AS STRING
Gold% = RND * 2000
Kartename$ = "Aventurien.map"
OPEN "test.Bin" FOR BINARY AS #1
ID = "GoldSt"
Block$ = LTRIM$(RTRIM$(STR$(Gold%))))
BlockLaenge% = LEN(Block$)
PUT #1, , ID$
PUT #1, , BlockLaenge%
PUT #1, , Block$
ID$ = "Karte " 'immer auf eine laenge von sechs zeichen achten ...
Block$ = KartenName$
BlockLaenge% = LEN(Block$)
PUT #1, , ID$
PUT #1, , BlockLaenge%
PUT #1, , Block$
CLOSE #1
DO: LOOP UNTIL INKEY$ <> ""
OPEN "test.Bin" FOR BINARY AS #1
Gold% = VAL(HoleWert(1, "GoldSt"))
Karte$ = HoleWert(1, "Karte ")
PRINT Gold%
PRINT Karte$
CLOSE #1
ende:
END
FUNCTION HoleWert$ (Dateinummer AS INTEGER, BlockID AS STRING)
DIM ID AS STRING * 6
DIM BlockLaenge AS INTEGER
DIM Block AS STRING
DO
GET #Dateinummer%, , ID$
GET #Dateinummer%, , BlockLaenge%
Block$ = STRING$(BlockLaenge%, CHR$(0)) 'koennte man auch mit SPACE$(BlockLaenge%) loesen
GET #Dateinummer%, , Block$
IF LTRIM$(RTRIM$(UCASE$(ID$))) = LTRIM$(RTRIM$(UCASE$(BlockID$))) THEN HoleWert$ = Block: EXIT FUNCTION
LOOP UNTIL EOF(Dateinummer%)
HoleWert$ = ""
END FUNCTION
|
_________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 13.02.2007, 21:13 Titel: |
|
|
Ja okay, hier is die Übersetzung vlt am besten aufgehoben... Danke nochmals  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
|