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

Интернет для Delphi-программиста


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

Интернет для Delphi программиста.

Выпуск : № 36


Здравствуйте уважаемые подписчики рассылки "Интернет для Delphi программиста". Данная рассылка предназначена для всех кого интересует Delphi, здесь будут выкладываться ссылки на различные ресурсы интернета так или иначе связанные с Delphi: книги, исходники, программы... Изучайте Delphi один из лучших языков программирования!!!


ЗАДАТЬ ВОПРОС :

Правила рассылки: 
1. Не присылайте ответов на вопросы типа "да, нет".  
2. Если отвечаешь на вопрос - то отвечай подробно с примерами (желательно с исходником примера).
3. Тема вопросов - программирование на Delphi.
Внимание авторам: - Я не указываю ваши адреса из-за спама, но кто хочет, чтобы его email был - пишите, иначе только имя(ник).
Отправить вопрос


Новые вопросы.


Вопрос № 83 задаёт: Дмитрий Шаравьёв  Ответить
Здравствуйте! Кто работал с Kylix'ом, подскажите! В 3-м под Mandrake 10.0, 10.1, 10.2 устанавливается, запускается, создается форма, все нормально. Отправляю на выполнение - Kylix виснет и висит долго (я ждал час). Спасибо.
Вопрос № 84 задаёт: Ольга  Ответить
Мне нужен компонент MNSMTP из закладки FastNet. На моей версии Delphi 7 нет такой закладки. Где его взять?
Спасибо.
Вопрос № 85 задаёт: Eugene  Ответить
Здравствуйте!
У меня такой вопрос. Есть на форме 6 Editor'ов. В пять из них юзер вводит числа, а в шестом, при щелчке на кнопке выводится ответ. Т.е. программа берет эти числа и выдает в шестой Editor ответ по формуле ((Edit1 * Edit2 * Edit3) - Edit4) / Edit5. Как все это осуществить?
Заранее спасибо!
Вопрос № 86 задаёт: #One  Ответить
Проблема с TMainMenu: пишу &Файл, в итоге получается быстрый вызов именно с заглавной Ф (Alt, затем Shift+Ф). А хотелось бы и с просто ф (Alt+ф), не только с заглавной. Кто-нить знает, как?
Вопрос № 87 задаёт: #One  Ответить
Windows Explorer иногда "программа не отвечает" и перезагружается. Как поймать это событие?
Вопрос № 88 задаёт: TR  Ответить
У меня такой вопрос. Я использую TStringGrid. Размер его у меня может достигать нескольких десятков или сотен тысяч строк. Когда я его уменьшаю через StringGrid1.Lines.Count=xxx, то размер памяти, занимаемый этими данным, все равно не уменьшается. Как освободить лишнюю память? Или я что-то не так делаю?
Вопрос № 89 задаёт: #One  Ответить
Допустим, запустили программу из своей программы. Как узнать, с каким кодом возврата запущенная прога завершилась?

Ответы.

Вопрос № 73 задаёт: exp-project Ответить 
Как в ХР программно перезагрузить и выключить компьютер?
Отвечает: Ivan 
Насколько помню в ХР 2000 и NT необходимо сначала получить привилегии
Вопрос № 74 задаёт: Vitek Ответить 
Учусь делать различные вычисления. В Console Application -всё получается. Но как сделать так, что-бы в обычных Application присваивать переменным число из поля ввода? И какой компонент лучше использовать для ввода чисел?
Отвечает: Wolfstar 
Необходимо при присваивании предварительно из строки преобразовать в число.
Пример,
var
i: integer;
begin
i:=strtoint(edit1.text);
// если i:real, то strToFloat(edit1.text);
end.

Если я правильно понял вопрос.
Вопрос № 79 задаёт:  Vitek Ответить
Здравствуйте!А можно ли сделать так, Что-бы прога запустилась в определённое время по часам компа, причём до этого, прога ни разу не запускалась?
Отвечает: SHKoder 
если только повесить резидентную службу NT или создать планировщик средствами винды
Вопрос № 80 задаёт: source Ответить 
Помогите разобраться плиз. ЧТо-то у меня не работает. Чувствую, что неправильно проверяю найден-ли компонент.
var
i:Integer;
s:String;
begin
for i:=0 to 100 do
  begin
    if TIdTCPClient(FindComponent(Irc_PageControl.Pages[i].Name+'_TCPClient'))<>nil then 
 // Если компонент найден, то
      begin
        while TIdTCPClient(FindComponent(Irc_PageControl.Pages[i].Name+'_TCPClient')).Connected do 
 // пока он подключен
          begin
            // cчитываем все данные в переменную s
            TIdTCPClient(FindComponent(Irc_PageControl.Pages[i].Name+'_TCPClient')).ReadLn(s);
            // отображаем значение переменной в Memo
            TFatMemo(FindComponent(Irc_PageControl.Pages[i].Name+'_FatMemo')).Lines.Add(s); 
          end;
      end;
  end;
end;
Происходит ошибка при выполнении программы "List index out of bounds (5)" - не найден компонент, когда перебор дошел до 5 - его на самом деле нет, но он может там появиться позже
Может кто другой алгоритм посоветует? Опишите его плиз, а то мои прямые извилины сегодня не осилят логического мышления.
Отвечает: Шешунов Вадим 
Не знаю, поможет это или нет, но попробуйте изменить условие цикла
так:
 ........
  if TIdTCPClient(FindComponent(Irc_PageControl.Pages[i].Name+'_TCPClient'))<>nil then
 // Если компонент найден, то
      begin
        while (TIdTCPClient(FindComponent(Irc_PageControl.Pages[i].Name+'_TCPClient'))<>nil)
        and TIdTCPClient(FindComponent(Irc_PageControl.Pages[i].Name+'_TCPClient')).Connected do
 ............

 вполне возможно, что вот этот Irc_PageControl.Pages[i] успевает
 прекратить свою "жизнь", пока работает тело цикла.
Отвечает: SHKoder 
проверь значения i на каждом шаге цикла
а вообще делай вместо for i:=0 to 100 do так: for i:=0 to ComponentCount - 1 do
Отвечает: #One 
Так может попробуй защищённый блок использовать (try..except)?
Вопрос № 82 задаёт: Sergey Ответить 
каким образом работать с принтером (я хочу посчитать кол - во страниц, которые принтер напечатал) WinApi, Slooper если можно поподробнее спасибо
Отвечает: Monya_ru 
Когда мне руководство поставило задачу учитывать каждую распечатанную страницу, я её (задачу) решил с помощью функции EnumJob и написал систему учета печати с возможностью контроля в разрезе пользователей, принтеров, копьютеров. Web интерфейс+БД (Interbase).

Если заинтересовало - пиши!

От ведущего рассылки: Пишите мне я передаю автору, а дальше сами общаетесь.

Отвечает: SHKoder 
если найдешь как сделать, кинь сюда же плиз, хочу сделать функцию
отлова распечатанной страницы

моя задача - создаю модальное дочернее окно в нем печатаю, если на
принтер ушел пакет и все ок, то mrOK, в противном случае mrCancel

От ведущего рассылки: Пишите мне я передаю автору, а дальше сами общаетесь.



Статья:   Создание группы RadioButton средствами Win API. http://decoding.narod.ru/api/radiobuttongroup/radiobuttongroup.html

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

Создадим две группы, по три радио-кнопки в каждой. Состояние кнопок в группе будем отображать в поле "Static".


const
  IDRBtn1 = 1;
  IDRBtn2 = 2;
  IDRBtn3 = 3;
  IDRBtn4 = 4;
  IDRBtn5 = 5;
  IDRBtn6 = 6;

var
  RBtn1: HWND;
  RBtn2: HWND;
  RBtn3: HWND;
  RBtn4: HWND;
  RBtn5: HWND;
  RBtn6: HWND;
  Static1: HWND;
  Static2: HWND;

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


RBtn1 := CreateWindowEx( 0, 'Button', 'Опция 1 (гр.1)',
                         WS_CHILD or WS_VISIBLE or BS_RADIOBUTTON,
                         10, 15, 90, 20, Wnd, IDRBtn1, hInstance, nil );
SendMessage( RBtn1, WM_SETFONT, GetStockObject( ANSI_VAR_FONT ), 0 );

 ...

RBtn4 := CreateWindowEx( 0, 'Button', 'Опция 1 (гр.2)',
                         WS_CHILD or WS_VISIBLE or BS_RADIOBUTTON,
                         10, 45, 90, 20, Wnd, IDRBtn4, hInstance, nil );
SendMessage( RBtn4, WM_SETFONT, GetStockObject( ANSI_VAR_FONT ), 0 );

 ...

Для изменения состояния радио-кнопок используется процедура CheckRadioButton. Ей передаются следующие аргументы: Handle нашего окна, идентификаторы первой и последней кнопок в группе, и идентификатор радио-кнопки, которую нужно "включить".


function WindowProc( Wnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM ): LRESULT; stdcall;
var
  p: PChar;
  n: integer;
begin
   case Msg of
      WM_DESTROY: begin
         PostQuitMessage( 0 );
         Result := 0;
         Exit;
      end;
      WM_COMMAND: begin
         n := GetWindowTextLength( lParam ) + 1;
         GetMem( p, n );
         GetWindowText( lParam, p, n );
         if ( LoWord( wParam ) >= IDRBtn1 ) and ( LoWord( wParam ) <= IDRBtn3 ) then
         begin
            SetWindowText( Static1, p );
            CheckRadioButton( Wnd, IDRBtn1, IDRBtn3, LoWord( wParam ) );
         end;
         if ( LoWord( wParam ) >= IDRBtn4 ) and ( LoWord( wParam ) <= IDRBtn6 ) then
         begin
            SetWindowText( Static2, p );
            CheckRadioButton( Wnd, IDRBtn4, IDRBtn6, LoWord( wParam ) );
         end;
         FreeMem( p, n );
      end;
      else
         Result := DefWindowProc( Wnd, Msg, wParam, lParam );
   end;
end;

Как видите, все просто. Определяем, к какой группе относится радио-кнопка, после чего "включаем" ее. На сегодня все, удачи в программировании.

.: Пример к данной статье :.

Исходники:   

Random Password Generator

Random Password Generator - прога для генерации случайного пароля определённой длины из заданного набора символов. Написан на Delphi.

3D заставка

При запуске программы со стандартными параметрами, окно развернётся на весь экран. Сверху будут отображены: количество полигонов, количество текселей, количество текселей на полигон и количество кадров в секунду (fps).
Можете скинуть в папку с программой файл music.mp3 и тогда ещё будет играть музыка.

Engine

Демонстрирует, как на OpenGL реализовать перемещение в пространстве (бежать вперёд-назад-влево-вправо, вертеть головой и т.д.)

Архивирование методом Хаффмана

Исходники архиватора методом Хаффмана на Delphi6 с описанием алгоритма. Архивирует только один файл. Прога дописывалась в короткие сроки, поэтому написана не лучшим образом, работает медленно, но верно.

Сортировщик окон

Сортировщик окон. Программа позволяет скрывать окна на Task Bar'е, изменять их порядок, cама скидывается в System Tray.

VideoTEST

3D видео тест. Вращаются трёхмерные кубики. Измеряется fps... и т.д.
Написано на Delphi под OpenGL

enumwindows.zip

С помощью пербора получается листинг работающих процессов и приложений. Программа позволяет спрятать/свернуть/развернуть любое окно.

transparentwinlayer.zip

Позволяет изменить степень прозрачности любого окна

delme.zip

При работе программы происходит блокировка исполняемого файла программы на диске, до завершения работы программы. Данный код позволяет программе стереть саму себя с диска. При этом если программа уже загрузилась в память, то может работать и работать. Метод действия: создаётся временный bat файл в временной директории на диске, который удаляет программу и удаляет себя сам. При использовании кода в защите желательно использовать хотя бы простейшую шифровку текстовых строчек XOR-ом - они хорошо просматриваются дизассемблером и разумеется, хакеру не составит труда обнаружение защиты.

sky.zip

Sky Screen Saver. Имитация звездного неба. Программа показывает основные созвездия и положения планет солнечной системы в зависимости от даты.

solar.zip

Пример демонстрирующий крутящиеся планеты на OpenGL. Написан на Delphi. Вы можете менять параметры освещенности, материала и смотреть результаты в реальном времени

browsers.zip

Пример простенького WEB браузера

abcdplay.zip

CD Player с большим количеством функций

cgi.zip

Примеры CGI приложений написанных на Delphi

secdelphis.zip

Это пробная версия программы "Секрет", основной функцией которой является защита компьютера от всяких недоброжелателей и прочего рода хакеров. Работа программы: она прописывает путь к себе в системный реестр, из которого запускается второй блок программы - sec.exe, который выполняет роль щита.

ntcurs32.zip

Пример использования анимированного курсора

artdpl.zip

Пример разработки компонентных приложений

childwnd.zip

Это пример загрузки дочернего окна в форму из внешней DLL

dllexampl.zip

В этом примеры Вы научитесь вызывать функции из DLL

filelocker.zip

Блокиратор файлов по нажатию гор клавиш

antigame.zip

Троян AntiGame

icqbomber.zip

ICQ Bomber

joiner.zip

Пример Joiner`а ( программа, скрепляющая два бинарника ;) ) на Delphi

pswhack.zip

This program shows cached passwords using standard (but undocumented) Windows API on local machine for current user (user must be logged in).

anonmail.zip

Анонимный Mailer

sendmail.zip

Простенький Mailer

regftype.zip

Позволяет асоциировать расширение с приложением. Есть возможность изменить иконку.

uninstallkey.zip

Пример анинстала любой софтины из Windows. В этих целях юзает реестр

resexplorer.zip

Просмотрщик ресурсов

sisinfo.zip

SysInfo

calendar.zip

Календарь

clock.zip

Альтернатива часам находящимся в трее

nettime.zip

Синхранизирует часы с интернетом

saver.zip

Позволяет запустить скринсейверы установленные в системы и изменить их настройки

txtviewercode.zip

Text Viewer - пример редактора текста. Функциональность немного по выше, чем у NotePad ;)

winampcontrol.zip

WinAmp Control v2.0 создан для облегчения жизни пользователей путём частичного перевода управления их любимым WinAmp'ом на клавиатуру. Если тебя ломает постоянный отрыв от работы, вызванный необходимостью включить любимую песню (выключить нелюбимую, сменить playlist...), то WinAmp Control v2.0 для тебя!!! Настрой горячие клавиши на свой вкус и наслаждайся...


Интересные и полезные сайты по Delphi: Если Вы хотите, чтобы Ваш сайт был в этом разделе пишите.

http://www.noil.pri.ee/ - Здесь вы можете почитать статьи, скачать исходники и компоненты, пообщаться на форуме.
http://www.delphi.int.ru/ - Ресурс для Delphi-программистов, где каждый найдёт что-то полезное!


Немного юмора:  :))

Два мужика разговаривают: 
- Почему твой сын так быстро растет, за уши тянешь, что ли? 
- Не, я просто монитор каждый месяц на 5 см поднимаю!


Антивирусная программа: Обнаружен вирус! Что делать: 
- Вылечить; 
- Переместить; 
- Удалить; 
- Игнорировать; 
- Послать другу! 


Задачка для хакера.
Юзер Вася Чайников узнал, что у хакера Вовы Крутого появился новый CD-ROM с пиратской игрой. Поскольку у Васи нет дисковода CD-ROM, он решил скопировать себе игру с помощью дискет. Объем игры - 750 Мб, объем дискеты - 1,44 Мб, всего у Васи 10 дискет. Путь от дома Чайникова до дома Крутого занимает полчаса. Сколько времени потратит Вася, прежде чем обнаружит, что игра запускается только при наличии CD-ROM? 


Бабушка спрашивает маленького внука: 
- Кто любит гавкать? 
- Собачка. 
- Правильно. А кто любит мяукать? 
- Кошечка. 
- Молодец. А кто любит мычать? 
- Коровка. 
- Умница. А кто любит хрюкать? 
- Антивирус Касперского. 


Компания Микрософт решила отозвать из эксплуатации 1 000 000 000
клавиатур.
Причина - износ клавиш Ctr, Alt, Del


Умирает, значит, программист. Попадает, понятное дело, в
рай; мученик, как никак. Там ему архангел Гавриил (с Богом
программистам разговаривать не положено, не по рангу им это) и
говорит: "Спрашивай, - говорит, - чего хочешь, на любой вопрос
отвечу". Такая вот золотая рыбка с крыльями. Hу программист,
ясное дело, сразу просит показать небесный сервак. Приводит его
Гавриил в серверную, включает экран. Смотрит, смотрит
программист, а потом как заорет: "Да это же винда!" "Hу да, -
отвечает Гавриил, - А ты чего хотел, Hетварь, что ли?" "И пятый
сиквел сервер базой данных?" "Ясное дело". "А софт на
каком-нибудь бэйсике написан?" "Hе на каком-нибудь, а на вижуал".
"Так оно все, небось, глюкует страшно?" "А ты думал, вы от
хорошей жизни по восемь часов в сутки дрыхнете? Это мы по ночам
перегружаемся".



Дружественные рассылки:

Рассылки Subscribe.Ru
Программирование на Delphi
Рассылка сайта Delphi coding


Все кто хочет изучить Delphi и реально научиться писать свои программы, ЦПИ "Эверест" поможет Вам.
Всё, что Вам нужно это компьютер и доступ к интернету - для получения уроков.

10 причин в пользу платного обучения в ЦПИ "Эверест"…

1. Когда Вы платите деньги- появляется дополнительный стимул против лени: надо учиться, ведь деньги уже уплачены….
2. Учась платно, получаете удобный для Вас график работы.
3. Весь необходимый справочный материал Вы получите в свое время и на русском языке.
4. Используя интернет в качестве бесплатной библиотеки, Вы получаете все ее минусы:

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

5. Стоимость обучения одного месяца в ЦПИ "Эверест" сравнима с ценой хорошей книги. Но часто ли Вам попадались книги, рассчитанные именно на Вас. Мы же работаем индивидуально.
6. Автор книги или магазин не несет никакой ответственности за то, поняли ли Вы материал или нет, мы же закрепляем за каждым курсантом преподавателя, курирующего Вас.
7. Освоив программирование в Delphi - Вы освоите:

  • основы настоящего программирования- структурного и процедурного программирования ;
  • систему работы с базами данных и SQL- запросами, а это одно из самых перспективных направлений в программировании;
  • язык программирования ObjectPascal, что позволит Вам легко перейти, при желании, на С или Паскаль;
  • работу с компьютерной графикой;
  • при желании - основы низкоуровневого программирования ( Ассемблер).

8. А это значит, что …Мы предлагаем получить "высшее образование" - профессию программиста всего за 1 год и 144 доллара, любой ВУЗ попросит в 3 раза больше за один только семестр.
9. Вы получаете самый практический курс в сети, поскольку теория дается только тогда, когда она действительно необходима…
10. Учиться у нас легко и просто. Весь материал доступен и простым людям, не имеющим никогда дел с программированием….


По всем вопросам обращайтесь ко мне.

Если вы встретили в интернете интересный сайт или статью, да и вообще, что угодно связанное с Delphi, поделитесь ссылкой.
Если можете написать статью связанную с Delphi - присылайте с радостью выложу.
Давайте поможем друг другу!  Архив рассылки.

Предложения, критику и пожелания пишите на e-mail.


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiinternet
Отписаться
Вспомнить пароль

В избранное