1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
procedure TfrmGen.bCreerFichierTxtAleatoireClick(Sender: TObject);
// crée un Fichier calibré de "texte" aléatoire alterné de mi-doublons comme suit:
// 02/12/95,07:56,0.62,0.19,0.72,0.92,0.38,0.53,0.36,0.95,0.46,1
// <<< MI-DOUBLON >>>
// 07/21/25,10:47,0.28,0.02,0.42,0.52,0.96,0.49,0.39,0.25,0.48,3
// <<< MI-DOUBLON >>>
// 11/04/90,02:07,0.55,0.52,0.84,0.93,0.80,0.49,0.12,0.58,0.43,5
// <<< MI-DOUBLON >>>
const Nmax = 10;
var FS : TFileStream; NomFichier, LigAl,LigMiDbl : string;
numLig : integer; ChronoC : oChrono;
procedure calibrer(var num : shortString);
begin while length(num)<2 do num:='0'+num; end;
function DateHeureAl : shortString; // Date et heure Aléatoire
var sp,sr : shortString;
begin sp:=intToStr(1 + Random(11)); calibrer(sp); sr:=sp+'/'; //mm
sp:=intToStr(1 + Random(30)); calibrer(sp); sr:=sr+sp+'/'; //jj
sp:=intToStr(0 + Random(99)); calibrer(sp); sr:=sr+sp+','; //aa
sp:=intToStr(0 + Random(24)); calibrer(sp); sr:=sr+sp+':'; //hh
sp:=intToStr(0 + Random(59)); calibrer(sp); sr:=sr+sp+','; //mi
Result:=sr;
end;
function champs1aN(N : integer) : shortString; // champs1aNmoins1 Aléatoires
var sp,sr : shortString; i : integer;
begin sr:='';
for i:=1 to N-1 do // champs 1 à N-1 Aléatoires
begin sp:=intToStr(0 + Random(99));
calibrer(sp); sp:='0.'+sp; sr:=sr+sp+',';
end;
// Champ N pris égal au numéro de ligne sinon doublons-aléatoires-perturbateurs
Result:=sr;
end;
begin NomFichier:=ExtractFilePath(Application.ExeName)+'ftAL44000x62.txt';
if fileExists(NomFichier) then
begin if MessageDlg( NomFichier+' : existe déjà : Ecraser ?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes
then DeleteFile(NomFichier)
else NomFichier:= InputBox('Créer fichier aléatoire sous autre nom' , NomFichier, NomFichier);
end;
FS := TFileStream.Create(NomFichier, fmCreate);
Sablier;
ChronoC.Top(Edit1);
Randomize;
numLig:=0;
LigMiDbl:='<<< MI-DOUBLON >>>'+#13#10;
repeat inc(numLig); // Ajout de lignes de texte aléatoire et de mi-doublons
if odd(numLig)
then LigAl:=DateHeureAl+champs1aN(Nmax)+intToStr(numLig)+#13#10
else LigAl:=LigMiDbl;
FS.Write(PChar(LigAl)^, length(LigAl));
until numLig=200000; //10000; // //250000; //44000; //10000;
LigAl:='ANAGRAMME'+#13#10;
FS.Write(PChar(LigAl)^, length(LigAl));
LigAl:='EMMARGANA'+#13#10;
FS.Write(PChar(LigAl)^, length(LigAl));
LigAl:='<<< MI-DOUBLON >>>'+#13#10;
FS.Write(PChar(LigAl)^, length(LigAl));
FS.Write(PChar(LigAl)^, length(LigAl)); // Ajouté 2 fois = 1 doublon final
redRapport.Lines.Add( NomFichier+' : '+intToStr(numLig)
+' lignes '+intToStr(FS.size)+' Octets'
+' mis : '+intToStr(ChronoC.Mis)+' ms');
Sablier;
FS.Free;
end; |
Partager