AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Bedeutung von "RecSize" und der Größe des "array of Byt
Thema durchsuchen
Ansicht
Themen-Optionen

Bedeutung von "RecSize" und der Größe des "array of Byt

Ein Thema von Nogge · begonnen am 11. Jul 2005 · letzter Beitrag vom 11. Jul 2005
Antwort Antwort
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#1

Bedeutung von "RecSize" und der Größe des "ar

  Alt 11. Jul 2005, 14:00
Hallo Community,
Ich habe mich ja schon durch die Delphi-Hilfe gelesen und im Forum gesucht, doch eine einleuchtende Erklärung, wie die RecSize (von Reset und ReWrite) und die Größe des array of Byte zusammenspielen, habe ich nicht verstanden. Hat jemand die Zeit, mir eine kurze Nachhilfe in Reset, ReWrite, BlockRead und BlockWrite zu geben?^^

Wäre euch zu tiefstem Dank verpflichtet^^
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Bedeutung von "RecSize" und der Größe des &quo

  Alt 11. Jul 2005, 14:42
Wir reden hier über untypisierte Dateien. Du gibst beim Reset als zweiten Parameter noch eine BlockSize an - die Anzahl Bytes, die von BlockRead() als ein Block angesehen wird. Vielleicht wird es so klarer:

Delphi-Quellcode:
const
  BlockSize = 1; // mit BlockSize = 1 kannst du beliebige Dateien verarbeiten
  BlockCount = 1024; // Anzahl der Blöcke im Puffer
var
  Buffer: array [1..BlockSize*BlockCount] of Byte;
  iRead, iWritten: integer;
  f: file;
begin
  AssignFile(f, ParamStr(1));
  Reset(f, BlockSize);
  repeat
    BlockRead(f, Buffer, BlockCount, iRead);
    if iRead > 0 then begin
      // ...
    end;
  until iRead < BlockCount;
  CloseFile(f);
end;
Das gleiche gilt für die Ausgabe mit Rewrite() und BlockWrite().

marabu
  Mit Zitat antworten Zitat
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#3

Re: Bedeutung von "RecSize" und der Größe des &

  Alt 11. Jul 2005, 16:30
Zitat:
BlockSize = 1; // mit BlockSize = 1 kannst du beliebige Dateien verarbeiten
Was würde denn passieren, wenn ich z.B. den Wert für BlockSize erhöhe?

Zitat:
BlockCount = 1024; // Anzahl der Blöcke im Puffer
Was ist denn in den verschiedenen Blöcken enthalten?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Bedeutung von "RecSize" und der Größe des &

  Alt 11. Jul 2005, 16:34
Wenn du die BlockSize auf n setzt, dann bekommst du Lesefehler bei Dateien deren Größe nicht ein ganzzahliges Vielfaches von n ist.

In den Blöcken ist nichts enthalten, solange du nicht rein interpretierst.

marabu
  Mit Zitat antworten Zitat
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#5

Re: Bedeutung von "RecSize" und der Größe des &

  Alt 11. Jul 2005, 16:50
Ok, vielen Dank schon mal für BlockSize.
Aber noch mal zu Buffer: array [1..BlockSize*BlockCount] of Byte;:
Wieso muss die Anzahl an Böcken solch eine "große" Zahl sein, d.h. wieso gerade die Zahl 1024 ? Außerdem, wieso wird der Buffer als ein array of BYTE deklariert und nicht Word oder Integer?
Sry für das ständige Nachhaken, aber ich möchte die Procedures nun mal komplett verstehen^^
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Bedeutung von "RecSize" und der Größe des &

  Alt 11. Jul 2005, 17:32
Deine Festplatte ist ein block device, Daten werden in Blöcken (Vielfache von 512 Byte) transferiert. Durch eine angemessene Größe deines Buffers sorgst du für ein ausgewogenes Verhältnis zwischen Speicherverknappung und Verwaltungsaufwand. Wenn die Daten für deine Anwendung eine bestimmte Struktur haben, dann wirst du sinnigerweise gleich mit einem typisierten file (file of TMyRecord, file of word, ...) arbeiten.

Der Basistyp Byte bietet sich dann an, wenn deine Datei keine uniforme Struktur hat. Bei einem resource file z.B. hast du in der Regel dicht gepackt Objekte unterschiedlicher Größe mit expliziter oder impliziter Größenangabe. Du liest dann die Kennung ein, leitest die Größe in Byte ab und liest dann genau die Anzahl an Bytes nach, die du gerade bestimmt hast.

Untypisierte Dateien werden heute mit Streams bearbeitet. Borland rät von der weiteren Verwendung der files ab. Files stammen vom Konzept her aus der Frühzeit der Datenverarbeitung, Streams bieten eine höhere Ebene der Abstraktion und sind sauberer implementiert.

marabu
  Mit Zitat antworten Zitat
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#7

Re: Bedeutung von "RecSize" und der Größe des &

  Alt 11. Jul 2005, 17:49
Vielen Dank für die ausformulierte Erklärung, marabu!
Ich habe keine weiteren Fragen :-)
  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:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz