![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Плииииз. Помогите решить... Времени катастрофически не хватает....
Поиск.Разместить на форме компонентов Memo,два компонента Edit и компонет Button .Компонет Memo ипользуйте для ввода массива строк, первый компонент Edit-для задания строки поиска, второй компонет Edit-для ввода результата поиска (Yes,No).Для инициализации поиска используйте компонет Button .Используйте другие необходимые компоненты(Label и др.) |
#2
|
|||
|
|||
![]() Код:
procedure TForm1.Button9Click(Sender: TObject); begin FindDialog1.Execute; end; procedure TForm1.FindDialog1Find(Sender: TObject); var Buff,P,FT: PChar; BuffLen: Word; begin with Sender as TFindDialog do begin GetMem(FT, Length(FindText) + 1); StrPCopy(FT, FindText); BuffLen:= Memo1.GetTextLen + 1; GetMem(Buff, BuffLen); Memo1.GetTextBuf(Buff, BuffLen); P:= Buff + Memo1.SelStart + Memo1.SelLength; P:= StrPos(P, FT); if P=nil then MessageBeep(0) else begin Memo1.SelStart:= P - Buff; Memo1.SelLength:= Length(FindText); end; FreeMem(FT, Length(FindText) + 1); FreeMem(Buff, BuffLen); end; end; Последний раз редактировалось Admin, 01.05.2008 в 20:26. |
#3
|
|||
|
|||
![]() Сенкс. а как это собрать воедино?
|
#4
|
|||
|
|||
![]() |
#5
|
|||
|
|||
![]() не, это немножко не то. я так понял из условия задачи, должно присутствовать всего 3 поля ввода: 2 Edit и 1 Memo. Memo заполняется произвольным текстом, в edit1 заносится слово, которое надо найти и после нажатия на кнопку во втором поле edit будет ответ Y/N взависимости от того, присутствует ли в тексте данное слово.
|
#6
|
|||
|
|||
![]() findtext:=edit1.text; - то что ищем
|
#7
|
|||
|
|||
![]() ну это понятно вроде, но дело в том, что я не умею пока работать с объектами, классами и методами. В книгах пишут слишком трудно для восприятия. Соответственно я любой код не смогу вставить в проект так, что бы он работал....
Вам персональное сообщение.... ********** пока пришел только к этому, но поле Memo не заполняется.. Почему? Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Edit1: TEdit; Edit2: TEdit; Button1: TButton; Label1: TLabel; private public end; var Form1: TForm1; implementation {$R *.dfm} procedure InsertFileInMemo1(Memo1: TMemo; FileName: string; ReplaceSel: Boolean); var Stream: TMemoryStream; NullTerminator: Char; begin Stream := TMemoryStream.Create; try { Загружаем текст... } Stream.LoadFromFile('1.txt'); { Добавляем в конец текста терминирующий ноль... } Stream.Seek(0, 2); NullTerminator := #0; Stream.Write(NullTerminator, 1); { Вставляем текст в Memo... } if not ReplaceSel then Memo1.SelLength := 0; SendMessage(Memo1.Handle, EM_ReplaceSel, 1, LongInt(Stream.Memory)); finally Stream.Free; end; end; end. Код:
function SearchForText_AndSelect(RichEdit: TRichEdit; SearchText: string): Boolean; var StartPos, Position, Endpos: Integer; begin StartPos := 0; with RichEdit do begin Endpos := Length(RichEdit.Text); Lines.BeginUpdate; while FindText(SearchText, StartPos, Endpos, [stMatchCase])<>-1 do begin Endpos := Length(RichEdit.Text) - startpos; Position := FindText(SearchText, StartPos, Endpos, [stMatchCase]); Inc(StartPos, Length(SearchText)); SetFocus; SelStart := Position; SelLength := Length(SearchText); end; Lines.EndUpdate; end; end; procedure TForm1.Button1Click(Sender: TObject); begin SearchForText_AndSelect(RichEdit1, 'Some Text'); end; ...Уже битый час ломаю голову... Последний раз редактировалось Iljusha, 01.05.2008 в 03:23. |
#8
|
|||
|
|||
![]() Большая просьба не игнорировать... Для профи - дело 5и минут, ддля новичка - неделя изучения литературы.. А сдавать уже завтра..
"Подтолкните" хотя бы в нужном направлении.. ![]() |
#9
|
||||
|
||||
![]() Цитата:
|
#10
|
|||
|
|||
![]() ...Человек помочь хотел...
Последний раз редактировалось Iljusha, 02.05.2008 в 07:03. |
#11
|
|||
|
|||
![]() вобщем я вот так сделал. Думаю тему можно закрывать:
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Edit1: TEdit; Edit2: TEdit; Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public function ListContained(st: string; StList: TStrings): boolean; end; var Form1: TForm1; implementation {$R *.dfm} function Tform1.ListContained(st: string; StList: TStrings): boolean; var i: longint; begin result := false; for i := 0 to StList.Count - 1 do if St = StList.Strings[i] then begin result := true; break end end; procedure TForm1.Button1Click(Sender: TObject); var ss:boolean; a:string; begin a:=Edit1.Text; ss:=ListContained(a, Memo1.Lines); if ss=TRUE then begin Edit2.Text:='Yes'; end Else Edit2.Text:='No'; end; end. |