Datei mit Strings und SeekFile(Erledigt)
Übersicht

Andy SBetreff: Datei mit Strings und SeekFile(Erledigt) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Leute,
habe ein kleines Problem, ich möchte in mein Game(Universum) Nachrichten an zeigen! Ich möchte diese Nachrichten(Strings) in eine Datei speichern, wie das geht ist mir klar! Nun zu meinem Problem, angenoman ich möchte die zweite Nachricht laden, aber wie mache ich das, da die String Var. hat eine undefinierte länge hat. Bei SeekFile kann man ja nur Bytes angeben? Die Nachrichten sollen so außen: 1. Zeile Titel 2. Zeile Verfasser 3. bis xx. Zeilen der Text . . . Andy S |
||
- Zuletzt bearbeitet von Andy S am Di, Apr 06, 2004 8:04, insgesamt einmal bearbeitet
onlyRead |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Beispiel:
Text-File: Code: [AUSKLAPPEN] Anzahl der Texte (hier 2) Text 1 Titel Text 1 Text Text 2 Titel Text 2 Text Reader: Code: [AUSKLAPPEN] file = loadfile( "textfile.txt" ) anzahl = readline( file ) dim texte( anzahl, 1 ) ; 0 = titel, 1 = text blubb = readline( file ) ;weil leerzeile for number = 1 to anzahl texte( number, 0 ) = Readline( file ) texte( number, 1 ) = readline( file ) blubb = readline( file ) next Kann sein das da nen paar fehler drin sind, aber im Grunde genommen musst du die Daten nur mit einer Schleife auslesen ![]() Edit: Wenn du mehrere Zeilen in einem Text haben willst musst du das dim einfach vergrößern und vor den verschiednene texten einfach eine variable setzen die die anzahl der zeilen im text enthäkt |
||
Andy S |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich glaube ich habe mich falsch ausgedruckt, ich will nicht alle Texte Laden sondern aus sagen wir 20 Nachrichten, die 14. Nachricht!
Andy |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
du musst solange lesen bis deine nachricht kommt - es sei denn, deine nachrichten habe fixe länge.... (dann kannst du seekfile nehmen) | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
onlyRead |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Andy S hat Folgendes geschrieben: Ich glaube ich habe mich falsch ausgedruckt, ich will nicht alle Texte Laden sondern aus sagen wir 20 Nachrichten, die 14. Nachricht!
Andy Naja, sobal alle Daten im Array gelandet sind ( Text( Nummer ) ), ist das ja nun schon gelöst. Wenn man beispielweise die 14. Nachricht ausgeben will sagt man einfach Code: [AUSKLAPPEN] print Text$( 14, 0 ) ;Titel For x = 1 To Text$( 14, 1 ) ;, 1 enthält die Anzahl der Zeilen print Text$( 14, 1 + x ) ;Die einzelnen Zeilen ausgeben Next Edit: Ach mist, meinst du das wenn eine Nachricht ausgegebn wird man anhand des Textes feststellen kann was das für ne numer ist oder was? |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube Du wilst bei jeder auszugebenden Nachricht in der Datei rumhantieren, halte ich aber nicht für eine gute Lösung. Machs wie schon gesagt mit Arrays, also alles laden und im Array speichern. Ist das einfachste.
Oder meinst Du nur z.B. 14. Nachricht? Dann gehts so: Code: [AUSKLAPPEN] For a=1 To 14
nachricht$=ReadString( filehandle ) Next Schwups, schon ist in nachricht$ die 14. gespeichert ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde Dir empfehlen, eine Art "Stopzeichen" zu definieren, welches du alleine in einer Zeile speicherst, zum Beispiel "*". Dann kannst Du dich durch dein File hangeln (von * zu *) und so die Nachrichten auszählen.
Zeitsparende Alternative (aber dafür aufwändiger v.a. bei Änderungen) wäre es, in einem Arrey die ZeilenNummer der Titel der einzelnen Nachrichten zu speichern. Code: [AUSKLAPPEN] ;Beispiel zu 1.: nummer_gewuenscht=4 ;nur als Bsp. repeat text$=readline(dateihandle) if text$="*" then nummer_aktuell=nummer_aktuell+1 titel_marker=1 else if nummer_aktuell=nummer_gewuenscht then if titel_marker then text 0,0,"Titel: "+text$ else text 0,15*nummer_aktuell,text$ end if titel_marker=0 end if end if until nummer_aktuell=nummer_gewuenscht nummer_aktuell=0 ; alles schön aufgeräumt und weiter im text ... ; Achtung: eine Prüfung auf die maximale Anzahl der Nachrichten fehlt noch. Code: [AUSKLAPPEN] ;Bsp. zu 2.
Dim Anzahl_news(9) ;10 verschiedene News vorhanden restore newsfeld for i =0 to 9 read anzahl_news(i) next ;hier dann auslesen der Datei mittels readline sooft bis die Startzeile erreicht ist. ; Beginn der nächsten Nachricht markiert Ende der Vorherigen. Bei der letzten nachricht: EoF .newsfeld data 0,4,9,15,17,23,28,32,35,42 ;hier stehen die startZeilen der News |
||
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 |
Andy S |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Super Ideen Leute, aber ich glaube ich mache doch pro Nachricht eine Datei(lässt sich besser händeln).
Trotzdem Danke Leute für die Ideen. Gruß Andy S |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group