[Notes2-team] Classe de pesquisas
Brought to you by:
andersonrb
From: Anderson R. B. <no...@ig...> - 2003-11-09 04:17:10
|
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*. | -------------------------- |