![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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. |