I have two different questions related to this, but I figured the best thing to do at the current time is to just ask them.

Here's a basic example:[pascal]type
TEnum = (enum1,enum2,enum3,enum4,enum5);
MyRecord = record
s: string[10];
n: word;
e: TEnum;
end;

var
MyRecords: array of MyRecord;
L,I: longword;
F: TFileStream;

begin
f := TFileStream.Create('myfile.dat');

Stream.Read(l,Sizeof(l));
SetLength(MyRecords,l);
for i := 0 to l-1 do
Stream.Read(MyRecords[i],Sizeof(MyRecords[i]));
end;[/pascal]

Now, can I shortcut by skipping the for-loop? Would the 3bit enumerated type trip me up, or just add 5 padding bits? I know the for-loop method works, but I don't know how the following hypothetical bulk array loading would work:
[pascal] Stream.Read(l,Sizeof(l));
SetLength(MyRecords,l);
Stream.Read(@MyRecords[0],SizeOf(MyRecords[0])*L);[/pascal]
I'm concerned that it won't work right, but a bulk loading would help things an awful lot.