{ rotinas de tratamento de funcoes do editor }
{ Autores: Marcelo Luis Pinheiro }
{ Orientador Academico: Jose' Antonio Borges }
{ Em 10/12/93 }

Unit DicBusca;

interface
uses
    DVcrt, Windows, DVWin, DicLer, sysUtils,
    Dicvars, Dicsom, Dicfun, DicBloco, dvlenum;

Procedure palavraDir (falando: boolean);
Procedure palavraEsq (falando: boolean);
Procedure buscaRebusca;
Procedure ProcuraVerbete;
Procedure AvancaNumber;
Procedure VoltaNumber;
Procedure AvancaNumberInfo;
Procedure VoltaNumberInfo;
Procedure AvancaNumbersInfo;
Procedure VoltaNumbersInfo;
Procedure buscaPalavra;
Procedure buscaPalavraFrente;
Procedure buscaCadeia;
Procedure buscaCadeiaVerbete;
Procedure buscaDeNovo;
Procedure buscaDeNovoPal;
Procedure buscaDeNovo1;
Procedure buscaNovamente;
Procedure buscaNovamentePal;

implementation

var
    sz: array [0..144] of char;

{--------------------------------------------------------}

Procedure palavraDir (falando: boolean);
var
    linha: string;
    tam: integer;
    c: char;
begin
    tam := length (texto [py]);
    linha := texto [py] + ' x';

    c := linha[px];
    if c <> ' ' then
        repeat
            px := px + 1;
            c := linha[px];
        until not (c in ['a'..'z', 'A'..'Z', '0'..'9', #128..#255]);

    if c = ' ' then
        repeat
            px := px + 1;
            c := linha[px];
        until c <> ' ';

    if px > tam+1 then
        begin
            px := tam+1;
            if falando then sintBip;
        end
    else
        if falando then sintClek;
end;

{--------------------------------------------------------}

Procedure palavraEsq (falando: boolean);
var
    linha: string;
    c: char;
begin
    linha := ' x' + texto [py];
    px := px + 2;

    repeat
        px := px - 1;
        if px <= length (linha) then
            c := linha[px]
        else
            c := ' ';
    until c <> ' ';

    repeat
        px := px - 1;
        c := linha[px];
    until not (c in ['a'..'z', 'A'..'Z', '0'..'9', #128..#255]);

    px := px - 1;

    if px <= 0 then
        begin
            px := 1;
            if falando then sintBip;
        end
    else
        if falando then {sintClek};

end;

{--------------------------------------------------------}

procedure maiuscula (var s: Linha);
var c: char;
    i: integer;
begin
    for i := 1 to length (s) do
        begin
            c := s[i];
            if c < #128 then
                c := upcase (c)
            else
                case c of
                    '': c := '';
                    '': c := '';
                    '': c := '';    { provisorio }
                    '' : c := '';    { provisorio }
                    '': c := '';    { provisorio }
                    '': c := '';    { provisorio }
                    '': c := '';    { provisorio }
                    '': c := '';    { provisorio }
                    '': c := '';
                    '': c := '';
                    '': c := '';    { provisorio }
                    'u': c := 'U';    { provisorio }
                    '': c := '';
                end;
            s[i] := c;
        end;
end;

{-----------------------------}

Procedure buscaRebusca;
var x : byte;
k, i: integer;
arquiBloco, s: string;
a: text;
    textoAProcurar, buscado: string;
    c: char;

label denovo;
begin
    textoAProcurar := sintAmbiente ('EDIVOX', 'TEXTOPROCURADO');
    if textoAProcurar = '' then
        begin
            textoAProcurar := '';
        end;

    buscado := textoAProcurar;

ponteiro:=3;
  gotoxy(2,8); write(limpeza);
  gotoxy(10,8); write('Qual o texto a procurar : ');
    sintsom ('DCTXTPRC');
    sintetiza (buscado);
    begin
    c := sintEdita (buscado, wherex, wherey, 255, true);
    buscado := maiuscAnsi (buscado);
    writeln;
sintclek;

    if buscado = '' then
    buscado := textoAProcurar;
            strPCopy (sz, buscado);
            writePrivateProfileString('EDIVOX', 'TEXTOPROCURADO',     sz, 'DOSVOX.INI');

    if c = ESC then
        begin
                msgbaixo('DCDESIST', 'Operao cancelada');
    gotoxy(2,8); write(limpeza);
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
px :=1;
end;

    if buscado = '' then
        begin
buscado := textoAProcurar;
buscadenovo;
//                msgbaixo('DCDESIST', 'Operao cancelada');
            exit;
        end
else

  seek(arquivo,ponteiro +py-1);
Limite := tamanhoDicionario;

k:=-1;
i:=-1;
denovo:
if k = 50 then
begin
k:=k-50;
end;
k:=k+1;
i:=i+1;
            str (i, s);

  while filepos(arquivo)< limite  Do
        begin
            read(arquivo, linhateste);
            linhateste:=maiuscansi (limpa(linhateste));
            x := pos (buscado, linhateste);
            if x > 0 then
                begin
                    ponteiro :=filepos(arquivo)-1;
    py:=1;
                    px := x;
    atualizaporindice;
                  letrecho;
gravaProcura;
if k = 50 then
sintbip;
goto denovo;
                end;
        end;

begin
arquiBloco := '0' + buscado + '.TXT';
  arquibloco :=limpa(  arquiBloco );

             assign (a, arquibloco);
             {$i-} reset (a); {$i+}
             If ioresult = 0 then
             begin
                 close (a);

begin
assign(a, arquibloco);
{$I-} append(a);{$I+}
If IOresult <> 0  Then
    begin
    exit;
    {$I-}close(a);{$I+}
    end;

if i = 1 then
begin
    writeln(a, '');
    writeln(a, ''+ s+ ' ocorrncia da palavra '+'"'+buscado+'"');
end;

if i > 1 then
begin
    writeln(a, '');
    writeln(a, ''+ s+ ' ocorrncias da palavra '+'"'+buscado+'"');
end;

end;
close(a);
end;
end;

                msgbaixo('DCBIP', 'Bip');

if i = 0 then
begin
                msgbaixo('DCNENHUM', 'Nenhuma ocorrncia da palavra:');
sintbip;
sintwriteln (' "' + buscado + '"');
sintbip;
end;

if i = 1 then
begin
                msgbaixo('DCUMA', 'Uma');
                msgbaixo('DCOCOPA1', ' ocorrncia da palavra:');
sintbip;
sintwriteln (' "' + buscado + '"');
sintbip;
end;

if i = 2 then
begin
                msgbaixo('DCDUAS', 'Duas');
                msgbaixo('DCOCOPAL', ' ocorrncias da palavra:');
sintbip;
sintwriteln (' "' + buscado + '"');
sintbip;
end;

if i > 2 then
begin
sintwriteint (i);
                msgbaixo('DCOCOPAL', ' ocorrncias da palavra:');
sintbip;
sintwriteln (' ' + buscado);
sintbip;
end;

if i > 0 then
begin
                msgbaixo('DCVERRES', 'Veja o resultado no arquivo: ');
sintwriteln ( '0' + buscado + '.TXT');
end;

        atualizaporindice;
                  letrecho;
    salvaCurx := px;
    salvaCury := py;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
    px := salvaCurx;
    py := salvaCury;
{px:=x;}
exit;
end;
end;

{-----------------------------}

Procedure ProcuraVerbete;
var
    textoAProcurar, buscado: string;
    c: char;

begin
    textoAProcurar := sintAmbiente ('EDIVOX', 'TEXTOPROCURADO');
    if textoAProcurar = '' then
        begin
            textoAProcurar := '';
        end;

    buscado := textoAProcurar;

  gotoxy(2,8);
write(limpeza);
  gotoxy(10,8);
write('Digite o verbete a procurar? ');
msgbaixo('DCVERPRO', 'Digite o verbete a procurar');
    sintetiza (buscado);
    begin
    c := sintEdita (buscado, wherex, wherey, 255, true);
    buscado := maiuscAnsi (buscado);
write ('Digite o verbete a procurar : ');
//    writeln;
sintclek;

    if buscado = '' then
    buscado := textoAProcurar;
            strPCopy (sz, buscado);
            writePrivateProfileString('EDIVOX', 'TEXTOPROCURADO',     sz, 'DOSVOX.INI');

    if c = ESC then
        begin
                msgbaixo('DCDESIST', 'Operao cancelada');
    gotoxy(2,8); write(limpeza);
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
px:=1;
                exit;
end;

    if buscado = '' then
        begin
buscado := textoAProcurar;
buscadenovo;
//                msgbaixo('DCDESIST', 'Operao cancelada');
            exit;
        end
else
  gotoxy(22, 16);
  textbackground(red);
  textcolor(white+blink);
  write ('Processando consulta no dicionrio...');
  textbackground(blue);
  textcolor(lightgray);
  assign(arquivo, dadosDisco);
  {$I-} reset(arquivo); {$I+}
  If IOResult <> 0  Then
    begin
    msgbaixo('DCERRODT', 'Erro grave nos arquivos de dados');
    exit;
    end;
  buscado := '# ' + buscado;
  achou := false;
  While (not achou)and(filepos(arquivo)<tamanhoDicionario)  Do
    begin
    read(arquivo, linhateste);
    linhateste := maiuscansi(limpa(linhateste));
    achou :=pos(buscado, linhateste) > 0;
end;
  If not achou  Then
    begin
                msgbaixo('DCBIP', 'Bip');
    msgbaixo('DCTXTNAO', 'Texto no encontrado');
    exit;
    end;

                msgbaixo('DCBIP', 'Bip');
  sintsom('DCOK');
                    ponteiro :=filepos(arquivo)-1;
    py:=1;
                    px := 3;
    atualizaporindice;
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
gravaprocura;
                end;
        end;

{-----------------------------}

Procedure AvancaNumber;
var x : byte;
begin
  buscado := '#';
  seek(arquivo,ponteiro +py);
Limite := tamanhoDicionario;

  while filepos(arquivo)< limite  Do
        begin
            read(arquivo, linhateste);
            linhateste:=maiuscansi (limpa(linhateste));
            x := pos (buscado, linhateste);
            if x > 0 then
                begin
                    ponteiro :=filepos(arquivo)-1;
    py:=1;
                    px := 3;
    atualizaporindice;
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
                    px := 3;
                    exit;
                end;
        end;

        msgbaixo('DCFIMBIB', 'Fim do Dicionrio!');
    atualizaporindice;
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
                    px :=3;
exit;
end;

{-----------------------------}

Procedure VoltaNumber;
var x : byte;
begin
  buscado := '#';

Limite := tamanhoDicionario-tamanhoDicionario-1;

  while filepos(arquivo)> limite+3  Do
    begin
ponteiro := ponteiro - 1;
  seek(arquivo,ponteiro);
            read(arquivo, linhateste);
            x := pos (buscado, linhateste);

            if x > 0 then
                begin
                    ponteiro :=filepos(arquivo)-1;
    py:=1;
                    px := 3;
    atualizaporindice;
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
                    px := 3;
                    exit;
                end;
                end;

if (ponteiro = 3) and (py=1) then
ponteiro := ponteiro + 1
else
ponteiro := ponteiro + 2;

  seek(arquivo,ponteiro);
    msgbaixo('DCINIBIB', 'Incio do dicionrio !');
    atualizaporindice;
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
if pontaux = 1 then
                    px :=3
else
                    px :=1;
exit;
end;

{-----------------------------}

Procedure AvancaNumberInfo;
var x : byte;
begin
  buscado := '#';

  seek(arquivo,ponteiro +py);
Limite := TamanhoInfo;

  while filepos(arquivo)< limite  Do
        begin
            read(arquivo, linhateste);
            linhateste:=maiuscansi (limpa(linhateste));
            x := pos (buscado, linhateste);
            if x > 0 then
                begin
                    ponteiro :=filepos(arquivo)-1;
    py:=1;
                    px := 3;
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
px :=3;
exit;
end;
        end;

        msgbaixo ('DCFIMTEX', 'Fim do texto!');
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
px :=3;
exit;
end;

{-----------------------------}

Procedure VoltaNumberInfo;
var x : byte;
begin
  buscado := '#';

Limite := tamanhoInfo-tamanhoInfo;

  while filepos(arquivo)> limite+3  Do
    begin
ponteiro := ponteiro - 1;
  seek(arquivo,ponteiro);
            read(arquivo, linhateste);
            x := pos (buscado, linhateste);

            if x > 0 then
                begin
                    ponteiro :=filepos(arquivo)-1;
    py:=1;
                    px := 3;
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
px :=3;
exit;
end;
end;

ponteiro := ponteiro+2;
  seek(arquivo,ponteiro);
        msgbaixo ('DCINITEX', 'Incio do texto!');
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
                    py :=1;
px :=3;
exit;
end;

{-----------------------------}

Procedure AvancaNumbersInfo;
var x : byte;
begin
  buscado := '##';

  seek(arquivo,ponteiro +py);
Limite := TamanhoInfo;

  while filepos(arquivo)< limite  Do
        begin
            read(arquivo, linhateste);
            linhateste:=maiuscansi (limpa(linhateste));
            x := pos (buscado, linhateste);
            if x > 0 then
                begin
                    ponteiro :=filepos(arquivo)-1;
    py:=1;
                    px := 4;
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
                    px := 4;
                    exit;
                end;
        end;

        msgbaixo ('DCULTLET', 'ltima letra!');
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
                    px :=4;
exit;
end;

{-----------------------------}

Procedure VoltaNumbersInfo;
var x : byte;
begin
  buscado := '##';

Limite := tamanhoInfo-tamanhoInfo;

  while filepos(arquivo)> limite+2  Do
    begin
ponteiro := ponteiro - 1;
  seek(arquivo,ponteiro);
            read(arquivo, linhateste);
            x := pos (buscado, linhateste);

            if x > 0 then
                begin
                    ponteiro :=filepos(arquivo)-1;
    py:=1;
                    px := 4;
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
                    px := 4;
                    exit;
                end;
                end;

ponteiro := ponteiro+2;
  seek(arquivo,ponteiro);
        msgbaixo ('DCINITEX', 'Incio do texto!');
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
                    py :=1;
                    px :=4;
exit;
end;

{-----------------------------}

Procedure buscaPalavra;
var x : byte;
    textoAProcurar, buscado: string;
    c: char;

begin
    textoAProcurar := sintAmbiente ('EDIVOX', 'TEXTOPROCURADO');
    if textoAProcurar = '' then
        begin
            textoAProcurar := '';
        end;

    buscado := textoAProcurar;

  gotoxy(2,8); write(limpeza);
  gotoxy(10,8); write('Qual o texto a procurar : ');
    sintsom ('DCTXTPRC');
    sintsom ('DCPRCINI'); {' desde o incio do dicionrio'}
    sintetiza (buscado);
    begin
    c := sintEdita (buscado, wherex, wherey, 255, true);
    buscado := maiuscAnsi (buscado);
    writeln;
sintclek;

    if buscado = '' then
    buscado := textoAProcurar;
            strPCopy (sz, buscado);
            writePrivateProfileString('EDIVOX', 'TEXTOPROCURADO',     sz, 'DOSVOX.INI');

    if c = ESC then
        begin
                msgbaixo('DCDESIST', 'Operao cancelada');
    gotoxy(2,8); write(limpeza);
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
px:=1;
                exit;
end;

    if buscado = '' then
        begin
buscado := textoAProcurar;
buscadenovo;
//                msgbaixo('DCDESIST', 'Operao cancelada');
            exit;
        end
else

ponteiro:=3;

  seek(arquivo,ponteiro +py-1);
Limite := tamanhoDicionario;

  while filepos(arquivo)< limite  Do
        begin
            read(arquivo, linhateste);
            linhateste:=maiuscansi (limpa(linhateste));
            x := pos (buscado, linhateste);
            if x > 0 then
                begin
                msgbaixo('DCBIP', 'Bip');
{                    Sintsom('DCTXTENC');}
  sintsom('DCOK');
                    ponteiro :=filepos(arquivo)-1;
    py:=1;
                    px := x;
    atualizaporindice;
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
                    px :=x;
gravaprocura;
                    exit;
                end;
        end;

                msgbaixo('DCBIP', 'Bip');
    msgbaixo('DCTXNENC','Texto nao  encontrado');
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
                    px :=1;
exit;
end;
end;

{-----------------------------}

Procedure buscaPalavraFrente;
var x : byte;
    textoAProcurar, buscado: string;
    c: char;

begin
    textoAProcurar := sintAmbiente ('EDIVOX', 'TEXTOPROCURADO');
    if textoAProcurar = '' then
        begin
            textoAProcurar := '';
        end;

    buscado := textoAProcurar;

  gotoxy(2,8); write(limpeza);
  gotoxy(10,8); write('Qual o texto a procurar : ');
    sintsom ('DCTXTPRC');
    sintsom ('DCPRCFRE'); {' deste ponto para a frente'}
    sintetiza (buscado);
    begin
    c := sintEdita (buscado, wherex, wherey, 255, true);
    buscado := maiuscAnsi (buscado);
    writeln;
sintclek;

    if buscado = '' then
    buscado := textoAProcurar;
            strPCopy (sz, buscado);
            writePrivateProfileString('EDIVOX', 'TEXTOPROCURADO',     sz, 'DOSVOX.INI');

    if c = ESC then
        begin
                msgbaixo('DCDESIST', 'Operao cancelada');
    gotoxy(2,8); write(limpeza);
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
px:=1;
                exit;
end;

    if buscado = '' then
        begin
buscado := textoAProcurar;
buscadenovo;
//                msgbaixo('DCDESIST', 'Operao cancelada');
            exit;
        end
else

  seek(arquivo,ponteiro +py-1);
Limite := tamanhoDicionario;

  while filepos(arquivo)< limite  Do
        begin
            read(arquivo, linhateste);
            linhateste:=maiuscansi (limpa(linhateste));
            x := pos (buscado, linhateste);
            if x > 0 then
                begin
                msgbaixo('DCBIP', 'Bip');
{                    Sintsom('DCTXTENC');}
  sintsom('DCOK');
                    ponteiro :=filepos(arquivo)-1;
    py:=1;
                    px := x;
    atualizaporindice;
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
                    px :=x;
gravaprocura;
                    exit;
                end;
        end;

                msgbaixo('DCBIP', 'Bip');
    msgbaixo('DCTXNENC','Texto nao  encontrado');
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
                    px :=1;
exit;
end;
end;

{-----------------------------}

Procedure buscaCadeia;
var x : byte;
    textoAProcurar, buscado: string;
    c: char;
begin
    textoAProcurar := sintAmbiente ('EDIVOX', 'TEXTOPROCURADO');
    if textoAProcurar = '' then
        begin
            textoAProcurar := '';
        end;

    buscado := textoAProcurar;

  gotoxy(2,8); write(limpeza);
  gotoxy(10,8); write('Qual o texto a procurar : ');
    sintsom ('DCTXTPRC');
    sintetiza (buscado);
    begin
    c := sintEdita (buscado, wherex, wherey, 255, true);
    buscado := maiuscAnsi (buscado);
    writeln;
sintclek;

    if buscado = '' then
    buscado := textoAProcurar;
            strPCopy (sz, buscado);
            writePrivateProfileString('EDIVOX', 'TEXTOPROCURADO',     sz, 'DOSVOX.INI');

    if c = ESC then
        begin
                msgbaixo('DCDESIST', 'Operao cancelada');
    gotoxy(2,8); write(limpeza);
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
px:=1;
                exit;
end;

    if buscado = '' then
        begin
buscado := textoAProcurar;
buscadenovo;
//                msgbaixo('DCDESIST', 'Operao cancelada');
            exit;
        end
else

  seek(arquivo,ponteiro +py-1);
Limite := TamanhoInfo;

  while filepos(arquivo)< limite  Do
        begin
            read(arquivo, linhateste);
            linhateste:=maiuscansi (limpa(linhateste));
            x := pos (buscado, linhateste);
            if x > 0 then
                begin
                msgbaixo('DCBIP', 'Bip');
{                    Sintsom('DCTXTENC');}
  sintsom('DCOK');
                    ponteiro :=filepos(arquivo)-1;
    py:=1;
                    px := x;
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
                    px :=x;
                    exit;
                end;
        end;

                msgbaixo('DCBIP', 'Bip');
    msgbaixo('DCTXNENC','Texto nao  encontrado');
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
                    px :=1;
exit;
end;
end;

{-----------------------------}

Procedure buscaCadeiaVerbete;
var x : byte;
begin
  gotoxy(2,8); write(limpeza);
  gotoxy(10,8); write('Qual o texto a procurar : ');
    sintsom ('DCTXTPRC');
  buscado :=maiuscansi(limpa( lelinha));
sintclek;
        if buscado = '' then
            begin
                msgbaixo('DCDESIST', 'Operao cancelada');
    gotoxy(2,8); write(limpeza);
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
px:=1;
                exit;
            end;
  buscado := '# ' + buscado;

  seek(arquivo,ponteiro +py-1);
Limite := TamanhoInfo;

  while filepos(arquivo)< limite  Do
        begin
            read(arquivo, linhateste);
            linhateste:=maiuscansi (limpa(linhateste));
            x := pos (buscado, linhateste);
            if x > 0 then
                begin
                msgbaixo('DCBIP', 'Bip');
  sintsom('DCOK');
                    ponteiro :=filepos(arquivo)-1;
    py:=1;
                    px := 3;
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
                    px :=3;
                    exit;
                end;
        end;

                msgbaixo('DCBIP', 'Bip');
    msgbaixo('DCTXNENC','Texto nao  encontrado');
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
                    px :=3;
exit;
end;

{-----------------------------}

Procedure buscaDeNovo;
var  x: byte;
    textoAProcurar, buscado: string;

begin
    textoAProcurar := sintAmbiente ('EDIVOX', 'TEXTOPROCURADO');
    if textoAProcurar = '' then
        begin
            textoAProcurar := '';
        end;

    buscado := textoAProcurar;

sintclek;
limite := tamanhoDicionario;
    while filepos(arquivo)<limite  Do
        begin
            read(arquivo, linhateste);
            linhateste:=maiuscansi (limpa(linhateste));
            x := pos (buscado, linhateste);
            if x > 0 then
                begin
                msgbaixo('DCBIP', 'Bip');
{                    sintsom('DCTXTENC');}
  sintsom('DCOK');
                    ponteiro := filepos(arquivo)-1;
                    px := x;py:=1;
        atualizaporindice;
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
px:=x;
gravaprocura;
                    exit;
                end;
        end;

                msgbaixo('DCBIP', 'Bip');
    msgbaixo('DCTXNENC','Texto nao encontrado');
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
px:=1;
end;

{-----------------------------}

Procedure buscaDeNovoPal;
var  x: byte;
begin
sintclek;
limite := tamanhoDicionario;
    while filepos(arquivo)<limite  Do
        begin
            read(arquivo, linhateste);
            linhateste:=maiuscansi (limpa(linhateste));
            x := pos (buscado, linhateste);
            if x > 0 then
                begin
                msgbaixo('DCBIP', 'Bip');
{                    sintsom('DCTXTENC');}
  sintsom('DCOK');
                    ponteiro :=filepos(arquivo)-1;
    py:=1;
                    px := 3;
    atualizaporindice;
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
                    px :=x;
gravaprocura;
px:=3;
    exit;
end;
        end;

                msgbaixo('DCBIP', 'Bip');
    msgbaixo('DCTXNENC','Texto nao encontrado');
px:=3;
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
px:=3;
end;

{-----------------------------}

Procedure buscaDeNovo1;
var  x: byte;
begin
sintclek;
limite := tamanhoDicionario;
    while filepos(arquivo)<limite  Do
        begin
            read(arquivo, linhateste);
            linhateste:=maiuscansi (limpa(linhateste));
            x := pos (buscado, linhateste);
            if x > 0 then
                begin
                msgbaixo('DCBIP', 'Bip');
{                    sintsom('DCTXTENC');}
  sintsom('DCOK');
                    ponteiro := filepos(arquivo)-1;
                    px := x;py:=1;
        atualizaporindice;
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
px:=x;
                    exit;
                end;
        end;

                msgbaixo('DCBIP', 'Bip');
    msgbaixo('DCTXNENC','Texto nao encontrado');
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
px:=1;
end;

{-----------------------------}

Procedure buscaNovamente;
var  x: byte;
begin
sintclek;

limite := TamanhoInfo;
    while filepos(arquivo)<limite  Do
        begin
            read(arquivo, linhateste);
            linhateste:=maiuscansi (limpa(linhateste));
            x := pos (buscado, linhateste);
            if x > 0 then
                begin
                msgbaixo('DCBIP', 'Bip');
  sintsom('DCOK');
                    ponteiro := filepos(arquivo)-1;
                    px := x;py:=1;
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
px:=x;
                    exit;
                end;
        end;

                msgbaixo('DCBIP', 'Bip');
    msgbaixo('DCTXNENC','Texto nao encontrado');
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
px:=1;
end;

{-----------------------------}

Procedure buscaNovamentePal;
var  x: byte;
begin
sintclek;
limite := tamanhoDicionario;
    while filepos(arquivo)<limite  Do
        begin
            read(arquivo, linhateste);
            linhateste:=maiuscansi (limpa(linhateste));
            x := pos (buscado, linhateste);
            if x > 0 then
                begin
                msgbaixo('DCBIP', 'Bip');
{                    sintsom('DCTXTENC');}
  sintsom('DCOK');
                    ponteiro := filepos(arquivo)-1;
                    px := 3;py:=1;
        atualizaporindice;
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
px:=3;
                    exit;
                end;
        end;

                msgbaixo('DCBIP', 'Bip');
    msgbaixo('DCTXNENC','Texto nao encontrado');
                  letrecho;
if primeiraLetra (sintAmbiente ('DICVOX', 'SAPIATIVADO')) = 'S' then
falaLinha (true)
else
                        sintetiza (texto [py]);
px:=3;
end;

begin
    buscado := '~';
end.
