Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

01.05.2011, 22:19

Zeile in Datei ändern

Guten Abend,

ich wollte mal fragen, ob man in einer (txt) Datei auch eine einzelne Zeile ändern kann, in einer Datei, die bereits beschrieben ist.
muss man dafür wirklich immer das gesammte file einlesen, dann die änderung vornehmen und danach die datei komplett überschreiben?

oder kann man auch einfach die datei in der zeile 3 z.B. beschreiben, den rest aber unangetastet lassen?

Liebe Grüße,
Ombalat

2

01.05.2011, 23:14

Hallo,

schau dir das hier an: fsetpos

Damit solltest du in der Lage sein an eine bestimmte Stelle (in eine bestimmte Zeile) der Datei zu springen und von dort dann eine Zeile auszulesen bzw. zu überschreiben.

Gruß
SaRu_

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

02.05.2011, 06:53

Nein, ist er nicht.
Denn angenommen die neue Zeile ist länger oder kürzer, dann hat er ein Problem.
Es muss die gesamte Datei gelesen, geändert und dann wieder geschrieben werden.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

02.05.2011, 11:54

Eine Datei ist ein Stream, man kann nicht einfach mitten drin was rausschneiden oder einfügen. Aber man muss natürlich auch nicht unbedingt immer die ganze Datei komplett in den Speicher lesen.

5

02.05.2011, 17:42

Eine Datei ist ein Stream, man kann nicht einfach mitten drin was rausschneiden oder einfügen. Aber man muss natürlich auch nicht unbedingt immer die ganze Datei komplett in den Speicher lesen.

Ich nehme mal an, du spielst auf Temporäre Datein an?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

02.05.2011, 19:03

Öh nicht unbedingt. Man kann die Bytes einer Datei doch auch einfach nach vorne oder hinten kopieren oder was auch immer. Muss man eben nur so programmieren ;)

7

02.05.2011, 19:20

Hmmm ... und wie könnte sowas aussehen?
Ich kann mir darunten nicht wirklich was vorstellen, habe bis jetzt hauptsacklich mit fstream's gearbeitet.
Soll ich mir dazu die fsetpos anschauen und mit FILE arbeiten oder hättest du ein beispiel für mich :) ?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

02.05.2011, 19:30

Ein fstream hat einen put und einen get pointer. Der put Pointer ist die Stelle an die geschrieben wird, der get Pointer die Stelle von der gelesen wird. Du kannst nun z.B. einfach den get Pointer 100 Byte weiter hinten als den put Pointer platzieren und so Bytes von weiter hinten lesen und 100 Byte weiter vorne wieder hinschreiben. Wenn du das für die ganze Datei ab einer gewissen Stelle machst hast du effektiv alles um 100 Byte nach vorne verschoben. Leider gibt es keine Standardfunktion die es erlaubt das ganze File dann noch um 100 Bytes zu verkürzen, aber es gibt plattformspezifische Wege um das zu erledigen.

9

02.05.2011, 19:59

Vielen Dankt für die Info!
Werde mich damit spielen :)
Wenn ichs richtig rausgefunden habe fragt man mit tellp die Position der put pointers ab und mit seekp setzt man die position von diesem. (Für i/o - fstream ^^)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

02.05.2011, 20:01

Wenn ichs richtig rausgefunden habe fragt man mit tellp die Position der put pointers ab und mit seekp setzt man die position von diesem.

exakt

Werbeanzeige