Der Fehler muss woanders liegen, denn das hier funktioniert:
Delphi-Quellcode:
Var
dat: File;
lokal: integer;
Num : Array of byte;
Begin
AssignFile(dat, 'C:\test1.dat');
rewrite(dat);
SEtLength (Num,128);
For lokal := 0 To 127 Do
Blockwrite(dat, num[lokal], 1);
closefile(dat);
End;
Zitat von
himitsu:
ich würde dieses Verhalten ganz einfach als Fehler in Delphi ansehn, da hier 1 logischer gewesen wäre.
Es ist nicht gleich ein Fehler in Delphi, nur weil Du es als unlogisch ansiehst. Das
BlockWrite ist älter als Du. Die 128 standen schon in der ersten Pascalversion, mit der ich gearbeitet habe (UCSD Pascal 1.0). Ob das in der Wirth'schen DEfinition auch schon enthalten ist, weiss ich nicht.
Soweit ich das beurteilen kann, stammen die 128 Bytes von der Sektorgröße damaliger Speicher (Tontafeln oder ?
). Das waren nun mal 'Blöcke' und mit diesem Superbefehl konnte man direkt auf die Tontafeln a.k.a. Floppies/Bänder schreiben! Also *hardwarenah* und supersauschnell!
Ich glaube, der Fragesteller hat uns noch nicht Alles verraten.
@snow: Reduziere dein Projekt mal auf die relevanten und fehlerhaften Zeilen und stelle es hier rein.