Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Cruciverba - gestoreform.pas

gestoreform.pas

Caricato da: Poggi Marco
Scarica il programma completo

  1. unit GestoreForm;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8.   Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, LCLType,
  9.   lima;
  10.  
  11. type
  12.  
  13.   { TForm1 }
  14.  
  15.   TForm1 = class(TForm)
  16.     ButtonCancella: TButton;
  17.     ButtonRicerca: TButton;
  18.     EditParola: TEdit;
  19.     Label1: TLabel;
  20.     LabelIndicazioni: TLabel;
  21.     MemoRisultati: TMemo;
  22.     OpenDialogDizionario: TOpenDialog;
  23.     procedure ButtonCancellaClick(Sender: TObject);
  24.     procedure ButtonRicercaClick(Sender: TObject);
  25.     procedure FormCreate(Sender: TObject);
  26.     procedure FormShow(Sender: TObject);
  27.   private
  28.     { private declarations }
  29.     nomeFile:string;
  30.     archivio:tlima;
  31.     procedure cancella;
  32.     procedure RiapriArchivio;
  33.     function test(prima,seconda:string):boolean;
  34.   public
  35.     { public declarations }
  36.   end;
  37.  
  38. var
  39.   Form1: TForm1;
  40.  
  41. implementation
  42.  
  43. {$R *.lfm}
  44.  
  45. { TForm1 }
  46.  
  47. procedure TForm1.FormCreate(Sender: TObject);
  48. begin
  49.   Form1.Text:='Cruciverba';
  50.   LabelIndicazioni.Caption:='Parola da cercare '+#13+#10+'(indicare con * i caratteri ignoti)';
  51.   MemoRisultati.ReadOnly:=true;
  52.   archivio:=tlima.crea;
  53.   nomeFile:='parole\diz.txt';
  54. end;
  55.  
  56. procedure TForm1.FormShow(Sender: TObject);
  57. begin
  58.   OpenDialogDizionario.InitialDir:=GetCurrentDir;
  59.   OpenDialogDizionario.Filter:='File testuali|*.txt|tutti i file|*.*';
  60.   RiapriArchivio;
  61.   archivio.ChiudiFile;
  62.   cancella;
  63. end;
  64.  
  65. function TForm1.test(prima,seconda:string):boolean;
  66. var i,fine:word;
  67.     risultato:boolean;
  68. begin
  69.  fine:=length(prima);
  70.  i:=1;
  71.  risultato:=fine=Length(seconda);
  72.  while (i<=fine) and (risultato) do
  73.  begin
  74.    risultato:=(upCase(prima[i])=upCase(seconda[i])) or (prima[i]='*');
  75.    i:=i+1;
  76.  end;
  77.  test:=risultato;
  78. end;
  79.  
  80. procedure TForm1.RiapriArchivio;
  81. var messaggio:string;
  82.     me:PChar;
  83. begin
  84.   if not archivio.ApriFile(nomeFile, 'R') then
  85.   begin
  86.     if OpenDialogDizionario.Execute then
  87.     begin
  88.       nomeFile:=OpenDialogDizionario.FileName;
  89.     end
  90.     else
  91.     begin
  92.       messaggio:='File '+archivio.GetNomeFile+' non trovato !';
  93.       me:=StrAlloc(length(messaggio)+2);
  94.       strPCopy(me, messaggio);
  95.       Application.MessageBox(me, 'Errore', MB_ICONHAND);
  96.       strDispose(me);
  97.       Application.Terminate;
  98.     end;
  99.   end;
  100. end;
  101.  
  102. procedure TForm1.ButtonCancellaClick(Sender: TObject);
  103. begin
  104.   cancella;
  105.   EditParola.SetFocus;
  106. end;
  107.  
  108. procedure TForm1.ButtonRicercaClick(Sender: TObject);
  109. var contatore:word;
  110.     parola,lettura:string;
  111. begin
  112.   RiapriArchivio;
  113.   parola:=EditParola.Text;
  114.   contatore:=0;
  115.   MemoRisultati.Lines.Clear;
  116.   while not archivio.fine do
  117.   begin
  118.     lettura:=archivio.leggi;
  119.     if test(parola, lettura) then
  120.     begin
  121.       contatore+=1;
  122.       MemoRisultati.Lines.Add(lettura);
  123.     end;
  124.   end;
  125.   if contatore>1 then
  126.   begin
  127.     MemoRisultati.Lines.Add('---------------------------------');
  128.     MemoRisultati.Lines.Add(format('Trovate %d parole', [contatore]));
  129.   end;
  130.   if contatore=0 then
  131.     MemoRisultati.Lines.Add('Ricerca fallita');
  132.   archivio.ChiudiFile;
  133.   EditParola.SetFocus;
  134.   EditParola.SelLength:=0;
  135.   EditParola.SelStart:=length(EditParola.Text);
  136. end;
  137.  
  138. procedure TForm1.cancella;
  139. begin
  140.   EditParola.Text:='';
  141.   MemoRisultati.Text:='';
  142. end;
  143.  
  144. end.