Ol=E1,
Quero reformular o modo como o Notes SE 2004 faz pesquisas e pra isto
preciso de uma classe de pesquisas como a que iniciei abaixo. O Joelson
tinha ficado mais ou menos com vontade de fazer isto, mas como naum pude
encontr=E1-lo no icq hoje, estou enviando pra lista pra ver se ele que=20
implemnta
ou tem mais gente interessada. Bom, quem tiver a fim de escrever a classe=
,
me avise...
Acho q poderemos reaproveitar esta classe pro Notes 2, se ela ficar legal=
...
Eu esqueci de colocar a parte de substitui=E7=E3o nela... mas depois se =
v=EA :)
Ab.
Anderson
--------------------------
|*unit *NotesSeeker;
*interface
uses *classes;
*Type
*/{
record TNSFindInfo
Cont=E9m informa=E7=F5es completas sobre um resultado de busca.
- Pos: posi=E7=E3o em que o termo foi encontrado.
- Line: linha em que o termo foi encontrado.
- Context: string que mostra o contexto em que estava
o termo encontrado. Deve mostrar os 10 caracteres que
estavam =E0 esquerda do termo, o termo, mais os 20 caracteres
a direita dele. Ex: "Este =E9 o contexto de uma busca feita"
(onde contexto =E9 o termo buscado).
}
/TNSFindInfo =3D *record
*Pos: integer;
Line: integer;
Context: *string*;
*end*;
/{
Class TNotesSeeker
Permite fazer buscas em strings com v=E1rias op=E7=F5es.
}
/TNotesSeeker =3D *class*(TObject)
*private
*FWholeWordsOnly: boolean;
FCaseSensitive: boolean;
FBackward: boolean;
FWildCard: boolean;
FStartAtChar: integer;
FText: *string*;
FSearchStr: *string*;
*public
constructor *Create;
/{ Apenas palavras inteiras como resultado. }
/*property *WholeWordsOnly: boolean *read *FWholeWordsOnly *write *FW=
holeWordsOnly;
/{ Diferencia mai=FAsculas/min=FAsculas se true. }
/*property *CaseSensitive: boolean *read *FCaseSensitive *write *FC=
aseSensitive;
/{ Busca de traz para frente. }
/*property *Backward: boolean *read *FBackward *write *FB=
ackward;
/{ Se true, aceita os coringas '*' (qualquer string) e '?' (qualquer =
caracter). }
/*property *WildCard: boolean *read *FWildCard *write *FW=
ildCard;
/{ Caracter onde a busca deve ser inciada. Ap=F3s uma busca
=E9 automaticamente setado para a posi=E7=E3o em que o termo foi en=
contrado. }
/*property *StartAtChar: integer *read *FStartAtChar *write *FS=
tartAtChar;
/{ Texto em que a busca ser=E1 realizada. }
/*property *Text: *string read *FText *write *FT=
ext;
/{ Termo a ser buscado no texto, contendo ou n=E3o wildcards. }
/*property *SearchStr: *string read *FSearchStr *write *FS=
earchStr;
/{ Permite setar todas as op=E7=F5es numa =FAnica linha de c=F3digo. =
}
/*procedure *SetAllOptions(*const *AText, ASearchStr: *string*; *cons=
t *AStartAtChar: integer;
*const *AWholeWordsOnly, ACaseSensitive, ABackward, AWildCard: bo=
olean);
/{ Procura a pr=F3xima ocorr=EAncia do termo e retorna a posi=E7=E3o =
em
que ele foi encontrada. Se n=E3o encontrada, retorna -1. }
/*function *FindNext: integer;
/{ O mesmo que FindNext, mas retorna o record TNSFindInfo com
v=E1rias informa=E7=F5es sobre o termo localizado. }
/*function *FindNextEx: TNSFindInfo;
*end*;
*implementation
*/{ TNotesSeeker }
/*constructor *TNotesSeeker.Create;
*begin
inherited *Create;
FStartAtChar:=3D -1;
FWholeWordsOnly:=3D False;
FCaseSensitive:=3D False;
FBackward:=3D False;
FWildCard:=3D False;
*end*;
*function *TNotesSeeker.FindNext: integer;
*begin
*///
/*end*;
*function *TNotesSeeker.FindNextEx: TNSFindInfo;
*begin
*///
/*end*;
*procedure *TNotesSeeker.SetAllOptions(*const *AText, ASearchStr: *string=
*;
*const *AStartAtChar: integer; *const *AWholeWordsOnly, ACaseSensitive,
ABackward, AWildCard: boolean);
*begin
*FText:=3D AText;
FSearchStr:=3D ASearchStr;
FStartAtChar:=3D AStartAtChar;
FWholeWordsOnly:=3D AWholeWordsOnly;
FCaseSensitive:=3D ACaseSensitive;
FBackward:=3D ABackward;
FWildCard:=3D AWildCard;
*end*;
*end*.
|
--------------------------
|