по поводу самого первого сабжа
Код:
procedure EMNPGraph.LoadFromFile(const FileName: TFileName);
var
Stream : TStream;
Size : Integer;
Buffer: Array of bytes;//<<==-- раз
begin
Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
Size := Stream.Size - Stream.Position;
SetLength(Buffer, Size);
Stream.Read(Buffer[0], 0, Size); //<<==--- именно так
// затем делайте что угодно
finally
Stream.Free;
end;
end;
И вообще - когда у функции имеется нетипизированный
var или
const параметр, а передают массив - то лучше всегда указывать не массив, а первый элемент массива. В случае статического массива это одно и то же, а в случае динамического - две большие разницы