Programmieren - alles kontrollieren 4.937 Themen, 20.655 Beiträge

Datei auslesen

(Anonym) / 2 Antworten / Flachansicht Nickles

Hallo zusammen,

ich möchte in VB in einer Datei ein paar Bytes umschreiben:
Die Datei habe ich mit "Open fileName.Path For Binary Access Read Write As nr" geöffnet.
Mit "Get nr, position, str" kann ich Bytes auslesen (str hat feste Länge). Mit "Put nr, position "neuer Text"" schreibe ich neuen Text in die Datei.

Meine Fragen: Ist das grundsätzlich schonmal richtig?
Geht das evtl einfacher?

!!! Was passiert, wenn ich zB an Position 4 "Text" schreibe, werden die alten Daten überschrieben oder womöglich weitergeschoben?
Wie kann ich (am Ende einer Datei) Bytes löschen, die Datei also kleiner machen?

Danke fürs Antworten

bei Antwort benachrichtigen
(Anonym) Nachtrag zu: „Datei auslesen“
Optionen

Hallo
liest sich ganz gut.
Ich würde allerdings die Datei (wenn sie nicht sehr groß ist) in ein Byte-Array einlesen

dim d_size as long (die Größe der Datei)
dim wert(d_size) as byte

dann einlesen

jetzt kannst Du in Ruhe die Bytes in Deiner Datei bearbeiten, auch am Ende Bytes löschen und dann alles zurückschreiben.

Vorteil : die Datei wird "offline" manipuliert, das Herumfuhrwerekn in geöffneten Dateien kann schiefgehen.
außerdem kannst Du mit der Byte-Variable sicher sein, daß alle Werte richtig ausgelesen werden, bei Str(1) könnte es lt. Microsoft Probleme geben.

Sollte die Datei aber zu groß zum vernünftigen einlesen sein , kann man das Prinzip mit Hilfe eines Offsets lösen, indem man zuerst die Anfangsposition (=Offset) berechnet, die Datei öffnet und byteweise bsi zum Offset liest.Das verschiebt den internen Zeiger auf die gewünschte Position , danach kann man wieder ein Byte-array einlesen.
Analog gehts mit dem Schreiben.

Keine Angst, es wird nichts "verschoben",das wäre (physikalisch) ziemlich aufwendig, es wird überschrieben.

MfG
Rainer

bei Antwort benachrichtigen