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

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

  Все выпуски  

Программирование на Delphi (выпуск 60)


Программирование на DELPHI
Выпуск #60 (23 декабря 2006 г.)

Разделы сайта:

Новости сайта
Delphi.int.ru Expert
Файловый архив
Статьи
Компоненты
Plug-in's
Документация
Исходники
Изображения
Игры
Программы
F.A.Q. (ЧаВО)
Рассылки сайта
Дружеств. сайты
Обратная связь
Каталог ссылок

Доброго времени суток, уважаемые читатели!

Выпуска давно не было из-за того, что наступает конец учебного семестра, а также из-за того, что приближаются новогодние праздники :-) Заранее всех поздравляем с Новым Годом на всякий случай, если до 1 января рассылки вдруг не будет... Удачи Вам в наступающем году, безглючного кодинга и крепкого коннекта :-)


Статистика Delphi.int.ru Expert на 23.12.2006, 13:00:

Зарегистрированных экспертов: 70, из них в активном режиме 55.
Участниками задано вопросов: 211.
Всего отправлено ответов: 396.

У Вас есть идеи как сделать рассылку или сайт лучше? Ждём Ваших мнений!

Приятного чтения и до встречи через неделю!

Разделы рассылки:

Авторское слово
Delphi.int.ru Expert
Статья по Delphi
Файловый архив
Ссылки
Юмор

Количество читателей рассылки (23.12.2006, 13:00):
5369+731+90=6190.

Delphi.int.ru Expert
(текущая версия системы: 1.65
последнее обновление: 19.11.2006)

Если Вы не являетесь зарегистрированным пользователем сайта, зарегистрируйтесь прямо сейчас! Регистрация »

Delphi.int.ru Expert - это автоматизированная система экспертной помощи, призванная помочь в решении проблем, возникающих как у начинающих, так и опытных программистов, а также способствующая обмену информации между участниками лично и публикации этой информации в массовых рассылках в дальнейшем. Система полностью автоматизирована и постоянно развивается и обновляется. Если у Вас есть какие-то либо вопросы или Вы столкнулись с какой-либо проблемой при программировании на Delphi/WinAPI - задайте свой вопрос и эксперты Вам помогут. Кроме того, Вы сами можете войти в состав экспертов и помогать другим.

Задать вопрос экспертам » | Справочное руководство » | Перейти в состав экспертов » | Эксперты системы »

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

* Администраторы сайта не несут ответственности за грамматические ошибки в сообщениях участников.

Delphi.int.ru Expert  – вопросы и ответы (#121 - #130)
Вопрос № 121

Текст вопроса:

Уважаемые эксперты! Есть такой вопрос:
На форме имеется один RichEdit1 и один CoolBar1, на котором 4 ToolBar'а. У CoolBar1 AutoSize:=True, у RichEdit1 Align:=alClient.
Вот сам вопрос: как сохранить в ini расположение Тулбаров на Кулбаре. Имеется в виду сохранить расположение Тулбаров и по горизонтали (это понятно как (см. вставку)), и по вертикали, и в очередности (если пользователь изменил очередность Тулбаров).
Изначально Тулбары находятся в одной строчке все у одного края.
Перепробывал много чего, но получилось только сохранить (и главное - загрузить) только расположение Тулбаров по горизонтали в определенном заранее порядке.
Заранее спасибо!

Приложение:

Автор вопроса: feenords (статус: 1-ый класс)
Дата и время отправки вопроса: 01.10.2006, 16:19
Получено ответов на вопрос: 1
Сообщений в форуме вопроса: 4
Страница данного вопроса >>


» Ответы на данный вопрос:

1. [Отвечает: min@y™ (статус: 4-ый класс), 03.10.2006, 08:35]:

Зайди на torry.net и набери в поиске toolbar2000.
Я давно юзаю эту весчь и весьма доволен. Особенно я доволен процедурами TBIni(Reg)Save(Load)Positions().

Оценка за ответ: 3.
Комментарий: Сторонние компоненты не особо приветствую, хотя и попадаются отличные. Но всё равно спасибо...



Вопрос № 122

Текст вопроса:

Уважаемые эксперты!!! Как отключить на клавиатуре все кнопки кроме цифр и букв(еще Shift и кнопки прямо, влево, вправо, влево, вниз). Заранее благодарен!!!

Автор вопроса: Geron (статус: 1-ый класс)
Дата и время отправки вопроса: 02.10.2006, 02:23
Получено ответов на вопрос: 2
Сообщений в форуме вопроса: 2
Страница данного вопроса >>


» Ответы на данный вопрос:

1. [Отвечает: Вадим К (статус: 9-ый класс), 02.10.2006, 09:45]:

Зачем? Просто может если задачу коректней сформулировать, то и решение будет "прозрачней и понятней".
А так могу сказать только одно - ставить хук и вместо кода клавиши возвращать 0

2. [Отвечает: Бубырь Александр Николаевич (статус: 1-ый класс), 02.10.2006, 15:33]:

Если вообще - то читай предыдущий ответ, а если применительно к своей программе, то обрабатывай OnKeyDown, OnKeyPress и все.



Вопрос № 123

Текст вопроса:

Доброе время суток, Господа программисты!
Как сделать, чтобы когда программа запущена кнопка Виндоус не работала. Заранее благодарен!!!

Автор вопроса: Geron (статус: 1-ый класс)
Дата и время отправки вопроса: 02.10.2006, 11:17
Получено ответов на вопрос: 0
Сообщений в форуме вопроса: 2
Страница данного вопроса >>


» Ответы на данный вопрос:

К сожалению, ответов на данный вопрос не поступило...



Вопрос № 124

Текст вопроса:

Доброе время, господа программисты!!! Как на клавиатуре отключить кнопку Виндоус. Ранее предложенные способы не работуют!!!

Автор вопроса: Geron (статус: 1-ый класс)
Дата и время отправки вопроса: 03.10.2006, 00:36
Получено ответов на вопрос: 1
Сообщений в форуме вопроса: 0
Страница данного вопроса >>


» Ответы на данный вопрос:

1. [Отвечает: Denisss (статус: 1-ый класс), 03.10.2006, 21:18]:

Здравствуйте, Stalker!

Посмотрите вот этот пример:
http://expert.delphi.int.ru/download_15

Надеюсь, это поможет.

Удачи!



Вопрос № 125

Текст вопроса:

Здраствуйте.
Необходимо при работе с реестром создать свой новый раздел. Как это можно это сделать через Tregistry?

Автор вопроса: Князев А.А. (статус: Посетитель)
Дата и время отправки вопроса: 05.10.2006, 01:22
Получено ответов на вопрос: 2
Сообщений в форуме вопроса: 3
Страница данного вопроса >>


» Ответы на данный вопрос:

1. [Отвечает: min@y™ (статус: 4-ый класс), 05.10.2006, 09:10]:

Вот простой пример сохранения настроек в реестре: с созданием раздела, если он не существует. Выдрал из своей проги.

Приложение:

Оценка за ответ: 5.
Комментарий: Спасибо

2. [Отвечает: Alex Van Glukhman (статус: 4-ый класс), 05.10.2006, 11:30]:

Здравствуйте, Князев А.А.!

Приложение:

Оценка за ответ: 5.
Комментарий: еще раз спасибо



Вопрос № 126

Текст вопроса:

Есть MySQL 5.0.18 и Delphi 7. Создаю из MySQLManager базу, кодировка Cp1251. Пробую руками вводить русские поля в VarChar - все нормально. Пишу прогу - на форме создаю ADOConnection, ADOTable,DataSource и DBGrid.
Буржуйские буквы вводит и отображает, русские вводит но при Commit вылетает ошибка не совместимости. Помогите плиз побороть

Автор вопроса: Шевчук Олег Васильевич (статус: Посетитель)
Дата и время отправки вопроса: 05.10.2006, 17:53
Получено ответов на вопрос: 1
Сообщений в форуме вопроса: 0
Страница данного вопроса >>


» Ответы на данный вопрос:

1. [Отвечает: Alex Van Glukhman (статус: 4-ый класс), 05.10.2006, 19:46]:

Здравствуйте, Шевчук Олег Васильевич!

У меня аналогичная ситуация была с Interbase при работе с Delphi выше 7. Так же при создании таблицы давал к типу VARCHAR CHARACTER SET 1251 именно при Transaction Commit вылетала ошибка.

Решений нашёл 2:
1. Создать таблицу ручками SQL запросоми и при этом не указывать кодовую страницу - по умолчанию лепится WideString и Delphi - не ругается
2. В параметрах коннекта TADOConnection указать кодовую страницу 1251



Вопрос № 127

Текст вопроса:

Думаю вы мне поможете.
Так вот, начал я писать программку на delphi и решил прикрепить к ней DLL-ку (т.к. будет очень много повторяющихся процедур, а размещать их в exe-шнике не хочеться). Мои процедуры будут работать с компонентами на форме - допустим a:= StrToInt(edit1.text) + StrToInt(edit2.text); label1.caption:=IntToStr(a);
но у меня нечего не получаеться.... общие принцыпы создания и вызова библиотеки я знаю..... но похоже что не всё. Помогите мне пожайлусто!

Автор вопроса: Друщенко Денис Юрьевич (статус: Посетитель)
Дата и время отправки вопроса: 06.10.2006, 19:25
Получено ответов на вопрос: 3
Сообщений в форуме вопроса: 1
Страница данного вопроса >>


» Ответы на данный вопрос:

1. [Отвечает: Вадим К (статус: 9-ый класс), 06.10.2006, 20:01]:

Вы наверное не совсем представляете для чего нужны dll. Туда нужно выносить процедуры и функции, которые не зависят от компонентов на форме. Иначе теряется всё прелесть dll. Работать с dll с компонентами формы можно, но подводных камней там стоко, что необерёшся.

Оценка за ответ: 4.
Комментарий: спасибо! думаю тогда я буду помещать эти процедуры в exe-шнике

2. [Отвечает: Бубырь Александр Николаевич (статус: 1-ый класс), 07.10.2006, 18:46]:

Есть некоторые тонкости при передаче в DLL данных типа String.
Сейчас все не помню (давно с этим сталкивался), но там приходилось использовать борландовскую библиотеку borlndmm.dll (на компьютерах где не установлен Делфи), а в раздел USES добавить Sharemem.
Приведу кусок своего:
uses
ShareMem, SysUtils, Windows, Classes;
Если не использовать длинные строки - этих проблем нет.

Оценка за ответ: 4.
Комментарий: Спасибо!

3. [Отвечает: Alex Van Glukhman (статус: 4-ый класс), 11.10.2006, 14:33]:

Здравствуйте, Друщенко Денис Юрьевич!

Хочется ответить экспертам ответившим на данный вопрос - DLL может хранить кроме исполняемого кода различного рода рессурсы в том числе и саму форму приложения. Тип перемен ;ных и констант не ограничен - такой же раздел uses с подключаемыми модулями.
Теперь отвечаю своим собственным примером.
1.Создаём библиотеку DLL
- File->New->Other->DLL Wizard
Удаляем весь код и пишем:
library MyLib;
uses
SysUtils,
Classes, StdCtrls ;
{$R *.res}
function CalcSum(a, b: TEdit): Integer;
begin
Result:=StrToInt(a.Text)+StrToInt(b.Text);
end;
exports
CalcSum;
end.
Компилируем и строим - DLL готов
2.Далее создаём проект с формой кидаем Label1: TLabel; Edit1, Edit2: TEdit; Button1: TButton;
К проекту подключаем библиотеку DLL Project->Add To Project - указываем путь к библиотеке.

Вот код модуля формы:

unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants,
Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Button1: TButton;
Label1: TLabel;
Edit1: TEdit;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function CalcSum(a,b: TEdit): Integer;

var
Form2: TForm2;

implementation

{$R *.dfm}
function CalcSum; external 'MyLib';

procedure TForm2.Button1Click(Sender: TObject);
begin
Label1.Caption:=IntToStr(CalcSum(Edit1,Edit2));
end;

end.

Всё работает без каких то глюков со строками и т.д
Удачи

Оценка за ответ: 5.
Комментарий: огромное спасибо! это то что я хотел увидеть!



Вопрос № 128

Текст вопроса:

Приветствую! Помогите пожалуйста начинающему.
Возник такой вопрос. Работаю с поздним связыванием. Прилагаю код, который загружает имена листов указанной рабочей книги
Приведённый код работает. Но бывают случаи, когда возникает ошибка OLE Error 800A9C64. При этом было выяснено, что это возникает при работе с файлом, у которого в исходном тексте имеется любой символ(ы). Исходный код - это если кликнуть правой кнопкой мыши по ярлычку и выбрать в меню "Исходный текст". Похоже, что при активации листа Эксель пытается выполнить имеющийся там "код". Как обойти эту проблему программно? Буду признателен за любую помощь. (Win XP, D7, Excel 2003)

Приложение:

Автор вопроса: Discorezzz (статус: Посетитель)
Дата и время отправки вопроса: 07.10.2006, 13:47
Получено ответов на вопрос: 2
Сообщений в форуме вопроса: 3
Страница данного вопроса >>


» Ответы на данный вопрос:

1. [Отвечает: Косолапов Дмитрий Юрьевич (статус: 2-ой класс), 07.10.2006, 13:59]:

Сдается мне, цикл должен быть от 0 до SheetsCount-1

Приложение:

Оценка за ответ: 2.
Комментарий: Вы не правы. В Экселе всё нумеруется начиная с 1. Если внимательно прочитать вопрос, то будет ясно, что код работает, но выдаёт ошибку только на вышеописанных листах рабочей книги.

2. [Отвечает: Бубырь Александр Николаевич (статус: 1-ый класс), 08.10.2006, 01:19]:

У меня не получилось повторить Вашу ошибку - код работает. Дайте ссылку на пример файла, на котором происходит ошибка, или уточните что значит " При этом было выяснено, что это возникает при работе с файлом, у которого в исходном тексте имеется любой символ(ы). Исходный код - это если кликнуть правой кнопкой мыши по ярлычку и выбрать в меню "Исходный текст"." - какой конкретнее символ и в чем нужно кликать по ярлычку и что за ярлычок?

Оценка за ответ: 3.



Вопрос № 129

Текст вопроса:

Уважаемые эксперты!
Возникла проблема с цветом меню. Само меню вручную перерисовывается через OnDrawItem, однако вся оставшаяся область, которая занимает окно, остаётся серая. Это сильно выбивается из общего оформления программы. Подробнее - см. скриншот:
http://expert.delphi.int.ru/download_18
Есть ли выходы из этой ситуации? Теоретически, можно программно изменить системные настройки оформления и поменять цвет на нужный, а при выходе восстановить тот, что был до этого, но этот вариант плох - все приложения временно изменят цвет меню. Может быть, кто-то встречался с такой проблемой? Как перекрасить эту область? Через Canvas доступа к ней нет.
Заранее благодарю за ответы.

Автор вопроса: Dron (статус: 10-ый класс)
Дата и время отправки вопроса: 07.10.2006, 21:27
Получено ответов на вопрос: 2
Сообщений в форуме вопроса: 7
Страница данного вопроса >>


» Ответы на данный вопрос:

1. [Отвечает: Alex Van Glukhman (статус: 4-ый класс), 11.10.2006, 17:49]:

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

Оценка за ответ: 1.
Комментарий: Вы вопрос вообще внимательно читали? "Само меню вручную перерисовывается через OnDrawItem" - какая ещё прорисовка? Сторонние - дайте пример хотя бы одного.

2. [Отвечает: Yurchik (статус: 3-ий класс), 13.10.2006, 02:55]:

Здравствуйте Dron и уважаемые эксперты!

Позвольте не согласиться с мнением Alex Van Glukhman. Предлагаю такой вариант. В примере цвет фона главного меню заливается желтым цветом.
И свой компонент, потенциально коммерческий ))), писать не надо.
Английский у меня хромает), так что если комментарии непонятны, пишите. С радостью отвечу

Приложение:

Оценка за ответ: 5.
Комментарий: Большое спасибо!



Вопрос № 130

Текст вопроса:

Я являюсь экспертом, и после ответа на вопрос захотел расширить ответ и привести отрывки поясняющего кода, но не смог этого сделать - при повторной отсылке ответа пишет что я уже отправлял ответ, а никаких элементов для редактирования своего сообщения не нашел. Кнопки "Форум данного вопроса" и "Добавление сообщения" не работают.
Возможно ли редактирование или дополнение своего ответа?

Приложение:

Автор вопроса: Бубырь Александр Николаевич (статус: 1-ый класс)
Дата и время отправки вопроса: 08.10.2006, 00:57
Получено ответов на вопрос: 1
Сообщений в форуме вопроса: 0
Страница данного вопроса >>


» Ответы на данный вопрос:

1. [Отвечает: min@y™ (статус: 4-ый класс), 08.10.2006, 14:32]:

Здравствуйте, Бубырь Александр Николаевич!

У тебя, наверно, отключены скрипты. Включи, штоб кнопки работали.




Статьи  >>

Основные операции с буфером обмена

Источник: delphi.about.com
Оригинал статьи:http://delphi.about.com/od/vclusing/a/tclipboard.htm
Перевод и дополнения: Ерёмин Андрей

Буфер обмена Windows - это специальный контейнер для текста или графики, которые вырезаются, копируются и вставляются из одних приложений в другие. В данной статье рассказывается, как использовать объект TClipboard для выполнения операций вырезки/копирования/вставки в Вашем Delphi-приложении.

Буфер обмена в общих чертах

Вероятно, Вы знаете, что буфер обмена (далее - БО) может содержать только один фрагмент данных в конкретный момент времени. Именно с этими данными выполняются все основные операции обмена между приложениями. Вполне логично, что формат данных, хранимых в БО в конкретный момент, также чётко опеределён. Если в БО записывается новая "порция" данных, то информация, которая содержалась в нём ранее, уничтожается. Содержимое БО не удаляется после вставки в данных в конкретное приложение, т.е. информация будет храниться там до тех пор, пока не будет записана какая-либо другая, либо пока БО не будет принудительно очищен.

Объект TClipboard

Для того, чтобы работать с БО в своём приложении, мы должны подключить модуль ClipBrd в uses нашего проекта, за исключением тех случаев, когда мы используем готовые методы некоторых компонент для работы с БО.
Примерами таких компонентов могут быть TEdit, TMemo, TOLEContainer, TDDEServerItem, TDBEdit, TDBImage и TDBMemo. В модуль ClipBrd включен объект TClipboard, обращаться к которому можно просто Clipboard. Мы будем использовать методы CutToClipboard, CopyToClipboard, PasteFromClipboard, Clear и HasFormat при работе с БО и манипуляциями с текстом и графикой.

Отправка и получение текста

Для того, чтобы отправить в БО некоторый текстовый фрагмент, нужно использовать свойство AsText объекта Clipboard. Если мы хотим, к примеру, отправить текст, хранящийся в переменной SomeStringData в БО, то следует использовать такой код (всё, что было в БО до этого, будет уничтожено):

uses ClipBrd;
...
Clipboard.AsText := SomeStringData_Variable;

Чтобы получить текст из БО, следует делать так:

uses ClipBrd;
...
SomeStringData_Variable := Clipboard.AsText;

Примечание: если требуется просто скопировать текст в буфер обмена, например из TEdit, то не обязательно подключать модуль ClipBrd. У TEdit есть метод CopyToClipboard, который автоматически копирует выделенный текст из этого компонента в БО (данные переводятся в формат CF_TEXT).

procedure TForm1.Button2Click(Sender: TObject) ;
begin
   //Следующий код выделяет весь текст в TEdit
   {Edit1.SelectAll;}

   Edit1.CopyToClipboard;
end;

Чтобы извлекать изображения из БО, программа должна знать, в каком формате там храниться изображение. Аналогично, чтобы записывать в БО графику, приложение должно "сообщить" буферу обмена тип отправляемого изображения. Некоторые возможные значения параметра Format приведены ниже; однако в Windows определено гораздо больше форматов.

CF_TEXT - Текст, где каждая строка заканчивается CR-LF комбинацией символов.
CF_BITMAP - Изображение в формате Windows bitmap.
CF_METAFILEPICT - Изображение Windows metafile.
CF_PICTURE - Объект типа TPicture.
CF_OBJECT - Любой значимый объект.

Метод HasFormat возвращает True, если данные в буфере обмена хранятся в указанном формате и могут быть прочитаны:

if Clipboard.HasFormat(CF_METAFILEPICT) then
   ShowMessage('Clipboard has metafile');

Чтобы отправить изображение в БО, следует использовать метод Assign. Например, следующий код скопирует bitmap из объекта, содержащего графические данные, названного MyBitmap, в буфер обмена:

Clipboard.Assign(MyBitmap);

В общем случае, MyBitmap - это объект одного из типов: TGraphics, TBitmap, TMetafile или TPicture.

Чтобы получить графические данные из БО, нужно: проверить текущий формат содержимого БО и использовать метод Assign, указав конечный объект для импорта данных:

{Поместите на форму кнопку (TButton) и изображение (TImage)}
{До выполнения этого кода нажмите комбинацию клавиш [Alt]+[PrintScreen]}
uses clipbrd;
...
procedure TForm1.Button1Click(Sender: TObject) ;
begin
if Clipboard.HasFormat(CF_BITMAP) then Image1.Picture.Bitmap.Assign(Clipboard) ;
end;

Немного о расширенной работе с буфером обмена

Буфер обмена хранит информацию, которую мы можем перемещать между разными приложениями, в самых различных форматах; к тому же, сами приложения могут работать с разными форматами. Однако при чтении данных из БО в Delphi-приложении через объект TClipboard, мы можем использовать только стандартные форматы: текст, графика и мета-файлы.

Допустим, у нас есть 2 запущенных Delphi-приложения... Что Вы скажете насчёт того, чтобы определить собственный формат БО для пересылки данных между этими двумя приложениями? Допустим, мы создали в меню команду "Вставить" и хотим, чтобы этот пункт был недоступен, когда, к примеру, в буфере обмена нет текстовых данных... С тех пор, как с БО начала работать какая-либо другая программа, мы не можем отследить момента, когда в буфере произойдёт какое-либо изменение... У класса TClipboard не предусмотрено таких событий, которые оповещали бы нас об этом... Всё, что нам нужно сделать - это поставить "хуки" в систему событий буфера обмена и тогда наше приложение будет автоматически узнавать обо всех изменениях его содержимого.

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

Вы можете отправить свои статьи по адресу info@delphi.int.ru и они будут опубликованы в ближайших выпусках рассылки и на сайте.


Файловый архив  >>

Разделы: Статьи | Компоненты | Plug-in's | Документация | Исходники | Программы | Игры | Изображения

Отправляйте полезные компоненты/модули, интересные исходники, собственные программы/игры и мы разместим их на сайте. Отправить можно здесь »

Последние поступления
Название
Описание
Раздел
Объём
Ссылки
RCmdLine
Модуль представляет собой парсер командной строки для Delphi и FreePascal.
7 Кб
DelphiX для Delphi 6
Популярный пакет для работы с DirectX - вывод качественной графики, добавление звуковых эффектов. С помощью DelphiX можно создавать не только мини-вставки в приложения, но и качественные 2D-игры. Данная версия адаптирована только для Delphi 6.
765 Кб
MD5 Library
DLL-модуль для работы с MD5-хешами. Включает 2 функции, позволяющие вычислить хеш указанной строки, а также хеш какого-либо файла.
204 Кб
Всего новых файлов: 3  
976 Кб
 

Если у Вас есть книги по Delphi (в электронном виде, разумеется) или другая полезная документация - сообщите и её можно будет разместить на сайте.

Отправить файл »   

Ссылки  >>

Дружественные сайты   |   Каталог ссылок

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

Рассылки Subscribe.Ru
Программирование на Delphi
Visual Basic для новичков и профессионалов
   
 

Юмор

Ведущий раздела: Bruder

Действие происходит в наши дни. Мальчик спрашивает отца:
- Папа, а как я появился?
- Эх, ладно, рано или поздно ты бы все равно задал мне этот вопрос, так что слушай. Твой папа познакомился с твоей мамой в ЧАТЕ. Потом мама с папой встретились в ИНТЕРНЕТ-КАФЕ, и там в туалете мама захотела сделать пару ЗАГРУЗОК с папиного ДЖОЙСТИКА. Потом, когда папа уже был готов для ЗАКАЧКИ, мы неожиданно заметили, что у нас не установлен ФАЙРВОЛЛ... Но, к сожалению, было уже поздно нажимать CANCEL или ESC, а окошко "ВЫ УВЕРЕНЫ, ЧТО ХОТИТЕ НАЧАТЬ ЗАГРУЗКУ? " мы отключили еще в самом начале в ОПЦИЯХ и СВОЙСТВАХ. Мамин антивирус уже долгое время НЕ ОБНОВЛЯЛСЯ и поэтому не заметил папиного червя БЛАСТЕР. В общем, мы нажали ENTER, и у мамы открылось окошко "ОЖИДАЕМОЕ ВРЕМЯ ЗАГРУЗКИ: 9 МЕСЯЦЕВ"

:))

Присылайте компьютерные анекдоты, рассказы и истории по этой ссылке и они обязательно будут опубликованы.
Ведущий рассылки, Ерёмин Андрей.

В избранное