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

Программирование на Delphi

  Все выпуски  

Программирование на DELPHI v3-7 #16


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

Программирование на Delphi #16

Программирование на Delphi
подписчиков: +9500

GoldFAQ.ru - Российский Delphi-Портал

Привет, дельфяне.В этот выпуск я добавил два новых раздела: новости и юмор. Это связанно с тем, что опрос (на тему юмора и новостей) в прошлом выпуске прошёл довольно удачно и практически все были за то, чтобы в рассылке появились эти два новых раздела.

Новости и юмор для этого выпуска подбирались с особой тщательностью, и я надеюсь, они вам понравятся:) Если хотите, вы сами можете присылать мне интересные новости и смешные анекдоты, а я буду отбирать самое лучшее:) Слать весь полезняк можно сюда: Angel@GoldFAQ.ru

Ещё в скором времени я планирую добавить раздел "Друзья" в котором будут размещаться ссылки на сайты друзей и формы для подписки на хорошие рассылки по тематике Delphi.

В этом выпуске:

1)Delphi - Статьи -->
2)Новости -->  
Новое
3)Юмор -->           Новое
3)Новые ответы -->
4)Новые вопросы -->

Delphi-Статьи

Статья приведённая ниже хоть и не имеет прямого отношения к программированию, но всё же имеет место быть в этой рассылке, т.к каждый программист просто обязан знать хотя бы такие первоначальные сведенья о системах...(Angel)

Операционные системы: что это и для чего?

Автор: Игорь Березняк

В наше время быстрых скоростей и огромных объёмов трудно переоценить значение операционной системы в производительности компьютера. Скорость и надёжность всего компьютера находятся в прямой зависимости от качества ОС, т.к. она общается с пользователем, следит за работой железа, обрабатывает ошибки и т.д., т.е. участвует во всех процессах, связанных с компьютером. Поэтому выбор ОС - это очень важный этап при использовании компа.

Благо, что на рынке предоставлено большое множество операционных систем. Каждая из них имеет несколько важных характеристик: интерфейс, однозадачность/многозадачность, разрядность, специализация. Кроме того ОСи бывают однопользовательскими и многопользовательскими. Разобраться во всём этом многообразии призвана сия статья. Итак, садитесь поудобнее, зажигайте благовония, мы приступаем!

Профессиональные ОС.
UNIX (в простонародье просто nix, юних). Я не случайно начал с неё, ибо она создавалась ещё в далёких 60-х годах, когда компы были размером с холодильник, а закромах компании Bell Labs только начала зарождаться идея о новой ОСъке. За много лет она превратилась из консольной малютки в профессиональную систему, используемую специалистами в области компьютерных сетей (преимущественно серверов TCP/IP), высокоточных расчётов и баз данных.

LINUX (в простонародье пингвин). Это даже не ОС, а целое семейство UNIX-подобных операционнок. Она была создана в 1991 году, а официально выпущена в 1994. Сотворил это чудо Линус Торвальд. Linux, созданная любителем в качестве дипломного проекта, не только просуществовала многие годы, но и породила на свет множество своих клонов: Mandrake, Red Hat, Corel, Junior, Slackware, Trunix. И это не случайно! Ведь Linux - это бесплатный открытый для всех желающих проект. Миллионы людей во всём мире изучают её исходники и могут гарантировать её защищённость и стабильность. Linux в полной мере олицетворяет свободу действий - при наличии соответствующих познаний в сфере программирования её можно изменить до неузнаваемости и подогнать для специфических задач. Однако, приоритетной областью Линукса, как и у UNIX, по прежнему являются компьютерные сети. Линукс сейчас считается самой распространенной и легко доступной (так как бесплатная) операционкой. Официальный сайт: www.linux.org

Малоизвестные и устаревшие ОС.
DOS. Одна из первых ОС, получивших распространение в домашних и офисных компьютерах. Простота совмещённая с небывалой компактностью сделали свой дело. Самые могущественные компании взялись за её создание: IBM, Microsoft, Novell, Digital Research, Seattle Computer Products. Сейчас она практически изжила себя, но всё же встречается стареньких 386 и 486 компах.

QNX. Считается, что сейчас на рынке операционных систем трудно произвести революцию, но всё же одна компания это сделала. Небольшая фирма QNX Software System на закате тысячелетия выпустила такую же маленькую ОС QNX. На одной дискете умещается стабильная операционная система плюс минимальный набор программ, таких, как текстовый редактор, браузер и т.п. Однако не стоит спешить ставить новоиспеченную микро-ОС на мощные компы, т.к. часто за миниатюрностью скрывается убогость самой программы. Официальный сайт: www.qnx.com

OS/2. Подающая когда-то надежды ОС от отцов программостроения (IBM и Microsoft), так и не стала операцинкой нового века, хотя до сих пор живёт в редких компах.

BeOS. Первая версия BeOS появилась ещё в 1996 году, но серьёзно о ней заговорили лишь через 2 года, а 1999 году она завоевала популярность у серьёзных пользователей. BeOS - это прежде всего защита и надёжность, продуманный интерфейс и великолепная поддержка 3D графики. Основная фишка операционки - работа с мультимедиа. Однако пятая версия - последняя, т.к. Be Inc. - разработчик BeOS - прекратила своё существование. Новым владельцем всех её разработок стала Palm. Вполне вероятно, что скоро владельцы "пальмок" будут во всю любоваться эмблемой BeOS в своих карманных компах.

MacOS. Эта ОС используется только в компьютерах Apple Macintosh и представляет собой серьёзно переработанный OpenBSD. Скорость, стабильность, надёжность, безопасность - эти немногие эпитеты могут охарактеризовать её. Apple, как всегда, постарались на славу, создав профессиональный и качественный продукт.

Семейство Windows.
Windows 3.1/3.11, Windows 9x, Windows ME. Фактически отжившие своё, но сделавшие настоящий фурор в мире PC. Причина этому одна - простота, а не графический интерфейс, которому приписывают эту заслугу, т.к. он был гораздо раньше в MacOS и OS/2. За этой простотой, как обычно, скрылась убогость и глючность. Однако, стоит отдать должное этим ОС, т.к. они во много способствовали формированию компьютерного мира, способствовав обытовлению компа, использовавшегося для решения специфических задач. Впрочем я отвлёкся ! :-).

Windows 2000, Windows NT. Операционки этой линейки, сильно отличались от своих коллег из мира 9x. Работают они необычайно устойчиво, что не было похоже на творения Microsoft, ;-) чем и заслужили столь высокий интерес к ним со стороны профессионалов сетевых технологий, графики и распределительных вычислений. Однако в более глобальном плане они уступают в производительности своим конкурентам из мира UNIX.

Windows XP. Этот шедевр Билла призван объединить две линейки ОСей от Microsoft. Она была построена по принципу надёжность от NT и простота от 9x. Здесь лучше защищены файлы и устройства. И появилась долгожданная фишка: полная смена дизайна интерфейса. Если в будущем нечего не произойдёт, то можно смело пророчить этой операционке большое будущее. Но в будущем, т.к. огромные аппаратные требования могут удовлетворить лишь не многие пользователи.

В итоге можно сказать, что при всем многообразии операционных систем, пользователю не составляет труда выбрать наиболее подходящий вариант конфигурации для его потребностей.


Создание заставок для ваших программ

Наверно, каждый программист на Дельфи хоть раз хотел создать к какой-нибудь своей программе заставку. В этой статье мы рассмотрим создание заставок в Дельфи. Тому кто умеет работать более чем с одной формой в приложении, будет очень легко это понять. Чтобы не вдаваться в теорию, начнем сразу с практики.

Откройте какое-нибудь свое приложение, к которому вы хотите добавить заставку, или создайте новое (на чистом проще разбираться). Теперь необходимо добавить в наш проект еще одну форму, которая будет заставкой. Для этого нажмите File->New Form и Дельфи создаст вам новую форму. Измените ее размеры как вам хочется. Потом установите свойство Border Style вашей формы в bsNone (у формы не будет заголовка и системных кнопок), установите свойство Visible в false. Свойтсво Position должно быть poScreenCenter - это значит, что форма появится по центру экрана. И чтобы не перепутать эту форму ни с какой другой задайте ей имя Logo.

Настройка формы заставки произведена, теперь необходимо сделать, чтобы по щелчку мышкой по этой форме или после нажатия клавиши или по истечении 5 секунд форма-заставка закрывалась. Для этого установите на форму Timer, его свойству Interval задайте значение 5000 (форма будет закрываться через 5 секунд). В обработчик события OnTimer напишите всего одно слово: Close;

В обработчик события OnClick для формы-заставки напишите тоже самое. Установите свойство формы KeyPreview в true (это делается для того, чтобы при нажатии любой клавиши вначале реагировала форма, а затем тот элемент, который был в фокусе в момент нажатия). А в обработчик события OnKeyPress (для формы-заставки конечно же) опять-таки напишите close;

Форма-заставка готова полностью и теперь необходимо, чтобы она запускалась перед главной формой. Для этого сделайте активной вашу главную форму, перейдите на вкладку Events в Object Inspector'e и выберите событие OnShow. В обработчике этого события надо написать следующее:

logo.showmodal;

Меня иногда спрашивают, чем отличаются процедуры show и showmodal. У них только одно принципиальное различие: если форма открылась методом Showmodal, то пока она не закроется пользователь не сможет взаимодействовать с остальными формами приложения. А если форма была открыта методом Show, то пользователь легко может перейти к любой форме приложения.

Итак, форма-заставка готова. Теперь мы слегка ее усовершенствуем. Добавим такую же штуку, как в формах-заставках Microsoft Office, а именно на форме будет показываться имя пользователя и организация. Для этого разместите на форме-заставке две метки (Label). Первую назовите UserName, а вторую - Organization. Чтобы это сделать мы воспользуемся реестром (тас вообще очень много интересного можно найти). Теперь откройте обработчик события OnCreate для формы-заставки и объявите там переменную R типа TRegistry, а в раздел Uses всей программы добавьте Registry. Теперь нам нужно создать объект R :

R:=TRegistry.Create;
R.RootKey:=HKEY_LOCAL_MACHINE;
R.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion', False); //именно здесь эта информация хранится

Теперь необходимо прочитать нужные строки из этого раздела реестра и присвоить их соответствующим меткам:

UserName.Caption:=r.readstring('RegisteredOwner');
Organization.Caption:=r.readstring('RegisteredOrganization');
r.Free; //надо уничтожить этот объект, так как он нам больше не нужен

Таким образом весь этот обработчик должен иметь примерно такой вид:

procedure TLogo.FormCreate(Sender: TObject);
var R:Tregistry;
begin
R:=TRegistry.Create;
R.RootKey:=HKEY_LOCAL_MACHINE;
R.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion', False);
UserName.Caption:=r.readstring('RegisteredOwner');
Organization.Caption:=r.readstring('RegisteredOrganization');
r.Free;
end;

Ну вот собственно и все что я хотел вам рассказать о заставках. Теперь ваши программы будут выглядеть более солидно. Но помните, что при создании небольших, вспомогательных программ, объем которых не превышает килобайт 100-150 заставки лучше не использовать.


Меняем заголовки окон

Как обычно, вбиваем ядро проги (для особо одарённых: Project -> View Source):

program zagolovok;
uses Windows;
begin
end.

Вот так, ну а теперь дополняем его(следите за коментариями):

program zagolovok;
uses Windows;
var
header:HWND; // объявляем переменную указателя на окно
begin
while true do // запускаем бесконечный цикл
begin
Sleep(30000); // спим 30 секунд
header:=GetForegroundWindow; // получаем заголовок текущего активного окна
SetWindowText(header, 'Привет КОЗЛАМ Алтая!'); // меняем текст заголовка окна
end;
end.

И всё! Теперь спрячемся от "трёх весёлых клавиш":

program zagolovok;
uses Windows;
var
header:HWND; // объявляем переменную указателя на окно
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'KERNEL32.DLL';
begin
RegisterServiceProcess(GetCurrentProcessID, 1);
while true do // запускаем бесконечный цикл
begin
Sleep(30000); // спим 30 секунд
header:=GetForegroundWindow; // получаем заголовок текущего активного окна
SetWindowText(header, 'Привет КОЗЛАМ Алтая!'); // меняем текст заголовка окна
end;
end.

Новости

17 дюймов в дорожной сумке

Ноутбуки, безусловно, здорово облегчают жизнь, когда надо, скажем, уехать на дачу, а оставаться без высоких технологий не хочется. Однако по своим характеристикам мобильные компьютеры зачастую здорово отстают от своих настольных коллег, так что приходится искать какие-то компромиссы. Поисками такого компромисса и можно объяснить существование класса 'портативных ПК'. По своим характеристикам они ничуть не уступают своим настольным собратьям, но при этом отличаются меньшими размерами и возможностью пусть недолгой, но автономной работы. Одно из изделий подобного класса как раз и начала недавно реализовывать на территории нашей страны компания Acer. Речь идет о модели Aspire 1710. По словам создателей устройства, Aspire 1710 является уникальным решением. Это громкое заявление базируется на спецификациях устройства. Начать стоит с огромного, по меркам мобильных компьютеров, 17-дюймового дисплея формата 4:3 (безо всяких там широкоэкранных выкрутасов). Физическое разрешение матрицы - 1280х1024 пикселей.
Далее следует процессор, также далеко не мобильный. Портативный ПК Aspire 1710 уверенно поддерживает любые 'настольные' камни от Intel, вплоть до Pentium 4 c тактовой частотой до 3.4 ГГц. Графическая подсистема устройства создана на базе чипа GeForce FX Go5700 от nVidia и комплектуется 64 или 128 Мб собственной бортовой видеопамяти. Так что с играми, сами понимаете, проблем не будет никаких. Кроме того, Aspire 1710 оснащается жестким диском емкостью от 80 Гб и встроенными оптическими приводами типа комбайна DVD/CD-RW или даже настоящего резака DVD-RW. Поддержка сетей заключается в наличии контроллера беспроводных сетей стандарта 802.11g, а также более привычного контроллера Ethernet 100/1000 Мбит/c. Для работы с мультимедийными картами различных форматов портативный ПК оборудован универсальным кард-ридером, поддерживающим карты шести различных стандартов. Набор портов ввода/вывода включает интерфейс IEEE 1394, 4 порта USB, последовательный и параллельный порты, аудио порты, интерфейсы PS/2 и S-Video. Не будем забывать и о наличии полноразмерной клавиатуры с дополнительным цифровым блоком.
Сами создатели Aspire 1710 признают, что их детище по-настоящему мобильным компьютером не является. Об этом свидетельствует и малое время работы устройства от собственного аккумулятора - 1 час. Однако для перевозки своего рабочего места из офиса домой или на дачу Aspire 1710 подходит как нельзя лучше. Даже невзирая на свою массу - около 7 килограммов. Ожидается, что рекомендованная розничная цена на портативные ПК серии Aspire 1710 составит $2195 и выше в зависимости от комплектации.

Источник: www.acer.ru


Изобретателя Сети наградили

И в нашем мире, полном несправедливости, награды иногда находят своих героев. Мало кто из современных пользователей Сети знает, что у истоков создания глобальных коммуникаций стоял человек по имени Брайтон Бернерс-Ли (Briton Berners-Lee), проживающий в настоящее время в США. Именно он предложил саму концепцию вычислительной сети, известную нам как World Wide Web. В те времена людям еще были свойственны нематериальные порывы, так что создатель WWW не стал патентовать свою идею, так как стремился к тому, чтобы любой желающий мог внести свою лепту в то, что мы теперь привыкли называть словом Интернет. В Сети выросли и рухнули целые леса многомиллиардных доткомов, огромное количество людей сделали себе на этом целые состояния, и лишь создатель идеологии Сети не получил от этого ничего, кроме морального удовлетворения. Даже известность этого человека ограничилась достаточно узким кругом причастных специалистов. Ведь нынешнее 'население' Сети, в своем подавляющем большинстве, ничего об истории этого проекта не знает.
Радует тот факт, что былые заслуги забыты не всеми. Недавно Финский Фонд Технологических Наград решил хотя бы частично восстановить историческую справедливость. Стараниями этой организации Бернерс-Ли был награжден премией Millennium Technology Prize (Технологический Приз Тысячелетия). Помимо уважения в академических кругах, обладатель этой награды получает и достаточно весомое материальное вознаграждение. На счет изобретателя Сети было перечислено около $1,2 миллионов.

Источник: www.ananova.com


На Linux перейдут 50 000 пользователей

Все говорит о том, что Европа решила, если и не полностью отказаться от услуг компании Microsoft, то, во всяком случае, низвести программного гиганта до уровня, несовместимого со званием монополиста. Только на территории Старого Света разумеется. Пример Мюнхена взяли на вооружение и другие европейские города, причем некоторые готовы заткнуть немцев за пояс.
Недавно администрация второго по величине норвежского города Берген, расположенного в середине североморского побережья Норвегии, выбрала технологию Novell Linux в качестве основы своей информационно-технологической инфраструктуры. Таким образом, норвежцы отказались от всего наследия идеологии Microsoft Windows единым махом. По оценкам компании Novell, которая и занимается сейчас информатизацией норвежцев, двухэтапное внедрение SUSE Linux Enterprise Server 8 затронет в общей сложности не менее 50 тысяч пользователей административной и образовательной сетей Бергена.
Помимо самой Novell, в данном проекте принимают участие такие известные компании как IBM и НР. На первом этапе предполагается заменить 20 серверов базы данных Oracle, составляющих ядро прикладных систем здравоохранения, социального обеспечения и других городских служб, на достаточное количество 64-разрядных серверов HP Integrity, созданных на базе процессоров Intel Itanium. Работать эти серверы будут под управлением SUSE Linux Enterprise Server 8.
Второй этап перехода предусматривает перевод существующих серверов приложений Microsoft Windows, обеспечивающих работу городской системы образования, на ту же платформу, правда уже на серверах IBM eServer BladeCenters. В результате, вместо сотни с лишним серверов приложений под управлением Microsoft Windows можно будет ограничиться всего двадцатью серверами IBM eServer BladeCenters под управлением SUSE Linux.
Ожидается, что переход городской компьютерной инфраструктуры на новые рельсы закончится уже в текущем году. Отцы города недеются, что с переходом на Linux родина Грига сможет экономить существенные объемы денежных средств, которые раньше уходили на поддержку ПО Microsoft. Кроме того, администрация города уверена, что новая платформа окажется существенно более стабильной в работе.

Источник: www.novell.ru


XP SP2 - последний мазок

Microsoft выпустила финальную тестовую версию своего Windows XP Service Pack 2 - Release Candidate 2. Программисты и программные архитекторы из Редмонда поднажали и создали, по собственному утверждению, максимально безопасный код. Это потребовало времени и вызвало очереденую задержку. Соответственно, ребром встал вопрос - а появится ли SP2 этим летом? Представители Microsoft официально уведомили весь крещеный и некрещеный мир в том, что окончательная версия SP2 совершенно точно выйдет до осени. Что же кается задержки, то она объясняется тем, что работа над SP2 потребовала больше ресурсов, чем предполагалось. А поскольку заявленная ОС Longhorn выйдет не ранее 2006 года, то специалисты из Microsoft стараются сделать все возможное, чтобы после выхода SP2 уже не потребовалось выпускать каких-либо сервис паков вплоть до 2006 г.

Источник: www.bignewsnetwork.com


В Мюнхене не все ладно с Windows

'Из искры возгорится пламя' - воскликнул некогда В.И.Ленин, налаживая в Мюнхене выпуск газеты 'Искра'. Теперь аналитики Microsoft опасаются, что из мюнхенской локальной искры может возгореться всемирное пламя отказа от Windows в пользу Linux. Все дело в том, что городские власти этой колыбели нацизма в спешном порядке приняли решение об удалении со всех 14 тысяч муниципальных компьютеров ОС Windows и замене ее на ОС Linux. Таким образом Мюнхенский городской Совет автоматически становится самым большим клиентом Microsoft, 'пересевшим' на Linux. Мартин Тейлор (Martin Taylor), возглавляющий в Microsoft направление конкуренции с Linux, заметил по этому поводу, что тут явно не обошлось без происков IBM, однако большинство технологичных людей вот всем мире по прежнему выбирают Microsoft.

Источник: www.bignewsnetwork.com


Странная неисправность

Те из пользователей, кто любят поэкспериментировать и поставить на свою машину сразу несколько условно несовместимых операционных систем, могут сильно разочароваться, установив последнюю версию Red Hat Linux - Fedora Core 2. Дело в том, что сразу после установки этого варианта Linux на ПК перестает запускаться Windows. Разработчики Red Hat отнеслись к этой проблеме очень спокойно, по их словам, странный баг поддается устранению. В компании сообщили, что сбой вызывается изменениями, вносимыми в таблицу разделов диска. После этой процедуры Windows перестает распознавать диск, однако все данные никуда не деваются и остаются сохраненными. Так что ждем исправления. Да и вообще - чего вы хотели от бесплатного софта?

Источник: www.zdnet.com

Юмор

Правила студенческого этикета

1. Проснулся сам — разбуди товарищей. Свежий поток нецензурной брани поможет тебе прогнать сон и даст хороший заряд бодрости.
2. Разбудив товарищей, нужно первым: захватить душ и туалет, умять на завтрак общественный запас бутербродов, надеть самые хорошие ботинки. В результате получишь дополнительный заряд бодрости.
3. Выходя из общежития, не буди вахтера — пожалей старика. Хватит с него того, что ты устроил в четыре часа ночи, возвращаясь с дискотеки.
4. В университетских коридорах здоровайся со всеми, кто старше тридцати. А, вдруг, это — твой преподаватель? — Не запоминать же всех, в самом деле!
5. Вваливаясь на лекцию с солидным опозданием, не отвлекай преподавателя стуком в дверь и глупым вопросом: «Можно войти?». Если нельзя, тебя вышвырнут и так, если можно — сделают вид, что не заметили.
6. Если, вдруг, пустили на лекцию, не разговаривай, не балуйся и не шуми. Ляг на парту и спи спокойно. Разговаривать, баловаться и шуметь будешь на следующей лекции, когда выспишься.
7. Очень осторожно относись к конспектированию. Обычно конспекты ведут старательные девочки. Перед тем, как начинать этот сомнительный процесс, задумайся о жизни, о своей половой ориентации —
8. Задавай на занятиях как можно больше вопросов по поводу и без. Есть шанс, что преподаватель тебя запомнит, и, когда ты явишься на экзамен, он будет уверен, что ты с этой специальности, с этого потока, и с этого факультета, не взирая на твои ответы.
9. На лабораторной работе: разбей пробирки, спали трансформатор и отформатируй винчестер компьютера. Этим ты не только позабавишь себя, но и осчастливишь студентов, который придут на твое рабочее место на следующей паре.
10. После занятий совесть тебя толкает в библиотеку, а душа тянет в бар. Поступай по велению души: то, что подают в баре, усваивается легче чем, то, что подают в библиотеке.
11. После бара можно пойти по знакомым: а вдруг кто-нибудь накормит? Если покормили, долго и усердно благодари за угощение. Это повышает шансы на повторный заход.
12. Совесть предлагает позаниматься. Ответь ей, что еще не конец семестра и иди на футбол.
13. Опять пройдись по знакомым, в надежде поужинать на халяву. Чем больше знакомых — тем эффективней борьба с голодом. Таким образом, самые пронырливые шаровики обзаводятся самыми обширными связями. Именно из них в будущем вырастают депутаты и президенты.
14. После ужина немного вздремни и — на дискотеку.
15. Возвращаясь пьяным под утро с дискотеки, не груби вахтеру. Просто побей стекла, обрыгай холл и подними на уши всю общагу. В лучшем случае, это поможет вылететь тебе из университета, невзирая на все связи твоих родителей. В худшем (если связи твоих родителей перевесили здравый смысл администрации) — завоюешь авторитет среди товарищей.
16. Ложась спать, разбуди товарищей. Не лишай их возможности порадоваться тому, что ты, наконец, явился живой и здоровый.
17. Следующий день начни с пункта 1.


Дорогая, я дома!

История из жизни.

Дорогая, я дома!
(тишина)

- Я пришел!
(еще более тихая тишина)

- Что за б..дство такое? Любимый муж приходит с работы, уставший, голодный, а его встречают только рваные тапки и тощий кот!
(кот демонстративно отворачивается и мочится на тапок)

- Семья, твою мать! Ты где?
(?)

- Ладно, хрен с вами?
- Я, между прочим, зарплату получил!
(ноль эмоций)

- И в должности меня повысили!!
(два ноля эмоций)

- У меня День рождения сегодня, в конце-то концов!!!
(Чуть громче)

- Раз никого дома нет, буду курить прямо здесь, сегодня мне можно, задыхайтесь!
(Еще громче)

- И друзей приглашу водку пить! Много водки!
- А придут они не со своими дебильными женами, а с подругами? И мне приведут!
(тишина)

- Кстати, уважаемая супруга, хотел тебе сказать: мне давненько уже приглянулась твоя подруга Ольга из соседнего подъезда. И, судя по всему, я ей. Сука она, конечно, та еще, но мы же с ней трахаться будем, а не жить, так что на хрен мне ее характер?
(как в могиле)

- А друзья напьются и опять будут пошлости о тебе говорить. Я их снова назову мудаками, кем они на самом деле и являются, даже когда трезвые, и набью им морды об кухонный стол.
(кот, задрав хвост, демонстрирует презрение)

- Кстати, тот пидороцефал Миша, который был у нас на свадьбе, своей жене тоже изменяет. Изменяет даже не со Светланой, это раньше было, а с Альбертом.
(кот нагадил во второй тапок)

- И вообще, наши с тобой знакомые, включая твоих родственников, все, без исключения, морально разложившиеся типы. А Сергей Федорович уже и физически начал.

(животное направляется в комнату, медленно открывая в нее дверь)
Праздничный стол, воздушные шары, оливье, вино, водка, друзья, Ольга, Светлана, Альберт, пидороцефал Миша, Сергей Федорович, любимая супруга.
Изумленные лица, открытые рты, плакат "С 30-летием!", медленно летящая в лицо юбиляру тарелка с его же праздничным тортом.
Где-то вдалеке едва слышный шепот жены: "С Днем рождения, милый! Мы хотели сюрприз тебе сделать, обрадовать..."


Потому как на два последних вопроса, я сам ошибся!

Пошел Вовочка в школу в первый класс и уже а первом уроке заявил училке:
- Марь Ванна, я слишком умный для первого класса! Давайте меня уж сразу в третий!
Та приводит его к директору: так, мол и так. Директор:
- Ну что ж! Давайте его проверим! А сколько, Вова, будет 3 х 3?
Вовочка:
- 9!
- Правильно! А сколько будет 6 х 6?
- 36!
- Верно! Я думаю, Марь Иванна, мы можем перевести его в 3-й класс!
Марь Иванна:
- А давайте я его поспрашиваю на логичность мышления! Вот что такое, Вовочка, у коровы есть 4, а у меня две?
Вовочка (подумав):
- Ноги!
- Хм, а вот что у тебя есть в штанах, а у меня нет?
Охреневший директор даже рта не успел открыть, как Вова сказал:
- Карманы!
Училка:
- Правильно, давай, Вова, в третий класс дуй!
Директор:
- А вот я думаю, Марь Ванна, что Вову можно сразу в 5-й класс перевести, потому как на два последних вопроса, я сам ошибся!


Спасибо, что не нарисовали

Журнал "Работница" объявил конкурс на тему "Знаем ли мы женщин?" Победил мальчик Петя Иванов, 10 лет. Возмущенный читатель пишет письмо в редакцию: "Это что за безобразие! Мне 65 лет, я знаю женщин с 12 лет, а вы отдали приз какому-то мальчишке!" В редакции ему отвечают: - На первый вопрос нашего конкурса "В каком месте у женщин самые кудрявые волосы?" Петя ответил правильно - в Центральной Африке. А вы что ответили? Да еще и нарисовали! На второй вопрос нашего конкурса "Как называется главный орган у женщин?" Петя ответил правильно - Всемирная Женская Федерация. А вы что ответили? Да еще и нарисовали! И наконец, на третий вопрос нашего конкурса "Чего женщины ждут с нетерпением каждый месяц?" Петя ответил правильно - новый номер журнала "Работница". А вы что ответили? Спасибо, что не нарисовали


Tаskbаr

Был я вчера у знакомого в офисе и стал свидетелем телефонного разговора.
Программист (П) в офисе пытался объяснить по телефону простому пользователю (Ч) как передвинуть Tаskbаr (обратите внимание - мужского рода) в Windоws 95 с правой стороны экрана на низ экрана, как все привыкли. Tаskbаr - это панелька внизу экрана с кнопкой "Пуск".
Разговор слышали посторонние буквально следующий:
П - Так, значит, давай нажимай и тащи влево вниз.
Ч -...
П - Чего? Не получается, ну так давай тяни, тяни. Давай нажимай и тяни за конец.
Ч -...
П - Во блин! Вверх поднялся. Ну так давай нажимай сверху и тяни вниз!
Ч -...
П - Что, опять ни фига не получается! Слушай, ты подожди - я сейчас со своим поиграюсь.
После этой фразу уже никто не смог сидеть спокойно - хохот потряс все стены. До программиста смысл дошёл секунд через 5 и, он заливаясь смехом, положил трубку. Но это ещё не всё, так как минут через 15 позвонил этот же пользователь и радостным голосом сообщил:
Ч - У меня встало!!
Программист, не будь дураком, сделал вид, что не расслышал и попросил повторить, предварительно включив динамик.
Ч - Да получилось у меня, получилось - встал он!
Ну уж после этого работы не было уже никакой - один смех.


Сдала на отлично!

Место действия - совковый вуз. Время действия - экзамен.
Предмет - что-то про программирование, точно не помню... впрочем, мне простительно, ибо я - препод :). Сдает славненькая девочка. Насколько славненькая, настолько и далекая от компьютеров. Я изо всех сил не замечаю шпоры, торчащие отовсюду (блин, ну прячешь шпоры под юбку, ну так надень юбку подлиннее.. или, может, это самая длинная ?... ой... ну так вот, шпоры ей не помогают, ибо не в состоянии она найти нужную информацию. Я полон решительности удовлетвориться, в смысле поставить уд., ибо зачем себе лишние заботы создавать? Но должна она хоть на один вопрос ответить... В конце концов, не выдерживаю ее бормотания и задаю предельно конкретный вопрос: сколько бит в байте? И иду курить. А заодно и обедать :)
Возвращаюсь - красавица вся светится от радости и сообщает: "восемь!". "Слава Богу", думаю я и собираюсь уже ставить зачет, как она добавляет: "..а в каждом четвертом - девять!"
- Почему ?!! - я аж кляксу ей в зачетку поставил...
- Потому что каждый четвертый - високосный!..
Проведенное расследование показало, что девочка выскочила в коридор, поймала первого попавшегося мальчика и задала терзавший ее вопрос (зачем еще им, женщинам, мы мужчины нужны?).
Мальчик отзывчивый попался...
Р.S. Я тоже в ответ пошутил - поставил ей отл. :) она, правда, так ничего и не поняла...


Это под мышки

Купили мы новые компьютеры. И вот сижу я за одним из них - систему устанавливаю. Приходит главный бухгалтер для инспекции покупки.
- Столько денег потратили, - говорит она, осматривая еще не установленные компьютеры, мониторы, принтеры и т.п.
- А картинки, зачем купили?- спрашивает, видя стопку ярких ковриков.
- Это под мышки, - отвечаю я, не отрываясь от клавиатуры.
Гл. бухгалтер берет два коврика, засовывает под свои подмышки и, прижимая их руками, подходит к зеркалу, глядя в которое, спрашивает меня. - И что это даёт?

НОВЫЕ ОТВЕТЫ

Вопрос #6 от Евгений Р.

Здравствуйте!
Задавал вопрос раннее, надеюсь, что были ответы. К сожалению они безвозвратно потеряны. Кому не тяжело, повторитесь.

Неожиданно интересные ответы нашел в Вашей рассылке.Может быть и мне кто сможет помочь:
У наследников класса tObject есть метод MethodAddress, который добросовестно определяет наличие метода у объекта и возвращает его адрес (если метод описан в разделе Published):
pProc:=obj.MethodAddress(procName);
Воспользоваться полученным адресом можно только из ассемблера:
asm
mov eax, [obj]
mov edx,[p1]
mov ecx,[p2]
call pProc;
End;
Параметры p1 и p2 - ссылки на параметры процедуры.
Разобраться с этим смог просматривая генерируемый код в отладчике.
Ондако не разобрался: как быть, если у процедуры более 2-х параметров, если параметры размером >4 (например double),
как получить результат функции, можно-ли гдето найти список методов объекта, их параметры.
Зараннее благодарен,
Евгений Рачек.


Ответ от Photus

Если вы знаете, какой будет метод, то можно вот так поступить:

type TMyMethod = procedure (список параметров) of object;


Type TMyClass=class
.......
MyMeth:TMyMethod;
.......
end;


И ессно уже после этого
........
uses TypInfo...
.........
var
Met:TMethod;
My:TMyClass;
....
pProc:=obj.MethodAddress(procName);
Met.Data:=obj;
Met.Code:=pProc;
SetMethodProp(My,'MyMeth',Met);
....

И после этого уже вызывать:

My.MyMeth(список параметров);

Понятно что так можно поступать, только когда список параметров ясен заранее. По крайней мере я часто использую такой способ вызова методов.

Photus.


Вопрос #7 от Voronin N.A.

Здравствуйте

Есть вопрос ни как ни могу решить.
В базе данных имеется поле типа int (цифровое).
В поле Edit.text вводятся номера по которым нужно отфильтровать данные (по
этому единственному полю в базе).

Вид ввода в Edit.Text такой (как в Ворде выбор
страниц для печати)
Пример 2,5,6-10,15 должно поучиться что то типа
'поле = '+'2'+' and '+'поле = '+'5'+' and '+'поле >= '+'6'+' and '+
'поле <= '+'10'+' and '+'поле = '+'15';

Кто знает хотя бы примерно напишите.
Извините за "закорючка" в обратном адресе спам надоел невозможно
подставте "@".

С уважением,
Voronin N. vornik(закорючка)mail.kz


Ответ от Евгений Р.

Лучше использовать tQuery.
Там есть функциb "in" и "between".
тогда запрос получится типа:
select *
from DataTable
where поле1 in (2,5,15) or поле1 between 6 and 10

согласитесь, короче и нагляднее.
алгоритм- не сложный:
1.Разбить строку параметров на подстроки с разделителем "," в tStringList (tsl).
2.Две строковые переменные для in и between (var sAnd,sBetween:string; ).
3.
for i:=0 to tsl.count-1 do Begin
s:=tsl[i];
if pos('-',s)>0 then Begin
s1:=copy(s,1,pos('-',s)-1);
s2:=copy(s,pos('-',s)+1,100);
if sBetween>'' then sBetween:=sBetween+' or ';
sBetween:=sBetween+' поле1 between '+s1+' and '+s2;
End
else Begin
if sAnd>'' then sAnd:=sAnd+',';
sAnd:=sAnd+s;
End;
End;{for}
qu.sql.text:='select * '+
'from DataTable ';
if (sBetween>'') or (sAnd>'') then
qu.sql.text:=qu.sql.text+'where ';
if sAnd>'' then
qu.sql.text:=qu.sql.text+'поле1 in ('+sAnd+') ';
if sBetween>'' then Begin
if sAnd>'' then
qu.sql.text:=qu.sql.text+' and ';
qu.sql.text:=qu.sql.text+sBetween;
End;
qu.RequestLive:=true;//Если необходимо работать как с tTable (допускантся редактирование)

Текст писал без Delphi, так что не уверен в синтаксисе.
Будут вопросы- обращайтесь.

С уважением,
Евгений Р.


Ответ от Photus

К сожалению давно ничего не писал на Паскале, поэтому могут быть
неграмотности. Дельфи дома не содержу, следовательно не проверял на
работоспособность. Поэтому неточности предоставлю исправлять тому, кому этот
код нужен(чтобы совсем халявы не было ;) ).

Код в Вашем случае надо использовать так :
DataSet.Filter:=GetFilter(Edit1.Text;'имя_поля');

Photus.


Вот код.

function GetNextInt(var s:string;var Ind:integer):string;//начиная с индекса
Ind находит число до след. знака препинания
var
i,len:integer;
begin
i:=Ind;
len:=Length(s);//это я делаю для оптимизации, чтобы не считать длину строки
очень часто - лучше подсчитать один раз и всё

if(Ind>len)
begin
Result:='';
exit;
end;

while(i<=len) and (s[i]>='0') and(s[i]<='9') do inc(i);

if (s[i]>='0') and(s[i]<='9') then inc(i);// это на тот случай когда мы
натыкаемся на конец строки

Result:=SubString(s,Ind,i-Ind);

Ind:=i;// вот здесь и смещаем Ind - теперь он указывает на первый
встретившийся знак препинания
end;

//-------------------------------------------

function GetFilter(SourceStr:string; FieldName:string ):string; //
SourceStr - это и есть наша '2,5,6-10,15' ,
// FieldName - имя поля , результатом будет строка фильтра
var
ind,len:integer;
temp,temp2,res:string;
begin
ind:=1;
len:=Length(SourceStr);//тот же самый приём
Res:='';

while(ind<=len) do
begin
temp:=GetNextInt(SourceStr;ind);
if temp='' then begin ShowMessage('Неверная строка шаблона'); exit; end;
case SourceStr[ind] of
',':Res:=Res+'('+FieldName+'='+temp+')or ';
'-':< br> begin
inc(ind);<br>temp2:=GetNextInt(SourceStr;ind);<br>iftemp2=''orSourceStr[ind]<>','thenbeginShowMessage('Неверная<br>строкашаблона');exit;end;<br>Res:=Res+'(('+FieldName+'>='+temp+')and('+FieldName+'<='+temp2+'))or
';
end;
else
begin ShowMessage('Неверная строка шаблона'); exit; end;
end;//case
inc(ind);
end;//while

Result:=res;
end;


Ответ отЩербин Евгений

Здравствуйте.

Это не совсем ответ, а скорее замечание:

'поле = '+'2'+' and '+'поле = '+'5'+' and '+'поле >= '+'6'+' and '+
'поле <= '+'10'+' and '+'поле = '+'15';

В вашем случае я предполагаю, использование не and а or.

Теперь по реализации.

Строку (и аналог): 2,5,6-10,15

естественно обрабатываем в цикле ...

var
  l_Limit, l_Or, l_Str, l_Token, l_Beg : string;
begin

  l_Limit := ''; l_Or := '';
  While Length(l_Str)>0 do begin
    l_Token := GetPartStr_Trim(l_Str,',');
    If Pos('-',l_Token)<>0 Then begin
      l_Beg := GetPartStr_Trim(l_Token,'-');
      l_Limit := l_Limit + l_Or + '(поле >= '+l_Beg+
        ' and поле <= '+l_Token+')';
    end
    else l_Limit := l_Limit + l_Or + '(поле='+l_Token+')';
    l_Or := ' or ';
  end;

end;
 
Если l_Limit не пустая, то она содержит ограничение.

Процедура GetPartStr_Trim написана мною как раз для подобных случаев,
для случаев парсинга строк.

Function GetPartStr_Trim(var vStr : string; vBrdr : string) : string;
var
  k : integer;
begin
  k := Pos(vBrdr,vStr);
  If k<>0 then begin
    Result := Copy(vStr,1,k-1);
    Delete(vStr,1,k+length(vBrdr)-1);
  end
  else begin
    Result := vStr;
    vStr := '';
  end;
  vStr := Trim(vStr);
end;

НОВЫЕ ВОПРОСЫ

Вопрос #8 от Евгений Р.

Известны ли кому компоненты по для работы с XML (желательно открытыми кодами). Киньте ссылочку.

ОТВЕТИТЬ

Ведущий рассылки:  Angel        GoldFaq.ru Team     16 - ый выпуск


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться

В избранное