Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Ein File-Tutorial :)

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 02.06.2006, 21:11    Titel: Ein File-Tutorial :) Antworten mit Zitat

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 lächeln

Das Tutorial!

ich freu mich auf lob/kritik/etc! lächeln
_________________
» 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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 02.06.2006, 21:44    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 02.06.2006, 22:00    Titel: Antworten mit Zitat

ja, echt geniales tut lachen
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Dominik



Anmeldungsdatum: 22.12.2004
Beiträge: 172

BeitragVerfasst am: 02.06.2006, 23:42    Titel: Antworten mit Zitat

Hallo,

ich muss sagen, dass ich beide Tuts von euch gut finde.
Also: Großes Lob an euch beide. lächeln
Vielleicht sollte ich auch mal ein Tut schreiben, nur über was?!.... Kopf schütteln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 03.06.2006, 09:49    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 03.06.2006, 10:51    Titel: Antworten mit Zitat

@Jojo
Gute Idee, dieses Problem zu Thematisieren.
Daumen rauf!

@ytwinky
lachen
Das kann man Genial Gebrauchen, wenn Noops wieder mal nicht die Suchfunktion finden lachen .
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 03.06.2006, 12:39    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Infection 93
gesperrt


Anmeldungsdatum: 11.03.2006
Beiträge: 377
Wohnort: Egal, dort wo ein PC ist.

BeitragVerfasst am: 03.06.2006, 13:02    Titel: Antworten mit Zitat

@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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 03.06.2006, 13:07    Titel: Antworten mit Zitat

@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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 03.06.2006, 16:25    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Infection 93
gesperrt


Anmeldungsdatum: 11.03.2006
Beiträge: 377
Wohnort: Egal, dort wo ein PC ist.

BeitragVerfasst am: 03.06.2006, 16:30    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 03.06.2006, 16:34    Titel: Antworten mit Zitat

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 happy) 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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 03.06.2006, 21:56    Titel: Antworten mit Zitat

@infection: random hab ich nie benutzt... vor allem weil jeder block gleich groß sein muss... was ich mit "binärie" unterbinde zwinkern

achja, das mit den freefiles kann ich türlich auch noch machen lächeln
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 13.02.2007, 21:01    Titel: Antworten mit Zitat

Sorry, ich weiß das der Thread echt alt ist aber:
Das ganze hab ich mal nach QB übersetzt grinsen :
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 13.02.2007, 21:13    Titel: Antworten mit Zitat

Ja okay, hier is die Übersetzung vlt am besten aufgehoben... Danke nochmals zwinkern
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz