Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- procedure GenerateRandomFile(FileName : String; FileSize : Int64; CompressibilityPercentage : Integer);
- const
- BUFFER_LENGTH = 4;
- ARRAY_LENGTH = 1 * 1024;
- var
- TheTime : Integer;
- i, k : Integer;
- BufArr : Array [0..ARRAY_LENGTH - 1] of Integer;
- TheFile : TFileStream;
- begin
- TheTime := GetTickCount();
- Randomize;
- FileSize := Trunc(FileSize / BUFFER_LENGTH); // Buf (Integer) uses 4 bytes, thus we divide by 4
- if (CompressibilityPercentage > 0) then
- begin
- CompressibilityPercentage := Trunc(100 / CompressibilityPercentage);
- FileSize := Trunc(FileSize / CompressibilityPercentage);
- if (CompressibilityPercentage > 1) then
- Dec(CompressibilityPercentage);
- end;
- // ============================================ //
- // Generate truly non-compressible, random file //
- // ============================================ //
- TheFile := TFileStream.Create(FileName, fmCreate OR fmOpenReadWrite);
- with TheFile do
- begin
- for i := 0 to Trunc(FileSize / ARRAY_LENGTH) - 1 do // Iterate
- begin
- for k := 0 to (ARRAY_LENGTH - 1) do
- BufArr[k] := Random(9999999) * i;
- WriteBuffer(BufArr, BUFFER_LENGTH * ARRAY_LENGTH);
- end; // for
- // ============================ //
- // Adjust compressibility level //
- // ============================ //
- for k := 1 to CompressibilityPercentage do
- begin
- for i := 0 to Trunc(FileSize / ARRAY_LENGTH) - 1 do // Iterate
- begin
- Position := (i * BUFFER_LENGTH * ARRAY_LENGTH);
- Read(BufArr, BUFFER_LENGTH * ARRAY_LENGTH);
- Position := Size;
- WriteBuffer(BufArr, BUFFER_LENGTH * ARRAY_LENGTH);
- end; // for
- end; // for
- Free;
- end; // with
- ShowMessage('Generated [' + FileName + '] in ' + IntToStr(GetTickCount() - TheTime) + ' milli-seconds');
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement