![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск фрагментов строки и фрагментов слова. [D7, Win95/98, WinME, NT4, Win2k, WinXP]
Moholith © (2007-01-12 22:37:00)Товарищи по сети!
Как организовать поиск символа или нескльких символов из строки? И как выбирать фрагмменты ,ограниченные срого определенными символами, из строки?
Зарание благодарен!
Moholith (2007-01-13 17:27:00) [1]Спасибо всем!
TUser (2007-01-13 13:26:00) [2]http://algolist.manual.ru/search/index.php
kaZaNoVa (2007-01-12 23:32:00) [3]
program Project1; //Прога поиска подстроки в строках и с исключениями.
uses SysUtils, windows;
const
fVvod = 'log.txt';
fSearch = 'Search.txt';
fResult_y = 'Result_yes.txt';
fResult_n = 'Result_not.txt';
var
f_inData, f_Search, f_Result_y, f_Result_n: textfile;
a: array[1..70000] of string;
info: string; l, k, n, h, p: int64;
{$R *.res}
function CompareSearch: Boolean;
var f: integer;
begin
Result := True;
for f := 1 to l do if pos(lowercase(a[f]), lowercase(info)) > 0 then exit;
Result := False;
end;
begin
if not (FileExists(fVvod) and FileExists(fSearch)) then
begin
MessageBox(0, 'Нет файлов ввода данных'#13#10#13#10 + fVvod + #13#10 + fSearch, 'Ошибка работа программы невозможна', 0);
Halt(1);
end;
p := gettickcount;
QueryPerformanceFrequency(h); // HiTicks / second
QueryPerformanceCounter(k);
AssignFile(f_inData, fVvod);
AssignFile(f_Search, fSearch);
AssignFile(f_Result_y, fResult_y);
AssignFile(f_Result_n, fResult_n);
Reset(f_Search);
l := 0;
while (not eof(f_Search)) do begin
inc(l);
Readln(f_Search, a[l]);
end;
CloseFile(f_Search);
Reset(f_inData);
ReWrite(f_Result_y);
ReWrite(f_Result_n);
while (not eof(f_inData)) do begin
Readln(f_inData, info);
if CompareSearch then Writeln(f_Result_y, info) else Writeln(f_Result_n, info);
end; //info
CloseFile(f_inData);
CloseFile(f_Result_y);
CloseFile(f_Result_n);
QueryPerformanceCounter(n);
MessageBox(0, 'Готово', Pchar(Inttostr(gettickcount - p) + ' ms (' + (Inttostr(round(1000000 * (n - k) / h))) + ') microsec'), 0);
end.
Eraser (2007-01-12 23:23:00) [4]
> Moholith (12.01.07 22:37)
копай в сторону регулярных выражений.
preg_match поможет :-)
Johnmen (2007-01-12 23:00:00) [5]Нахальный ламер тебе товарищ!
:)))