Einzelnen Beitrag anzeigen

Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#4

Re: Wie funktioniert BockRead/Write?

  Alt 10. Nov 2004, 12:59
Zitat von PAX:
h ist nun das Array in deinem Beispiel.
Ne, das ist g - ist jetzt oben gefixt. Du kannst einen String aber als dynamisches Array verstehen, wobei das erste Zeichen bei h[1] steht.

Zitat von PAX:
Und bei der Blockgröße, wenn ich dann immer dafür die Länge der aktuell reinzuschreibenden Variablen angebe, werden dann die einzelnen Blöcke unterschiedlich groß in der Datei?
Also es gibt keine "Blöcke" in Dateien wie du dir das jetzt vielleichst vorstellst. Er schreibt einfach die angegebene Anzahl der Bytes des Inhaltes der Variable in die Datei.

Zitat von PAX:
Wie lese ich das dann wieder vernünftig ein, wenn ich nicht weiß, wie groß die dann immer sind.
Da gibt es mehrere Möglichkeiten. Du könntest vor jedem String die Länge speichern, oder du führst ein Trennzeichen ein und ließt immer solange bis das erreicht wird. Oder du legst fest das die Einträge immer gleich groß sind. Das hängt jetzt davon ab was du speichern willst. Wenn es einfach nur ein paar Strings sind bietet sich vielleicht auch eher ne einfach Textdatei an, wo du die Strings zeilenweise reinspeicherst.

Zitat von PAX:
Aus dem ersten Beispiel mit 'Muuh' leite ich ab, dass die Blockgröße wirklich in Byte angegeben wird (hier: 4). Wenn ich bei dieser Methode nun 3 angegeben hätte, würde dann zum Schluss in der Datei nur 'Muu' stehen?
Ja, es würde dann "Muh" drinne stehen.

Zitat von PAX:
Und dieses PChar(), zerlegt es den String dann einfach nur? Und schreibt er die Teile dann alle in Extrablöcke?
Das PChar (~ Pointer of Char) gibt den Zeiger auf das erste Zeichen im String zurück. Dieses kleine^ dahinter derefenziert das wieder. Das ist der gleiche Effekt wie mit dem h[1], es gilt also:

Delphi-Quellcode:
h:='Muhh';

h[1] = 'M';
PChar(h)^ = 'M';

// bzw. die Adressen sind auch gleich:

@h[1] = PChar(h);
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat