AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Wie funktioniert BlockRead/Write?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie funktioniert BlockRead/Write?

Ein Thema von PAX · begonnen am 9. Nov 2004 · letzter Beitrag vom 11. Nov 2004
Antwort Antwort
Benutzerbild von fiasko
fiasko

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

Re: Wie funktioniert BockRead/Write?

  Alt 10. Nov 2004, 11: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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz