Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.044 c
2-1167894683
worldmen
2007-01-04 10:11
2007.01.21
Установка 2-х Delphi.


2-1167737845
zol
2007-01-02 14:37
2007.01.21
посчитать sin , cos в Delphi


15-1167520705
Petr V. Abramov
2006-12-31 02:18
2007.01.21
Для поддержки сушествующего настроения конференции :)))


2-1166953260
FBI Agent
2006-12-24 12:41
2007.01.21
Шифрование текста в ini-файле


2-1167194715
karton
2006-12-27 07:45
2007.01.21
Как нарисовать на форме поверх всех контролов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский