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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
| var
Form1: TForm1;
InputString,NbTir : String; //pour nom fichier txt
RES : TResourceStream;
F : TextFile;
lignelue, L1,L2,L3, L4 : string[13];
//Memligne : array[1..430400] of String[13];
Flag : Integer;
implementation
{$R *.DFM}
{$R 7plus1.RES}
PROCEDURE RESSOURCE;
Var
FileStream : TFileStream;
Begin
Res:= TResourceStream.Create(Hinstance,'RES_plus1',RT_RCDATA);
TRY
FileStream:=TFileStream.Create('7plus1.txt',fmcreate);
TRY
FileStream.CopyFrom(RES,0);
Finally
FileStream.Free;
End;
Finally
RES.Free;
End;
end;
procedure TForm1.Button1Click(Sender: TObject);
Var
j,nb_anag, k, nombre_tirage :LongWord;
L3 : array[1..100] of String[13];
L4 : String[13];
begin
Flag:=1;// pour nom du fichier (bouton 1)
Repeat
InputString:= InputBox('CHERCHE 7 + 1', 'Combien d''anagrammes ? (Entre 1 et 30 maxi) ', '?');
If InputString='?' then halt; // bouton annuler
nb_anag:=StrToInt(InputString);
Until nb_anag in [1..30];
RESSOURCE;
j:=0; nombre_tirage:=0;
ListBox1.clear;
Listbox1.Sorted:=FALSE;
AssignFile(F,'7plus1.txt'); //
Reset(F);
While not eof(F) do
Begin
Readln(F,lignelue);
L1:=lignelue ;
If L1[1] in ['A'..'R'] then // il n'y a pas de chaine après R donc je ne vais pas jusqu'à Z
Begin
Readln(F,lignelue); L2:=Lignelue;
If Copy(L2,1,1)='+' then // FONCTIONNE s'il n'y a pas de scrabble "sec" à 7 Lettres avant
// If (L2[1]='+') or (L2[1]=' ') then // non Je ne peux tester que sur '+' !
// If (Copy(L2,1,1)='+') OR (Copy(L2,1,1)=' ') then // non ne fonctionne pas non plus !
Begin
Readln(F,lignelue);
inc(j); L3[j]:= Lignelue; L4:=Lignelue; // L4 pour essai seulement
While ((Copy(Lignelue,1,1)='+') OR (Copy(Lignelue,1,1)=' '))do
// While((L4[1]='+') OR (L4[1]=' ')) do // non - c'est ma question!
Begin
inc(j);
Readln(F,lignelue);
L3[j]:=Lignelue;
End; // de while N°2
If (j=nb_anag) then
Begin
ListBox1.Items.Add(L1); // le tirage
ListBox1.Items.Add(L2); // la soluce 1
If (nb_anag>1) and (j>0) then
Begin
For k :=1 to j-1 do ListBox1.Items.Add(L3[k]); // soluces suivantes
ListBox1.Items.Add(''); // saut ligne
End;
End;
End;
j:=0 ;
End;
End;
Label1.Visible:=TRUE;
Label4.Visible:=TRUE;
Button3.Visible:=True; // permet l'enregistrement du ListBox
nbTir:= IntToStr(nombre_tirage);
Label4.Caption:=' Nombre de tirages : '+ nbTir;
CloseFile(F);
end;// de la procedure |
Partager