Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на Delphi

Выпуск № 117
от 23.12.2002, 19:30

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 375
Отправлено ответов: 717
Активность: 191.2 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

vitya
Статус: Профессиональный
Общий рейтинг: 108.16
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 116.57
URL: Пристанище неодинокого программиста
[Подробней >>]
Idle Sign
Статус: Опытный
Общий рейтинг: 150.51
URL: Blind Team
[Подробней >>]
 
toshka
Статус: Начальный
Общий рейтинг: 113.63
[Подробней >>]
Vadim
Статус: Доверительный
Общий рейтинг: 144.32
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 367. Вопрос такой... Нужно в заданном каталоге найти в файлах все e-mail адресу, ну в общем name@domain.... (ответов: 4)
Вопрос № 368. Доброе время дня или ночи. У меня написан такой код для дезасемблирования файла(см. приложение). В ф... (ответов: 2)

Вопросов: 2, ответов: 6


 Вопрос № 367

Вопрос такой...
Нужно в заданном каталоге найти в файлах все e-mail адресу, ну в общем name@domain.ru, мои знания кончаются на том, как уже файл найден и открыт на чтение... как поиск организовать? ведь адреса могут быть и типа name@.cor.uk.net.org... и как быстрее высти поиск, потоком считывать, и по строково через readln?



Вопрос отправлен: 18.12.2002, 22:01
Отправитель: Ландграф Павел

[Следующий вопрос >>] [Список вопросов]

Отвечает vitya

Приветствую Вас, Ландграф Павел!
В зависимости от того, какого формата твои файлы алгоритмы могут быть разными.
Если известно, что переносов быть не может - то есть не может оказаться так, что часть адреса на одной строке, а чать на другой, тогда все просто:
считываешь строку. - readln подойдет и ищешь в ней собачку (@).
0. определяешь множество допустимых символов (a..z, A..Z, 0..9, ., _).
1. i := index_of_@;
2. j := i - 1;
3. while (j > 0 && str[j] in nameSet) do
dec(j);
//тут ты уже найдешь начало майла.
Потом аналогичным способом делаешь поиск домейна.
Кроме того, нужно добавить проверку на ошибки и т.д., но это уже мелочи.


Ответ отправлен: 19.12.2002, 14:23
Отправитель: vitya


Отвечает Артём Шегеда

Приветствую Вас, Ландграф Павел!

По-моему, нахождение e-mail адресов в строке - задача элементарная:
1. Читаем строку.
2. Находим в ней символ "@"
3. "Отматываем" назад строку до разделителя (не буква, не цифра, не "_", не "-", не "." - только такие символы можно использовать для имени адресата)
4. Сканируем после "@" до разделителя (те же символы)

Должно получиться что-то вроде такого:

Приложение:

Ответ отправлен: 19.12.2002, 12:21
Отправитель: Артём Шегеда


Отвечает Idle Sign

Здравствуйте, Ландграф Павел!
===== Pro bono publico, no bloody panico! =====
Рассуждая логически: раз уж в адресе нет пробелов, значит нужно шерстить все выражения между пробелами на предмет наличия в них @. Плюс исключения, такие как возможность наличествования после адреса точки, зпт и др. знаков припинания и символов (они, как известно, пишутся слитно с предыдущим текстом). Поиск производится методом Find. На счет того что быстрее: это не принципиально.
Еще: лично я бы предпочел работу с TStringList.

Ответ отправлен: 19.12.2002, 11:42
Отправитель: Idle Sign


Отвечает toshka

Здравствуйте, Ландграф Павел!
Попробуй приложение. Идея такая: загружаем файл в память, сканируем буфер пока не найдем символ @, затем от позиции этого символа производим обратное сканировние на разрешенные символы (буквы англиского алфавита, подчеркивание и тире, точки). Аналогичным образом производим сканирование вперед, чтобы получить домен и помещаем все в ListBox

Приложение:

Ответ отправлен: 19.12.2002, 11:50
Отправитель: toshka


 Вопрос № 368

Доброе время дня или ночи. У меня написан такой код для дезасемблирования файла(см. приложение). В файле встречается комбинация из 3 Hex-цифр
адрес код
05 CD
06 3E
07 09
08 С3
СD(205) соответствует ассемблерному оператору CALL, а две последние цифры это адрес перехода, т.е. СALL 093E.С3 - JMP. Так вот определить в ходе дезасемблирования Hex-цифру соответствующую оператору CALL мой код может, но далее необходимо взять вначале 09, а затем 3E. После нужно перейти к следующей команде, т.е. к адресу 08. Также нужно запомнить эту метку перехода и там где этот адрес совпадает c меткой нужно эту метку поставить (пример желательно c Memo).
Не могу сделать чтобы по нажатию клавиши 'Дезасемблировать' выдавалось предупреждение если файл еще не открыт.


Приложение:


Вопрос отправлен: 20.12.2002, 16:00
Отправитель: bogdan

[Следующий вопрос >>] [Список вопросов]

Отвечает Idle Sign

Добрый день, bogdan!
===== Pro bono publico, no bloody panico! =====
Неужели Ульфак также у кого-то спрашивал...
1) для команды безусловного перехода тебе тоже придется кой-чего накорябать, а то программа не будет знать, что вызов закончен, далее
2) обращайся к следующим байтам (e.g. i+1), обратным порядком в цикле (а можешь сдвинуть)
3) заведи переменную, где хранится метка/ее адрес
4) ну, так ты проверь, есть ли в мемо что-нибудь, и будет тебе предупреждение

Ответ отправлен: 22.12.2002, 12:26
Отправитель: Idle Sign


Отвечает Vadim

Доброе время суток, bogdan!
1. С помощью операции сдвига:
var
a, b: word;
a:=$09;
b:=$3e;
a:=(a shl 8) + b;
т.е. сдвинуть число $09 влево на 8 позиций и прибавить $3e.
2. А ты не пробовал дизассемблировать файл который уже открыт (например, с помощью AssignFile(f, 'file.ext'); Reset(f);) или диалога открытия файла? Тогда и проверять не надо :)).


Ответ отправлен: 21.12.2002, 12:44
Отправитель: Vadim



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (39)
C / C++ (30)
Perl (5)
Delphi (21)
Pascal (23)
Basic / VBA (10)
Java / JavaScript (6)
PHP (4)
MySQL / MSSQL (5)
Пользователю
Windows 95/98/Me (32)
Windows NT/2000/XP (27)
"Железо" (32)
Поиск информации (14)
Администратору
Windows NT/2000/XP (10)
Linux / Unix (14)
Юристу
Гражданское право (8)
Семейное право (3)
Трудовое право (5)
КоАП (2)

Отправить вопрос всем экспертам выбранной рассылки.




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное