Mit WriteLine - Neue Zeile?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

GearTechDE

ehemals 'KillerJo96'

Betreff: Mit WriteLine - Neue Zeile?

BeitragMo, Jun 27, 2011 13:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
kurz und knapp, ich möchte gerne wissen, wie ich mit WriteLine in einer neuen Zeile von einem Textdokument welches vorher mit readfile geladen wurde, weiter schreiben kann.

Lg Killerjo96
Mit freundlichen Grüßen: GearTechDE

Xeres

Moderator

BeitragMo, Jun 27, 2011 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Entweder zu benutzt SeekFile oder du stellst sicher, das alles was in die Zeile gehört, auch mit einem mal geschrieben wird.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

bjh

BeitragMo, Jun 27, 2011 13:41
Antworten mit Zitat
Benutzer-Profile anzeigen
um schreiben zu können, musst du die datei immer mit OpenFile öffnen.

bei ReadFile kannst du nur lesen.

ich hoffe ich konnte helfen Wink

GearTechDE

ehemals 'KillerJo96'

BeitragMo, Jun 27, 2011 13:57
Antworten mit Zitat
Benutzer-Profile anzeigen
@Xeres ... danke seekfile werde ich mir mal angucken. ich muss es nämlich öfters editieren können

@bjh ja weiss ich sorry, habe ich eben übersehen...

danke ihr beiden
Mit freundlichen Grüßen: GearTechDE

Midimaster

BeitragMo, Jun 27, 2011 13:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Das geht aber nur, wenn die neue Zeile wirklich an das Ende der Datei kommen soll. Er verstellt mit WriteLine den FilePointer so, dass nachfolgende Zeilen verloren gehen, oder?

mein Königsweg ist hier immer:

Ganze Datei reinladen...
Text ändern/anfügen...
ganze Datei wieder rausspeichern...

Xeres

Moderator

BeitragMo, Jun 27, 2011 14:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Midimaster hat recht - wenn man nicht präzise weiß, an welcher Stelle man schreiben sollte (z.B. wenn man mit Daten-Blöcken bekannter Größe arbeitet), ist es sinnvoll, alles zu laden und wieder komplett zu speichern - die Dateibefehle fügen nichts ein, sie überschreiben immer.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

GearTechDE

ehemals 'KillerJo96'

BeitragMo, Jun 27, 2011 14:47
Antworten mit Zitat
Benutzer-Profile anzeigen
naja seekfile ist dann doch nicht passend glaube ich. ich wollte, das das textdokument den Namen des Players + .txt hat und der Inhalt ist die erste Zeile X Position. 2te. Y Position. und 3. Z Position. da diese dann das halt immer beim speichern editieren soll, muss ich halt neue Zeilen wissen oder?

naja was ich noch wissen wollte, wie ich einen Ordner auslese. also in einem Ordner der z.B. Players heißt, sind dann die
.txt Dokumente mit den Namen... sodass mein geschriebener Server immer ausliest, wer überhaupt existiert... wäre das möglich?
Mit freundlichen Grüßen: GearTechDE
 

PhillipK

BeitragMo, Jun 27, 2011 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, wenn es wirklich nur die drei werte sind, dann sollte Einlesen + ändern + speichern kein problem sein.
Solange du kein Roman um einen Punkt erweiterst, geht das doch Zack Wink

Es bietet sich allerdings an, die daten im Speicher zu halten und immer nur den geänderten Batzen zu speichern. 3x Datei öffnen, auslesen und speichern ist dann doch ein merkbarer unterschied zu 1x öffnen.

Zu deinem Ordner auslesen:

Ich verweise dich einfach mal ganz freundlich HIER hin Smile
Da ich nur die Blitzmax umsetzung kenne, habe ich einfach fix die Hilfe aufgeschlagen. Und siehe da? Sogar ein Beispiel dabei - das sollte dir helfen Smile
Allerdings macht mich das hier stutzig:
BlitzBasic: [AUSKLAPPEN]
 If FileType("C:\" + Datei$) = 2 Then

in blitzmax kann es vorkommen, das man ".." bzw "." als Dateinamen zurück kriegt. Du solltest evlt prüfen, ob der hintere teil des Strings ".txt" ist - nur so ne idee.

Aber sag mal, warum willst du die daten in eine TXT schreiben?
Da du direkt die Zeile ändern möchtest, klingts für mich als solle dies mehrmals die Sekunde passieren und da frag ich mich, warum das in eine TXT geht Smile

Xeres

Moderator

BeitragMo, Jun 27, 2011 15:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstell' einfach mit WriteFile die passende Datei (überschreibt damit die alte) und speicher die Koordinaten - dazu musst du keine Position wissen oder ändern. Nur die Reihenfolge macht dann was aus.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

GearTechDE

ehemals 'KillerJo96'

BeitragMo, Jun 27, 2011 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok Danke Xeres.

Aber wie löse ich das mit dem Ordner auslesen??

Ist sowas überhaupt möglich.??

Naja danke für die vielen Antworten.

Lg Killerjo96
Mit freundlichen Grüßen: GearTechDE

Xeres

Moderator

BeitragMo, Jun 27, 2011 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Klar - ReadDir wie PhillipK schon schrieb. Die beiden "."/".." Verzeichnisse einfach überlesen und beim leeren String aufhören.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

GearTechDE

ehemals 'KillerJo96'

BeitragMo, Jun 27, 2011 15:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm das mit den Punkten und slashs hab ich noch nicht so verstanden, aber naja ich werd einfach dran rumprobieren. - learning by doing xD

Danke vielen Dank

Lg Killerjo96
Mit freundlichen Grüßen: GearTechDE

aMul

Sieger des Minimalist Compo 01/13

BeitragMo, Jun 27, 2011 16:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist relativ einfach:
".." bedeutet "übergeordnetes Verzeichnis".
Liegt dein Programm zum Beispiel in "C:\Programme\CoolesProgram\", dann bedeutet "..\bild.bmp" "C:\Programme\bild.bmp"
Genauso gehen auch Pfade wie "C:\Windows\..\Windows\..\Windows\system32\..\fonts\" = "C:\Windows\fonts\".
(wenig sinniger demonstrations-Fall)

"." hingegen bedeutet "dieses Verzeichnis".
Also im Beispiel oben ist ".\bild.bmp" das selbe wie "C:\Programme\CoolesProgram\bild.bmp".
Und man kann natürlich Sachen machen wie "C:\.\.\.\.\Windows\.\" = "C:\Windows\".
(wieder unsinnig)
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver

Ana

BeitragMo, Jun 27, 2011 16:31
Antworten mit Zitat
Benutzer-Profile anzeigen
und zu guter Letzt bist du auch nicht auf .txt eingeschränkt.

Du könntest z.b dann Spieler1.player oder Spieler1.inventar, was dann einfach aussagekräftiger ist, oder .ana was mich dann freut Wink verwenden, da die Endung nur interessant ist, wenn dein Betriebssystem wissen möchte wie die Datei geöffnet werden soll und das kann man ja einmalig manuell sagen mit Editor und dann weiß es das auch.

Du kannst dann die Endung auch geschickt nutzen um festzustellen wie viele Datein es Types da sind oder irgendwas damit halt tun.

BlitzBasic: [AUSKLAPPEN]
Local endung:String = ".ana"
Local Counter:Int = 0
Local dir:Int = ReadDir(pfad)
Local t:String = NextFile(dir)
While t <> ""
If Right(t,Len(endung)) = endung Then Counter = Counter + 1
t = NextFile(dir)
Wend
Don't only practice your art,
but force your way into its secrets,
for it and knowledge
can raise human to divine

GearTechDE

ehemals 'KillerJo96'

BeitragMo, Jun 27, 2011 17:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, muss ich mir nochmal in Ruhe alles durchlesen.

Ich blick da nämlich erst durch wenn ich Zeit und Verstand habe genau wie bei UDP. Da ich in letzter Zeit eher weniger Zeit dafür habe, fällt es mir schwert meine Ziele umzusetzen. Mit UDP habe ich richtige Probleme.
Naja sollte für den Thread hier jetzt erstmal unwichtig sein.


Ich danke euch allen für die super Hilfe.

Mit freundlichen Grüßen

Killerjo96
Mit freundlichen Grüßen: GearTechDE

Midimaster

BeitragDi, Jun 28, 2011 0:36
Antworten mit Zitat
Benutzer-Profile anzeigen
für diesen Zweck könnte auch eine "INI-Datei" bestens geeignet sein. Hierzu gibt es einige fertige Beispiele im Codearchiv, aber auch ein Tutorial von mir: https://www.blitzforum.de/foru...hp?t=33651

Damit musst Du dann gar nicht mehrere Dateien anlegen, sondern kannst alle Spieler und auch sonstige Settings in einer einzigen Datei gemeinsam verwalten. Der Zugriff ist kinderleicht und die Datei lässt sich auch dann beliebig erweitern auch wenn sie schon anders angelegt war.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group