Palavras reservadas
30/04/2003
0
Tipo,tenho uma lista(300) palavras de tamanho entre 2 e 11 caracteres
que vão ser digitadas no edit(uma a uma) e preciso que se verifique se é uma palavra de minha lista(+ ou - igual ao que o Delphi faz quando digitamos um código).Ex,eu teria a palavra CODIGO e LETRA reservada
se fosse digitado CODIGOLETRA o programa não aceitaria.
Kroki
Posts
30/04/2003
Rebel_inside
procedure TForm1.Button1Click(Sender: TObject); var l: TStringList; i: Integer; ok: Boolean; begin l:= TStringList.Create; // Carregue aqui a lista das suas palavras // ex: l.LoadFromFile(´reservedwords.txt´); ok:= True; try for i:= 0 to l.Count-1 do begin if (pos(AnsiUpperCase(l[i]), AnsiUpperCase(Edit1.Text))>0) then begin ok:= False; Break; end; end; if (ok) then begin // Não encontrou nenhuma palavra, então faz o que tem que ser feito end else begin ShowMessage(´Contém palavra inválida!´); end; finally FreeAndNil(l); end; end;
30/04/2003
Kroki
Veja,fiz um teste com seu código,criei um TXT com duas palavras;
ld
lddr
Quando digito ´ld´ o codigo acha a palavra,o mesmo acontece com lddr,
mas se eu digitar´lddrxyx´ele tambem reconhece a palavra e isso nao pode acontecer,queria algo como o Delphi faz quando vc ta digitando ´string´e ele deixa em negriro(reconhece) mas se vc digitar ´stringx´ele nao reconhece.
OBS:minhas palavras nao tem tamanho definido,o menor é 2 digitos e o maior 11.
30/04/2003
Aroldo Zanela
Eu já dei essa dica anteriormente, mas acho que foi mal interpretada por outro colega e acabou lhe desistimulando. Mas vamos lá novamente, existe um conjunto de componentes freeware (Open-Souce) denominado de SynEdit. Ela faz exatamente isso e já tem analizadores léxico e sintático para diversas linguagens, como: SQL, ObjectPascal, Java, 68HC11 Assembler e mais de uma dezena de outras.
Dá uma olhada aqui: http://synedit.sourceforge.net/
Clique aqui para fazer login e interagir na Comunidade :)