Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida busca e insere


silvanirms

Pergunta

Pessoal, estou precisando de um form que busque por determinada palavra em um .txt caso essa palavra já exista ele mostra a mensagem que já existe, caso não exista ele informe que não existe e insere o codigo nesse .txt

Estou há 1 semana tentanto resolver essa minha duvida e não consigo, agradeco muito a quem puder me ajudar. Abs

Link para o comentário
Compartilhar em outros sites

22 respostass a esta questão

Posts Recomendados

  • 0

dei uma pesquisada, acho que é isso q você precisa:

var 
  txt: TStringList;
  i: integer;
begin
  txt := TStringList.Create;
  txt.LoadFromFile('c:\temp.txt'); //abre o arquivo
  for i:=0 to txt.Count -1 do
    if Pos(edit1.Text,txt[i])>0 then //edit1.text é a palavra que você procura
    begin
      showmessage('existe palavra');
      exit;
    end;
  txt.Add(edit1.Text); //adiciona palavra
  txt.SaveToFile('c:\temp.txt'); //salva arquivo
  showmessage('palavra adicionada');

  txt.Free;
end;

é só adaptar para sua necessidade

falou espero que te ajude ^^

Editado por Pimpao
Link para o comentário
Compartilhar em outros sites

  • 0

to tentando fazer dessa forma (já sabendo que esta errado) porq na verdade so preciso de um campo de busca onde digitar a palavra, n precisa de visual bonito e de nada disso, o mais simples possivel:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs;

type

TForm1 = class(TForm)

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

var

txt: TStringList;

i: integer;

begin

txt := TStringList.Create;

txt.LoadFromFile('c:\temp.txt'); //abre o arquivo

for i:=0 to txt.Count -1 do

if Pos(edit1.Text,txt)>0 then //edit1.text é a palavra que você procura

begin

showmessage('existe palavra');

exit;

end;

txt.Add(edit1.Text); //adiciona palavra

txt.SaveToFile('c:\temp.txt'); //salva arquivo

showmessage('palavra adicionada');

txt.Free;

end;

end;

end.

Link para o comentário
Compartilhar em outros sites

  • 0

Ficaria assim:

procedure TForm1.FormCreate(Sender: TObject);
var //quando se tem variaveis, elas ficam antes do primeiro begin
  txt: TStringList;
  i: integer;
begin
  txt := TStringList.Create;
  txt.LoadFromFile('c:\temp.txt'); //abre o arquivo
  for i:=0 to txt.Count -1 do
    if Pos(edit1.Text,txt[i])>0 then //edit1.text é a palavra que você procura
    begin
      showmessage('existe palavra');
      exit;
    end;
  txt.Add(edit1.Text); //adiciona palavra
  txt.SaveToFile('c:\temp.txt'); //salva arquivo
  showmessage('palavra adicionada');

  txt.Free;
end;

to tentando fazer dessa forma (já sabendo que esta errado) porq na verdade so preciso de um campo de busca onde digitar a palavra, n precisa de visual bonito e de nada disso

Você está fazendo no OnCreate do form, se você precisa de um campo de busca seria interessante fazer isso num OnClick de um botao...

Falou

Editado por Pimpao
Link para o comentário
Compartilhar em outros sites

  • 0

silvanirms, assim resolve seu problema, testa ai

Proc....
var
arq:textfile;
linha:string;
begin

assignfile(arq,'c:\nomedoarquivo.txt');
reset(arq);
while not eof(arq) do
begin
  readln(arq,linha);
 if pos('cadeira',linha)>0 then
 begin
  Showmessage('Encontrado');
 end;

Link para o comentário
Compartilhar em outros sites

  • 0

Pois é, to tentando ir aos poucos consertando.. a principio achei que bastava criar um campo de busca, 1 botao e nas propriedades do botao por:

procedure TForm1.FormCreate(Sender: TObject);

var //quando se tem variaveis, elas ficam antes do primeiro begin

txt: TStringList;

i: integer;

begin

txt := TStringList.Create;

txt.LoadFromFile('c:\temp.txt'); //abre o arquivo

for i:=0 to txt.Count -1 do

if Pos(edit1.Text,txt)>0 then //edit1.text é a palavra que você procura

begin

showmessage('existe palavra');

exit;

end;

txt.Add(edit1.Text); //adiciona palavra

txt.SaveToFile('c:\temp.txt'); //salva arquivo

showmessage('palavra adicionada');

txt.Free;

end;

Link para o comentário
Compartilhar em outros sites

  • 0
Pois é, to tentando ir aos poucos consertando.. a principio achei que bastava criar um campo de busca, 1 botao e nas propriedades do botao por:

Voce está no caminho certo ... entretanto voce deve usar este código em um botão e não no evento OnCreate do Form

procedure TForm1.Button1Click(Sender: TObject);
var //quando se tem variaveis, elas ficam antes do primeiro begin
   txt: TStringList;
   i: integer;
begin
   txt := TStringList.Create;
   txt.LoadFromFile('c:\temp.txt'); //abre o arquivo

   memo1.Clear;
   memo1.Lines.LoadFromFile('c:\temp.txt'); //abre o arquivo

   for i:=0 to txt.Count -1 do
      if Pos(edit1.Text,txt[i])>0 then //edit1.text é a palavra que você procura
         begin
            showmessage('existe palavra');
            exit;
         end;
   txt.Add(edit1.Text); //adiciona palavra
   txt.SaveToFile('c:\temp.txt'); //salva arquivo
   showmessage('palavra adicionada');

   txt.Free;
end;

OBS: Adicionei um componente memo para voce poder visualizar o conteudo do arquivo Txt.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Falta pouco ^^

Preste atencao na linha:

procedure TForm1.FormCreate(Sender: TObject);

Significa que está no evento OnFormCreate, será executado quando o form for criado.

Agora, faça o seguinte: abra novamente o delphi, vá em File > New Application, coloque um TEdit no form e um TButton, dê dois cliques no TButton, apague a segunda linha ("begin"), e coloque este código:

var //quando se tem variaveis, elas ficam antes do primeiro begin
  txt: TStringList;
  i: integer;
begin
  txt := TStringList.Create;
  txt.LoadFromFile('c:\temp.txt'); //abre o arquivo
  for i:=0 to txt.Count -1 do
    if Pos(edit1.Text,txt[i])>0 then //edit1.text é a palavra que você procura
    begin
      showmessage('existe palavra');
      exit;
    end;
  txt.Add(edit1.Text); //adiciona palavra
  txt.SaveToFile('c:\temp.txt'); //salva arquivo
  showmessage('palavra adicionada');

  txt.Free;

Editado por Pimpao
Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal deu certo! so falta alguns detalhes que estou tentando mudar, alguns já consegui, outros não:

1. da maneira que voces colocaram eu tenho que criar manualmente o arquivo c:\temp.txt para ele usar como lista, tem como o programa criar esse arquivo automaticamente no seu primeiro uso? outra duvida em relacao a esse txt, tem como colocar um botao para quando clicar ele abrir esse txt?

2. no campo onde eu digito a palavra que quero buscar, apos clicar no botao "buscar" a palavra digitada continua la no campo de pesquisa, tem como apos eu clicar no botao "buscar" da um clear na palavra e o campo ficar limpo para uma nova pesquisa?

3. tem como eu não precisar clicar no botao buscar para ele realizar a busca? tipo, dar um enter e ele entender como se fosse um clique no botao "buscar"?

mais uma vez pessoal muito obrigado pela paciencia, quando finalizar tudo posto o codigo para todos.

Editado por silvanirms
Link para o comentário
Compartilhar em outros sites

  • 0

1. Não precisa ser necessariamente esse arquivo, pode ser outro qualquer.

Abrindo o arquivo (Adicione ShellApi na clausula uses):

Coloque um novo botao, como você mesmo falou, e coloque no OnClick:

ShellExecute(handle,'open','c:\temp.txt', '','',SW_SHOWNORMAL);
2. Na ultima linha do OnClick do botao coloque:
Edit1.Clear;
Edit1.SetFocus;
3. No evento OnKeyPress do Edit1:
if key=#13 then
  button1.click;

Editado por Pimpao
Link para o comentário
Compartilhar em outros sites

  • 0

Consegui fazer tudo, porem ainda me resta uma duvida (é a ultima!!) o resultado da busca surge em uma janela popup, tem como esse resultado aparecer no programa sem precisar abrir uma janela pra isso? (já que o resultado da busca é so para informar se o nome esta ou não no .txt) tem como na propria tela do programa aparecer a mensagem do resultado da busca ao invés de abrir uma janela pra isso??

Editado por silvanirms
Link para o comentário
Compartilhar em outros sites

  • 0

Estava tendo alguns problemas com as permissoes (alguns sistemas como o vista, geralmente apenas o administrador tem a permissao de modificar/criar um arquivo) resolvi o problema salvando o arquivo na pasta "meus documentos":

txt.SaveToFile(ExtractFilePath(ParamStr(0))+'carteiras.txt'); //salva arquivo

Editado por silvanirms
Link para o comentário
Compartilhar em outros sites

  • 0
Como faço para que o programa exiba na propria janela do programa, algo como "numero de buscas:" e mostre quantas palavras foram buscadas (podendo ate ser quantas linhas existem no arquivo .txt que foi gerado contendo as palavras que foram buscadas)

Veja como:

procedure TForm1.Button1Click(Sender: TObject);
var //quando se tem variaveis, elas ficam antes do primeiro begin
   txt: TStringList;
   i: integer;
begin
   txt := TStringList.Create;
   txt.LoadFromFile('c:\temp.txt'); //abre o arquivo

   memo1.Clear;
   memo1.Lines.LoadFromFile('c:\temp.txt'); //abre o arquivo

   Label1.Caption := 'Total de Linhas = ' + Memo1.lines.count;

   // ou  Label1.Caption := 'Total de Linhas = ' +  txt.Count;

   for i:=0 to txt.Count -1 do
      if Pos(edit1.Text,txt[i])>0 then //edit1.text é a palavra que você procura
         begin
            showmessage('existe palavra');
            exit;
         end;
   txt.Add(edit1.Text); //adiciona palavra
   txt.SaveToFile('c:\temp.txt'); //salva arquivo
   showmessage('palavra adicionada');

   txt.Free;
end;

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...