книги хакеры / журнал хакер / 051_Optimized
.pdf
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|
|
|
|
|
|||
|
|
|
X |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
|
|
|
|
|
|
||
|
|
F |
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
||
|
P |
|
|
|
|
|
NOW! |
o |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
to |
BUY |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
w Click |
|
|
|
|
|
m |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
|
|
|
|
|
|
||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
|
|
|
|
|
|
||
|
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|
||
P |
|
|
|
|
|
NOW! |
o |
|
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
|
||||
|
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
.c |
|
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
|
||
|
|
|
|
-x cha |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
|
|
|
|
|
|
|
|
|
|
ICQ |
|
|
|
|
|
||||||||||||||
|
|
|
|
|
e |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||||
|
|
|
|
C |
|
|
E |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
|
X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
|
d |
|
|
|
|
|
|
|
|
|
|
|
|
- |
|
|
|
|
|
d |
|
|||||||
|
|
F |
|
|
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
|
|
|
|
F |
|
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
|||||
P |
|
|
|
|
|
|
NOW! |
o |
|
|
|
|
|
|
|
|
|
|
P |
|
|
|
|
|
NOW! |
o |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
w |
Click |
to |
BUY |
|
|
|
|
|
|
m |
Кодинг |
|
|
|
|
|
|
|
|
w Click |
to |
BUY |
|
|
|
|
|
m |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
|
o |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
g |
.c |
|
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
g |
.c |
|
|||||||
|
|
|
p |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
|
df |
|
|
|
n |
e |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ВЗГЛЯД НА ICQ ИЗ DELPHI |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
Dr.Zlobyus (cool16@e-mail.ru) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
Взгляд |
íà |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
èçDelphi |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
Популярность |
ICQ все никак не падает, а наоборот, |
идет огромный поток новых пользователей |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
. И если несколько лет назад для ICQ существовал |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
(русские же сидят обычно на шестизначках) |
|
|
AOL), то теперь их |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
только один официальный клиент |
от умершей нынче Mirabilis (ее поглотила |
÷åìó |
ÿ ýòî âñå? :) |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
. Ê |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. И, причем, под любую ось, будь то винды, маки |
или никсы |
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
ïðóä |
пруди |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
Просто и мы сегодня напишем своего |
клиента, пусть не супернавороченного, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
-mail.ru) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dr.Zlobyus (cool16@e |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ты уже заинтересовался? |
Отлично, сейчас я быстренько введу тебя в курс дела. |
ß äàâ- |
||||||||||||
- |
||||||||||||||
но хотел разработать |
собственный ICQ-клиент, но все времени |
не было, да и трудоем |
||||||||||||
|
|
|
|
|
кодом и т.п. Но потом мне в руки по- |
|||||||||
ко это - не хотелось геморроиться с громоздким |
|
|
|
предвкушением |
я установил |
|||||||||
пались два компонента для работы с ICQ. С радостным |
||||||||||||||
|
|
|
. Íî âòî- |
|||||||||||
|
. За его использование требовали немало буказоидов |
|
||||||||||||
один из них и обломался |
|
Прочитав инфу, которая и тебе станет доступной |
чуть позже, |
|||||||||||
рой оказался бесплатным! |
|
|
||||||||||||
|
. Компонент |
TICQClient оказался очень хорошим |
||||||||||||
я понял, что это именно то, |
||||||||||||||
что нужно |
клиента. Он включает все необходимые |
|||||||||||||
инструментом для создания |
полноценного(!!!) |
|||||||||||||
|
. Качай |
|
.cobans.net/ è |
|||||||||||
|
|
|
|
|
|
åãî ñ http://www |
|
|
- |
|||||
возможности и при этом прост в использовании |
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
. Заметь, |
что к компо |
|||
. На данном этапе проблем возникнуть не должно |
|
|
|
|||||||||||
устанавливай |
|
|
|
|
|
|
|
|
|
. Îäèí èç íèõ è åñòü ïî÷- |
||||
ненту прилагается ФАК на русском языке, а также |
два примера |
|
|
|
||||||||||
|
|
|
. Обязательно взгляни на него. Там же ты найдешь и инфу |
|||||||||||
ти полноценный ICQ-клиент |
|
вещам. |
|
|
|
|
|
|||||||
по компоненту, протоколу и другим полезным |
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
Рождаем Асю |
|
|
делать нечто большее. Помнишь, Х писал |
|
|||||||||||||
Итак, раз клиент у тебя есть, тогда научимся |
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
ïî èõ |
|
|||||||
о программе, которая умела рассылать |
сообщения, находя нужных пользователей |
|
|
|
|||||||||||||
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
инфе? Об этом мы сейчас и поговорим |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
Что делает наша тулза: |
|
|
|
|
|
|||||||
|
|
|
|
|
1) Дает возможность выбирать различ- |
|
|||||||||||
|
|
|
|
|
ные параметры поиска (для примера я |
|
|||||||||||
|
|
|
|
|
взял два: страна и возраст - этого хватит). |
|
|||||||||||
|
|
|
|
|
2) Дает возможность |
ввести сообщение с |
|
||||||||||
|
|
|
|
|
|
|
|
|
. |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
последующей вставкой туда ника жертвы |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
|
3) Ищет/рассылает |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
|
|
|
|
|
|
Готов? Поехали |
|
|
|
|
|
|
|
|||||
|
|
|
|
|
Первым делом создай новый проект и |
|
|||||||||||
|
|
|
|
|
кинь на него компоненты, расположенные |
|
|||||||||||
|
|
|
|
|
как на скриншоте 1. |
|
|
|
|
|
|
||||||
|
|
|
|
|
Edit’ы называй: LoginEdit, |
PasswordEdit, |
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
|
CountEdit и MessageEdit, соответственно |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
|
Два компонента TComboBox так и оставь |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
. И самое |
|
|||
|
|
|
|
|
Теперь добавь кнопку и TMemo |
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
. Все. Получилось? |
|
|||||
Так выглядит будущая программа |
|
|
главное - TICQClient |
|
|
|
|
|
|||||||||
|
|
Отлично. |
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Подводные камни |
|
первая и самая важная - при |
|||||||||||||||
Создавая эту программу, я столкнулся с рядом трудностей: |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|||||||||
поиске пользователей |
мы обращаемся непосредственно |
к серверу ICQ, а он работает |
|||||||||||||||
|
|
как ты искал |
пользователей |
||||||||||||||
|
|
|
|
|
|
|
|||||||||||
|
. Каждый раз выдает не все UIN’ы (вспомни, |
|
|
|
|
|
|||||||||||
очень странно |
|
|
|
уже совсем другие |
(на самом деле частенько |
||||||||||||
в своей |
аське), а при повторном поиске - |
|
|
|
|
|
|
- |
|||||||||
бывает |
так, что в результате поиска найдено |
очень много пользователей, |
поэтому сер |
||||||||||||||
|
|
|
они не повторялись |
- ïðèì. |
|||||||||||||
вер и выдает разные юины, чтобы при |
следующем поиске |
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
ред.). Т.е. нам придется самим задавать |
примерное количество поисковых сеансов, да |
|
. |
||
еще и отфильтровывать дубликаты! |
Второе - задание мессаги. Об этом позже |
|
|
|
Поехали! |
TICQClient. В поле ICQServer и ICQPort введи |
login.icq.com |
|||||||||||||||||||||||||
Открой свойства компонента |
|||||||||||||||||||||||||||
|
|
|
|
÷òî- |
|||||||||||||||||||||||
|
|
|
. Теперь исправь поле VAR перед кодом, чтобы получилось |
|
|
|
|||||||||||||||||||||
и 5190 соответственно |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
то вроде: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Form1: TForm1; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
UinS,NickS: TStringList; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
Здесь мы создаем два строковых списка. Зачем |
они нужны, ты узнаешь позже. Теперь |
||||||||||||||||||||||||||
|
|
|
. |
|
|
|
|
|
|
|
|
|
|||||||||||||||
мы напишем несколько |
функций, с которыми будем работать |
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
Поиск |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. Работает она очень |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
Эта функция |
будет необходима для проверки UIN’ов на дубликаты |
|
|
|
списке |
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
с полученными ранее в |
|||||||||||||
просто: |
получая нового пользователя, мы сравниваем |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
список (NickS) пишем ник. Глянь |
|||||||||||||
UinS. Если его там нет, то добавляем его, а во второй |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
на Листинг 1, там все предельно |
ÿñíî. |
|
|
|
|
|
|
|
|
|
. Нам будут нужны |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
Теперь я должен задержаться на моменте добавления |
новых строк |
|
|
|
|
|
- |
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
. Я просто загоняю их в два списка и потом обраща |
||||||||||||||||||
ник и юин для отправки сообщений |
|
|
|
|
|
|
|
|
|
|
вернет (точнее, за- |
||||||||||||||||
юсь непосредственно |
к ним. Если в инфе не указан ник, то функция |
|
|
|
|
|
|
|
|||||||||||||||||||
для удобства. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
пишет) *. Это просто |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
Изменение сообщения |
|
|
|
|
в новый, с |
||||||||||||||||||||||
Эта функция необходима для преобразования |
текста |
в твоем MessageEdit |
|||||||||||||||||||||||||
|
|
|
â ìåñ- |
||||||||||||||||||||||||
|
|
проверку на вставленные |
|||||||||||||||||||||||||
учетом ника. Для примера в этой |
программе я сделал |
|
íèê |
||||||||||||||||||||||||
|
такое сочетание |
будет заменено на реальный |
|||||||||||||||||||||||||
садж «$Nick» - каждое найденное |
|
||||||||||||||||||||||||||
|
|
|
|
|
этом месте |
автор имел в виду ис- |
|||||||||||||||||||||
пользователя, |
которому отправляется сообщение (в |
|
|
|
|
«Привет, |
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. К примеру: |
||||||||||||
пользование небольшого регулярного |
выражения - прим. ред.) |
|
|
|
|
|
|
|
|
||||||||||||||||||
$NICK». Этот код смотри в Листинге 2. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
Основной кодинг |
|
|
|
|
поиска: добавить еще |
||||||||||||||||||||||
Теперь мы |
почти готовы, осталось только объявить параметры |
||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
из модуля ICQWorks, который необходимо |
дописать в раздел uses твоей |
|||||||||||||||||||||||||
три функции |
|
критерии (Листинг 3). Там |
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
. Две функции создают в ComboBox1 возрастные |
|
|
|
|
|
|
|
|
|
||||||||||||||||
программы |
|
|
|
|
|
|
|
|
. Теперь создай обработчик события OnCreate у |
||||||||||||||||||
все очень просто, так что |
я промолчу |
|
|
Все! Приготовления окончены! |
|
|
|
|
|||||||||||||||||||
формы. Впиши туда содержимое |
Листинга 4. |
|
|
|
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. Вставляй |
туда Листинг 5. Что мы |
||||||||||
Создай обработчик события OnClick у первой кнопки |
|
серваку. |
Теперь |
|
создавай |
||||||||||||||||||||||
там делаем: берем наш |
юин и пароль, |
коннектимся к |
|
||||||||||||||||||||||||
Листинга 6. Осталось только добавить код |
|||||||||||||||||||||||||||
ICQClient OnLogin è ïèøè |
туда содержимое |
||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
для обработчика события OnUserFound |
компонента ICQClient1: |
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
Работаем-с, господа...
if Nick=’’ then //если Ника нет, то мы будем вставлять «*» SearchList(Uin, ‘*’) else
SearchList(Uin, Nick); //здесь мы начинаем проверку на дубликаты
Завершение
Вот и все! Теперь ты получил быстро работающую программу. Немного доработай ее, и получишь отличную софтину, которая даст тебе возможность похвастаться перед друзьями и быстро разослать тонну спама. Хочу лишь заметить, что не стоит увлекаться массовой рассыл- кой... Помни: этот пример не для засорения Сети. Удачи!
Листинг 1 |
|
|
|
|||||
|
function |
|
|
|
|
|
||
|
|
|
SearchList(SUin:string; SNick:string):string; |
|
||||
var j:integer; |
|
|
|
|
||||
|
flag: |
boolean; //эта переменная нам нужна для |
определения дубликата |
|||||
begin |
|
|||||||
|
|
|
|
|
||||
flag:=true; |
|
|
|
|
||||
for j:=0 to UinS. |
|
|
|
|||||
begin |
|
|
|
Count-1 do //перебираем весь список |
||||
if |
SUin=UinS. |
|
|
|
|
|||
строке, то |
Strings[j] then //если новый UIN (юин в |
дальнейшем) = какой-то |
||||||
begin |
|
|
|
|
|
|
|
|
flag:=false; //флаг возвращает «фальшь»:) |
|
|
||||||
end; |
|
|
|
|
|
|
|
|
end; |
|
|
|
|
|
|
|
|
if flag then |
//иначе |
|
|
|
||||
UinS. |
|
|
|
|
|
|
|
|
|
Add(SUin); |
//добавляем юин и |
ник под единым номером. |
|||||
NickS. |
|
|
|
|||||
|
Add(SNick); |
|
|
|
||||
end; |
|
|
|
|
|
|
|
|
Листинг 3 |
|
|
|
|||||
function TForm1. |
|
|
|
|||||
begin |
|
|
|
GetAgeMin: Word; |
|
|
|
|
case ComboBox1. |
|
|
|
|||||
|
1: Result |
|
ItemIndex of |
|
|
|
||
|
:= 18; |
|
|
|
||||
|
2: Result := 23; |
|
|
|
||||
3: Result := 30; |
|
|
|
|||||
4: Result := 40; |
|
|
|
|||||
5: Result := 50; |
|
|
|
|||||
6: Result := 60; |
|
|
|
|||||
else |
|
|
|
|
|
|
|
|
Result := |
0; |
|
|
|
|
|||
end; |
|
|
|
|
|
|
|
|
end; |
|
|
|
|
|
|
|
|
function TForm1. |
|
|
|
|
||||
begin |
|
|
GetAgeMax: Word; |
|
|
|
||
case ComboBox1. |
|
|
|
|||||
|
|
|
|
|
ItemIndex of |
|
|
|
1: Result := 22; |
|
|
|
|||||
2: Result := 29; |
|
|
|
|||||
3: Result := 39; |
|
|
|
|
||||
4: Result := 49; |
|
|
|
|
||||
5: Result := 59; |
|
|
|
|
||||
6: Result := $2710; |
|
|
|
|||||
else |
|
|
|
|
|
|
|
|
Result := 0; |
|
|
|
|
||||
end; |
|
|
|
|
|
|
|
|
end; |
|
|
|
|
|
|
|
|
Листинг 5 |
|
|
|
|||||
if LoginEdit. |
|
|
|
|
|
|
||
|
|
Text=’’ then |
|
|
|
|||
ShowMessage(‘Error! Enter UIN!’) |
|
|
|
|||||
else |
|
|
|
|
|
|
|
|
Memo1.Clear; |
|
|
|
|
|
|||
ICQClient1. |
|
|
|
|
|
|
||
ICQClient1. |
UIN:=StrToInt(LoginEdit.Text); |
|
|
|
||||
|
Password:=PasswordEdit.Text; |
|
|
|||||
ICQClient1.Login(0); |
//логинимся к серверу в статусе Online |
Листинг 2 |
|
function Replace(ZNick:string; |
|
ник и то, что будем |
менять |
var Poz:integer; |
|
s:string; |
|
begin |
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
Repl:string):string;//как параметры мы задаем: |
-x cha |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
s:=Form1. |
|
|
//задаем строку |
MessageEdit.Text; |
|||
Poz:=Pos(Repl, s); |
тексте присутствует указание на ник, то... |
||
while Poz>0 do |
//åñëè â |
||
//... |
|
будет |
|
begin |
ïîêà îí |
|
|
|
|
|
|
if Repl=’*’ then //åñëè íèêà |
íåò, òî… |
||
begin |
|
|
|
Delete(s, Poz, Length(Repl)); //удаляем старое |
|||
Insert(‘ ‘, s, Poz); //вставляем пробел |
|||
end |
|
|
|
else |
|
|
|
begin |
|
|
|
Delete(s, Poz, Length(Repl)); |
|
|
|
Insert(ZNick, s, Poz); //пишем реальный ник пользователя |
|||
end; |
|
|
|
Form1. |
|
//готовим мессагу |
|
MessageEdit.Text:=s; |
|||
Poz:=Pos(Repl, s); //переводим поиск на новое место |
|||
end; |
|
|
|
end; |
|
|
|
Листинг 4 |
|
|
|
|
|
|
||||
procedure TForm1. |
|
|
|
|
|
|
||||
var |
|
|
FormCreate(Sender: TObject); |
|
|
|
||||
i:integer; |
|
|
|
|
|
|
|
|||
begin |
|
|
|
|
|
|
|
|
|
|
UinS:=TStringList.Create; //создаем список |
|
|
|
|
||||||
NickS:=TStringList.Create; //аналогично |
|
|
|
|
||||||
ComboBox1. |
|
|
//выводим возраст |
|
|
|
|
|||
|
|
|
Items.Add(‘’); |
|
|
|
|
|||
ComboBox1. |
|
|
|
|
|
|
|
|||
|
|
|
ItemIndex := 0; |
|
|
|
|
|||
ComboBox1.Items. |
|
|
|
|
|
|
||||
|
|
|
|
Add(‘18-22’); |
|
|
|
|
||
ComboBox1.Items. |
|
|
|
|
|
|
||||
|
|
|
|
Add(‘23-29’); |
|
|
|
|
||
ComboBox1.Items. |
|
|
|
|
|
|
||||
|
|
|
|
Add(‘30-39’); |
|
|
|
|
||
ComboBox1.Items. |
|
|
|
|
|
|
||||
|
|
|
|
Add(‘40-49’); |
|
|
|
|
||
ComboBox1.Items. |
|
|
|
|
|
|
||||
ComboBox1. |
Add(‘50-59’); |
|
|
|
|
|||||
|
|
|
Items.Add(‘60 and above’); |
|
|
|
|
|||
ComboBox2. |
|
|
|
|
|
|
|
|||
|
|
|
Items.Add(‘’); |
|
|
|
|
|
||
ComboBox2. |
|
|
|
|
|
|
|
|||
|
|
|
ItemIndex := 0; |
|
|
|
|
|||
for i := Low(Countries) to |
High(Countries) do //выводим страны |
|
|
|||||||
ComboBox2.Items. |
|
|
|
|||||||
end; |
|
Add(Countries[i].Value); |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
||
Листинг 6 |
|
|
|
|
|
|
|
|||
procedure TForm1. |
|
|
|
|
|
|
|
|||
var |
|
|
ICQClient1Login(Sender: TObject); |
|
|
|
||||
i:integer; |
|
|
|
|
|
|
|
|
||
begin |
|
|
|
|
|
|
|
|
|
|
for i:=0 to |
StrToInt(CountEdit.TExt) do //сколько раз искать |
|
|
|||||||
begin |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
||
ICQClient1. |
|
|
|
|
|
|
|
|||
ems. |
|
|
SearchWhitePages('','','','',GetAgeMin,GetAgeMax,0,'','',ComboBox2.It |
|||||||
|
Strings[ComboBox2.ItemIndex],'','','','','','','','','',true); |
//собственно, |
||||||||
функция |
поиска |
|
|
|
|
|
||||
end; |
|
|
|
|
|
|
|
|
|
|
for i:=0 to UinS. |
|
|
|
|
|
|
|
|||
begin |
|
|
Count-1 do //далее идет проверка на дубликаты |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
if i=0 |
then //åñëè ýòî |
первый |
найденый юин, то мы |
заменяем $Nick на новое |
||||||
|
||||||||||
значение... |
|
|
|
|
|
|||||
Replace(NickS. |
|
|
|
|
|
|
|
|||
else |
|
|
Strings[i],'$Nick') |
|
|
|
|
|||
begin |
|
|
|
|
|
|
|
|
|
|
Replace(NickS. |
|
|
|
|
|
|
|
|||
следующее |
Strings[i],NickS.Strings[i-1]); //åñëè æå íåò, òî |
заменяем |
||||||||
предыдущим |
|
|
|
|
|
|||||
end; |
|
|
|
|
|
|
|
|
|
|
ICQClient1. |
|
|
|
|
|
|
|
|
||
|
|
SendMessage(StrToInt(UinS. |
|
|
|
|
||||
рассылки |
сообщений |
|
|
Strings[i]),MessageEdit.Text); |
//функция |
|||||
Memo1.Lines.Add('Послано |
|
сообщение |
íà |
'+UinS.Strings[i]+': |
||||||
'+MessageEdit.Text); //добавляем инфу о проделанной работе |
|
|
||||||||
end; |
|
|
|
|
|
|
|
|
|
|
ICQClient1. |
|
|
|
|
|
|
|
|
||
UinS.Free; |
Disconnect; //отключаемся |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
||
NickS.Free; |
|
|
|
|
|
|
|
|
||
end; |
|
|
|
|
|
|
|
|
|
|
81
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
F |
|
|
|
|
|
|
|
i |
|
||
|
|
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
t |
|
||||
P |
D |
|
|
|
|
|
|
|
|
o |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
P |
D |
|
|
|
|
|
|
|
|
o |
||
|
|
|
|
NOW! |
r |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NOW! |
r |
||||||||||||
|
|
|
|
|
BUY |
|
|
Break |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BUY |
|
|
||||||||||
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
m |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
m |
|||||||
w Click |
|
|
|
|
|
|
o |
Åñëè |
возникнут |
какие-то |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
|
o |
|||||||||||
|
w |
|
|
|
|
|
|
|
|
|
вопросы, |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|||||||||||||
|
. |
|
|
|
|
|
|
.c |
|
связанные с |
алгоритмами |
|
|
|
|
. |
|
|
|
|
|
|
.c |
|
||||||||||||||||||||||
|
|
p |
df |
|
|
|
|
e |
|
|
|
|
|
|
|
шифрования или |
|
|
p |
df |
|
|
|
|
e |
|
||||||||||||||||||||
|
|
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g |
|
|
|
|||||||||||||||
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
||||||||||||
|
|
|
|
-xcha |
|
|
|
|
|
нашей программой, пиши. |
|
|
|
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
Обязательно отвечу. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
Подробную информацию по |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
àïè |
функциям, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
приведенным |
|
в статье, и, кстати, |
ïî |
криптоапи, ты |
сможешь |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
найти в MSDN (msdn. |
microsoft.com) íà |
сайте или |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
Visual |
Studio (ýòî |
|
на диске, прилагающемся к |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
неправда, обычно в |
палатках VS всегда сильно |
урезан, |
à |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
MSDN покупается |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
отдельно |
на 3-4 дисках - прим. ред.). Но |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
редить: в нашей |
стране, |
|
я хочу тебя предуп- |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
согласно указу ¹334 от 3 апреля 1995 года, произво- |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
дить и распространять любые |
шифрующие средства можно, только имея ли- |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
цензию ФАПСИ. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
Соответственно, |
шифровать нельзя :). Поэтому пиши прог- |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
раммы только для личного пользования |
и только в |
познавательных целях. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
На этом все. Удачного компилирования. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
Листинг программы шифрования файла |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
//Мы будем использовать WinAPI |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
#include <windows.h> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
//Код шифрующей функции |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
void |
code(char *in,int szin,char *key,int szkey){ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
for(int i |
= 0,t = 0; i |
< szin; |
in[i++] ^= key[t++]) if(t >= szkey) t = 0; |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
//точка входа |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
int main(int argc, char **argv){ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Открываем файл |
для чтения и записи |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HANDLE |
|
|
|
|
|
|
|
|
hFile |
|
|
|
|
|
|
= |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
CreateFile(argv[1],GENERIC_ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WRITE|GENERIC_ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Получаем его |
размер |
|
|
READ,0,0,3,0,0); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DWORD dwFileSize |
= |
GetFileSize(hFile,0); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Создаем проекцию |
файла |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HANDLE hFileMap = |
CreateFileMapping(hFile,0,4,0,dwFileSize,0); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Получаем указатель на проекцию |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
char* cFile = (char*)MapViewOfFile(hFileMap,2,0,0,0); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Шифруем всю |
проекцию |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
code(cFile,dwFileSize,argv[2],strlen(argv[2])); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//После |
использования файл и проекцию |
требуется |
закрыть |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Ставим |
EOF, закрываем |
ôàéë |
и его проекцию |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UnmapViewOfFile(cFile); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SetFilePointer(hFile,dwFileSize,0,0); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SetEndOfFile(hFile); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CloseHandle(hFileMap),CloseHandle(hFile); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
return 0; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Tips&Tricks |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
Ты нашел какую-либо шаровар- |
|
денькой, то вышлет тебе какой- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
ную англоязычную прогу, но кря- |
|
нибудь файл, который надо пе- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
ка на нее пока не существует? Я |
|
ревести |
(äà |
|
поможет |
òåáå |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
подскажу тебе способ, с по- |
|
ПРОМТ!). Ты его переводишь и |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
мощью которого можно полу- |
|
отправляешь ему. И так ненавяз- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
чить и серийник, и техподдерж- |
|
чиво просишь, мол, сами мы не |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
ку. Мылишь |
производителю |
|
íà |
|
местные... хочу небольшого воз- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
английском что-то типа: "Ми- |
|
награждения за свой труд - выш- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
лый, дорогой девелопер! Ваша |
|
лите серийник, добрый дядя де- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
прога пользуется офигительным |
|
велопер. Все! :)) Сериал выш- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
успехом среди русских пользо- |
|
лют, поблагодарят, да еще и |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
вателей, но русского интерфей- |
|
скажут что-то типа "надеемся на |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
са так и нет... Разрешите мне |
|
плодотворное сотрудничество". |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
сделать перевод интерфейса на |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
русский язык". Вот так. Если |
|
|
Сергей aka Sergeevich |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
разработчик |
будет |
добрым |
äÿ- |
|
|
www.s-image.narod.ru |
|
|
|
|
|
|
|
|
|
|
|
|
|
|