Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi blockwrite sehr sehr große datei. (https://www.delphipraxis.net/107436-blockwrite-sehr-sehr-grosse-datei.html)

alzaimar 28. Jan 2008 07:51

Re: blockwrite sehr sehr große datei.
 
Zitat:

Zitat von himitsu
Zitat:

Zitat von alzaimar
Der optionale dritte Parameter gibt die Anzahl der *Records* an, die geschrieben werden.

Größe eines Records :zwinker:

Anzahl :stupid: RTM.
Zitat:

Zitat von Die Delphi OH
procedure BlockWrite(var f: File; var Buf; Count: Integer [; var AmtTransferred: Integer]);
Description
BlockWrite writes Count or fewer records to the file F from memory,...

Das es aus heutiger Sicht merkwürdig ist, keine Frage. Aber der Befehl stammt nun mal aus dem Mittelalter, was soll man machen.

himitsu 28. Jan 2008 07:55

Re: blockwrite sehr sehr große datei.
 
ups ja ... BlockWrite :wall:
der optionale Zweite bei Reset/Rewrite war die Recordgröße :oops:

taaktaak 28. Jan 2008 08:33

Re: blockwrite sehr sehr große datei.
 
Moin, Moin.

Interessant, was man in diesem Thread so alles über BlockWrite erfährt - obwohl ich es seit 25 Jahren verwende. Allerdings (natürlich) nicht in der vorgestellten Anwendungssituation; hier wäre eine typisierte Datei sicherlich angebrachter.

Eines fällt mir dabei auf: Es fehlt in den Beispielen die obligatorische Fehlerprüfung mit IOresult! Wenn schon Steinzeitprogrammierung, dann bitte reset/rewrite mit {$I-} und {$I+} "einrahmen" - das haben wir doch wohl so gelernt und es gehört zum richtigen "Steinzeit-Feeling" unbedingt dazu, oder etwa nicht? :roll:

Gruß Ralph

alzaimar 28. Jan 2008 08:37

Re: blockwrite sehr sehr große datei.
 
Quatsch :mrgreen: Der wahre Programmierer schert sich einen Dreck um korrekte Fehlerbehandlung! Profis programmieren ohne Netz und doppelten Boden und lassen die Anwendung gegen die Wand fahren. Nur so bekommt man ohne Mehraufwand aussagekräftige Fehlermeldungen, die nur der Programmierer versteht. Das verschafft Respekt und Ansehen! :freak:

taaktaak 28. Jan 2008 08:45

Re: blockwrite sehr sehr große datei.
 
:hello: na, ist was dran, in der Steinzeit hat man das alles nicht so eng gesehen und die Anwender waren auch etwas robuster und schmerzunempfindlicher ... :stupid:

snow 28. Jan 2008 13:10

Re: blockwrite sehr sehr große datei.
 
Delphi-Quellcode:
var
  Form1: TForm1;
  Num : Array of byte;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var dat : file;
lokal : integer;
begin
AssignFile(dat,'I:\delphi\testContainer\test1.dat');
rewrite(dat);
Blockwrite(dat,num[0],1);
closefile(dat);
end;

procedure TForm1.FormCreate(Sender: TObject);
var lokal : integer;
begin
setlength(num,128);
for lokal:=0 to 127 do begin
num[lokal]:=lokal;
end;
end;
so klappt es.

ich kann nun den gesammten array inhalt speichern.

naja anscheinend muss ich bei blockwrite immer 128 byte schreiben. Dies wäre natürlich verschwendung. via move in ein 128byte langes array zu schreiben. wenn ich nun z.b einen int32 10 bytes und einen 6 stelligen string(7bytes) abspeichern will,

schiebe ich zuerst den integer in array[0..3],
dann die 10 bytes in array[4..13],
dann den string in array[14..20]

im inhaltsverzeichniss der datei gebe ich dann nicht die blocknummer sondern die byte nummer an.

Diese wird durch 128 geteilt und der rest sollte die bytenummer im block angeben.

ich mach mich mal ran

gruß snow

himitsu 28. Jan 2008 14:46

Re: blockwrite sehr sehr große datei.
 
Siehe mein Test:

du muß nur beim Öffnen der Datei eine Größe oder einen passenden Typ angeben:
Delphi-Quellcode:
var dat : File of Byte;
Rewrite(dat);

// oder

var dat : file;
Rewrite(dat, 1);

alzaimar 29. Jan 2008 05:58

Re: blockwrite sehr sehr große datei.
 
@snow: Verwende doch Streams. BlockRead/BlockWrite sind veraltet (stand vorher schon irgendwo). Wirklich, halte Dich nicht mit diesen ollen Kamellen auf. Du musst Dich doch eh einarbeiten, da wäre es doch sinnvoll, es gleich mit den richtigen Werkzeugen zu tun. Und das sind nun mal Streams.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 Uhr.
Seite 2 von 2     12   

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