How to create a list of random file names, including extension, dates, and file size in Pascal

1 Answer

0 votes
program RandomFiles;

{$mode objfpc}{$H+}

uses
  SysUtils;

// Function to generate a random string of given length
function GenerateRandomString(Len: Integer): string;
const
  Charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
var
  i: Integer;
begin
  SetLength(Result, Len);
  for i := 1 to Len do
    Result[i] := Charset[Random(Length(Charset)) + 1];
end;

// Function to generate a random date
function GenerateRandomDate: string;
var
  Year, Month, Day: Integer;
begin
  Year  := Random(21) + 2000;  // Random year between 2000 and 2020
  Month := Random(12) + 1;     // Random month between 1 and 12
  Day   := Random(28) + 1;     // Random day between 1 and 28

  Result := Format('%4d-%0.2d-%0.2d', [Year, Month, Day]);
end;


// Function to generate a random file size
function GenerateRandomFileSize: Integer;
begin
  Result := Random(100000) + 1; // Random file size between 1 and 100000 bytes
end;

var
  Extensions: array of string;
  i: Integer;
  FileName, Ext, DateStr: string;
  FileSize: Integer;
begin
  Randomize; // Seed RNG

  // Available extensions
  SetLength(Extensions, 5);
  Extensions[0] := '.txt';
  Extensions[1] := '.jpg';
  Extensions[2] := '.png';
  Extensions[3] := '.cpp';
  Extensions[4] := '.pdf';

  for i := 1 to 10 do
  begin
    FileName := GenerateRandomString(9); // Generate random file name
    Ext      := Extensions[Random(Length(Extensions))]; // Random extension
    DateStr  := GenerateRandomDate; // Random date
    FileSize := GenerateRandomFileSize; // Random size

    WriteLn(FileName, Ext, ' ', DateStr, ' ', FileSize, ' bytes');
    
  end;
end.



(*
run:

Up0aj2mLg.cpp 2004-06-11 10688 bytes
HLkwJCmZU.cpp 2009-07-19 16060 bytes
QQS9Xy29j.pdf 2004-08-28 6943 bytes
ZBc4nVVGU.png 2009-01-27 95418 bytes
nhREfBHpM.jpg 2004-07-26 7772 bytes
60d3UPjBh.cpp 2000-06-25 78496 bytes
3L8eIjB9u.txt 2008-10-25 19312 bytes
2y7lJaFgG.pdf 2017-01-09 95183 bytes
tr01Mc1bl.jpg 2020-12-24 37343 bytes
v2bxhmwfu.png 2020-03-10 81073 bytes

*)

 



answered 20 hours ago by avibootz

Related questions

...