Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.21;
Скачать: CL | DM;

Вниз

Прога поиска подстроки в строках и с исключениями   Найти похожие ветки 

 
kaZaNoVa ©   (2006-12-27 19:42) [0]

Просьба покритиковать ;)


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.



 
kaZaNoVa ©   (2006-12-27 19:45) [1]

и это ... ищу функцию для lowercase понимающую русский язык ;) вот)


 
Kerk ©   (2006-12-27 19:47) [2]

> [1] kaZaNoVa ©   (27.12.06 19:45)

ansilowercase


 
oldman ©   (2006-12-27 19:48) [3]


> 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;


Что обязательно вот так вот выпендриваться?


 
kaZaNoVa ©   (2006-12-27 19:54) [4]

oldman ©   (27.12.06 19:48) [3]
а в чем, на Ваш взгляд минус такой реализации?

Kerk ©   (27.12.06 19:47) [2]
thnx. fixed.


 
oldman ©   (2006-12-27 19:56) [5]


> kaZaNoVa ©   (27.12.06 19:54) [4]
> oldman ©   (27.12.06 19:48) [3]
> а в чем, на Ваш взгляд минус такой реализации?


тем, что вместо вызова функции можно этот if и вставить...


 
kaZaNoVa ©   (2006-12-27 20:01) [6]

oldman ©   (27.12.06 19:56) [5]
имхо в ввиде функции красивее смотрицо)

но интересно, падает ли тут производительность ....


 
kaZaNoVa ©   (2006-12-27 20:03) [7]

и вопрос про a: array[1..70000] of string; почему-то слишком большие числа компилятор отказывался компилить .. остановился на 70К ..:)


 
oldman ©   (2006-12-27 20:04) [8]


> kaZaNoVa ©   (27.12.06 20:01) [6]
> oldman ©   (27.12.06 19:56) [5]
> имхо в ввиде функции красивее смотрицо)


Ага

c:=summ(a,b);

function summ (integer a,b);
Result:=a+b;
end;


 
Palladin ©   (2006-12-27 20:04) [9]

и прямо так ничего и не сказал? просто грит не буду, у меня сегодня критические дни?


 
kaZaNoVa ©   (2006-12-27 20:06) [10]

Palladin ©   (27.12.06 20:04) [9]
не он что-то некультурное по англ написал .. типа ненравится ему ..


 
Palladin ©   (2006-12-27 20:07) [11]

ааа... это другое дело.


 
kaZaNoVa ©   (2006-12-27 20:10) [12]

Palladin ©   (27.12.06 20:07) [11]
что-то типа такого:
[Error] Project1.dpr(10): Ordinal type required

как побороть-не знаю


 
Palladin ©   (2006-12-27 20:12) [13]

так это ты парень где то что то не правильно написал, и дело совсем не в 70000 ...


 
kaZaNoVa ©   (2006-12-27 20:14) [14]

Palladin ©   (27.12.06 20:12) [13]
ага, это если написать 7000000000000


 
Palladin ©   (2006-12-27 20:16) [15]

нууу в win32 теоретически процесс может захватить 4gb, практически чуть более 2gb

вот и думай сколько ноликов ты понабрал...


 
Palladin ©   (2006-12-27 20:18) [16]

забыл добавить... ординал тайпом в d32 считается число в пределах 0-2^32
либо соответствущего размера со знаком...

считай нолики короче


 
kaZaNoVa ©   (2006-12-27 20:28) [17]

Palladin ©   (27.12.06 20:18) [16]
зато я смог добицца такой ошибки:))))
;)


 
Anatoly Podgoretsky ©   (2006-12-27 20:40) [18]

> kaZaNoVa  (27.12.2006 20:06:10)  [10]

И он тебя послал, а ты направление забыл спросить.


 
kaZaNoVa ©   (2006-12-28 18:12) [19]

а что еще мона сделать?



Страницы: 1 вся ветка

Текущий архив: 2007.01.21;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.058 c
15-1167205213
zdm
2006-12-27 10:40
2007.01.21
Творческий кризис


2-1167305531
vain
2006-12-28 14:32
2007.01.21
Сообщение о закрытии от Винды.


2-1167761699
zol
2007-01-02 21:14
2007.01.21
В чем ошибка?


5-1147098886
Dstr
2006-05-08 18:34
2007.01.21
RichWiev


2-1166453234
Chuk & Gek
2006-12-18 17:47
2007.01.21
запуск только одной копии приложения