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

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


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

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

Выпуск : № 35


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


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

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


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


Вопрос № 79 задаёт: Vitek Ответить
Здравствуйте!А можно ли сделать так, Что-бы прога запустилась в определённое время по часам компа, причём до этого, прога ни разу не запускалась?
Вопрос № 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 - его на самом деле нет, но он может там появиться позже
Может кто другой алгоритм посоветует? Опишите его плиз, а то мои прямые извилины сегодня не осилят логического мышления.
Вопрос № 81 задаёт: TR  Ответить
Я хочу использовать компоненты или библиотеку, которые распространябтся по лицезии MPL (Mozilla Public License).

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

Кто осведомлен в этом вопросе, ответьте, пожалуйста.

Текст лицензии можете взять с http://dupkiller.bira.ck.ua/tr/mpl.pdf (английский правда).

Я хоть английский и знаю, но информации много. Запутался. :(

Вопрос № 82 задаёт: Sergey Ответить
каким образом работать с принтером (я хочу посчитать кол - во страниц, которые принтер напечатал) WinApi, Slooper если можно поподробнее спасибо

Ответы.

Вопрос № 70 задаёт: Владимир Ответить 
Где можно наиболее полно получить информацию о программировании,компонентах Delphi 6, Delphi 2005, для программирования приложений с Internet, конкретно- с прототколами POP3,SMTP?
Отвечает: Dead Lord
Наверно, тут:)) Задавай вопросы и получишь ответы.
Если тебя интересуют протоколы, то их спецификации найдёшь на
http://www.rfc-editor.org/cgi-bin/rfcsearch.pl

Если надо команды почтовых протоколов- посмотри там же и в справке телнета по команде help после соединения с сервером

Вопрос № 73 задаёт: exp-project Ответить 
Как в ХР программно перезагрузить и выключить компьютер?
Отвечает: Dead Lord 
Используй функцию ExitWindows().
В качестве первого параметра ей передается она из трех констант:
EW_RESTARTWINDOWS
EW_REBOOTSYSTEM
EW_EXITANDEXECAPP
Второй параметр используется для перезагрузки компьютера в режиме эмуляции MS DOS.

ExitWindows(EW_RESTARTWINDOWS, 0 );//перезагрузка, например

Вопрос № 74 задаёт: Vitek Ответить 
Учусь делать различные вычисления. В Console Application -всё получается. Но как сделать так, что-бы в обычных Application присваивать переменным число из поля ввода? И какой компонент лучше использовать для ввода чисел?
Отвечает: Dead Lord 
Наверно, для ввода чисел лучше использовать TEdit, для присвоения используй StrToInt(edit1.text)
Вопрос № 75 задаёт: Ящик Ответить 
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
case Key of
'.',',':

// разделитель целой и дробной частей числа
begin
if Key <> DecimalSeparator
// если введенный не соответствует символу
//по умолчанию то во избежании ошибки заменяем на допустимый
then Key := DecimalSeparator; // заменить не получается. Ошибка:
//incompatible types string and char
Подскажите начинающему чайнику чё не так?
Отвечает: Dead Lord 
Если //incompatible types string and char- выводимая ошибка, то, наверно, DecimalSeparator имеет тип String, а Key-имеет тип Char. Следует Попробуй написать key := PChar(DecimalSeparator)
Вопрос № 77 задаёт: TR Ответить 
Здравствуйте, помогите, пожалуйста, с решением такого вопроса: Как мне сделать, чтобы при раскрытии одного из подпунктов моего попап-меню отображалось контекстное меню Проводника (например, как при щелчке правой кнопкой на файле)? И еще: Как сделать самому команды аналогичные Копировать, Вырезать, Отправить...? Заранее благодарю!
Отвечает: turusov 
Выдрал из своего проекта. Можно взять за основу

procedure TfrmMain.RegClick;
const
  cnBD_Str = 'Базы данных NsDBView ver %s';
var
  R: TRegIniFile;
  TempStr: string;
  BD_Str: string;
begin
  BD_Str:= Format(cnBD_Str,[NsDublicateApp.FileVersion]);

  R:= TRegIniFile.Create('');

  try
  try
    with R do begin
      RootKey:= HKEY_CLASSES_ROOT;
      TempStr:= ReadString('NsDBView_DB','','');
      if TempStr <> BD_Str then begin
        WriteString('.db','','NsDBView_DB');                    
        WriteString('NsDBView_DB','',BD_Str);
        WriteString('NsDBView_DB\DefaultIcon','',ParamStr(0)+',1');
        WriteString('NsDBView_DB\Shell\open','','Открыть файл...');
        WriteString('NsDBView_DB\Shell\open\command','',ParamStr(0)+' "%1"');
        WriteString('NsDBView_DB\Shell\Second_Action','','Открыть файл с помощью NsDBView...');
        WriteString('NsDBView_DB\Shell\Second_Action\command','',ParamStr(0)+' "%1"');
        WriteString('.dbf','','NsDBView_DBF');
        WriteString('NsDBView_DBF','',BD_Str);
        WriteString('NsDBView_DBF\DefaultIcon','',ParamStr(0)+',2');
        WriteString('NsDBView_DBF\Shell\open','','Открыть файл...');
        WriteString('NsDBView_DBF\Shell\open\command','',ParamStr(0)+' "%1"');
        WriteString('NsDBView_DBF\Shell\Second_Action','','Открыть файл с помощью NsDBView...');
        WriteString('NsDBView_DBF\Shell\Second_Action\command','',ParamStr(0)+' "%1"');
        WriteString('.db_index','','NsDBView_DB_Index');
        WriteString('NsDBView_DB_Index','',BD_Str);
        WriteString('NsDBView_DB_Index\DefaultIcon','',ParamStr(0)+',7');
      end;//if
    end;
  except
    NsDublicateApp.MessageWrite(PChar('Не могу зарегестрировать программу'),PChar(nslError),MB_ICONERROR);
// on E:Exception do
// MessageBox(Application.Handle,
// PChar('Не могу зарегестрировать программу.'+StrMessage(E.Message)), PChar(nslError), MB_OK OR MB_ICONERROR);
  end;
  finally
    R.Free;
  end;
end;


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


Сегодня поговорим о том, как работать с RadioButton. RadioButton представляют собой кнопки, автоматически объединяемые в группы. В каждой группе, одновременно может быть включена только одна кнопка. Главное отличие этих кнопок от CheckBox'ов в том, что если повторно щелкнуть на радио-кнопке, то ее состояние не изменится.

Кнопки RadioButton могут быть двух стилей - BS_AUTORADIOBUTTON и BS_RADIOBUTTON. Как и в случае с CheckBox'ами, стиль BS_AUTORADIOBUTTON означает, что Windows сама будет менять состояние кнопки (включена/выключена). А если у кнопки стиль BS_RADIOBUTTON, то состояние кнопки устанавливает программист.


const
  IDRBtn1 = 1;
  IDRBtn2 = 2;
  IDRBtn3 = 3;

var
  RBtn1: HWND;
  RBtn2: HWND;
  RBtn3: HWND;
  Static1: HWND;
  Static2: HWND;
  Static3: HWND;

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


RBtn1 := CreateWindowEx( 0, 'Button', 'Опция 1',
                         WS_CHILD or WS_VISIBLE or BS_AUTORADIOBUTTON,
                         20, 15, 80, 20, Wnd, IDRBtn1, hInstance, nil );
SendMessage( RBtn1, WM_SETFONT, GetStockObject( ANSI_VAR_FONT ), 0 );

RBtn2 := CreateWindowEx( 0, 'Button', 'Опция 2',
                         WS_CHILD or WS_VISIBLE or BS_AUTORADIOBUTTON,
                         110, 15, 80, 20, Wnd, IDRBtn2, hInstance, nil );
SendMessage( RBtn2, WM_SETFONT, GetStockObject( ANSI_VAR_FONT ), 0 );

RBtn3 := CreateWindowEx( 0, 'Button', 'Опция 3',
                         WS_CHILD or WS_VISIBLE or BS_AUTORADIOBUTTON,
                         200, 15, 80, 20, Wnd, IDRBtn3, hInstance, nil );
SendMessage( RBtn3, WM_SETFONT, GetStockObject( ANSI_VAR_FONT ), 0 );

Обрабатывать будем следующим образом. Получив сообщение от одной из радио-кнопок, в соответствующей метке напишем, что она включена.


function WindowProc( Wnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM ): LRESULT; stdcall;
begin
   case Msg of
      WM_DESTROY: begin
         PostQuitMessage( 0 );
         Result := 0;
         Exit;
      end;
      WM_COMMAND: begin
         case LoWord( wParam ) of
            IDRBtn1: begin
               SetWindowText( Static1, 'Включена' );
               SetWindowText( Static2, 'Выключена' );
               SetWindowText( Static3, 'Выключена' );
            end;
            IDRBtn2: begin
               SetWindowText( Static1, 'Выключена' );
               SetWindowText( Static2, 'Включена' );
               SetWindowText( Static3, 'Выключена' );
            end;
            IDRBtn3: begin
               SetWindowText( Static1, 'Выключена' );
               SetWindowText( Static2, 'Выключена' );
               SetWindowText( Static3, 'Включена' );
            end;
         end;
      end;
      else
         Result := DefWindowProc( Wnd, Msg, wParam, lParam );
   end;
end;

И в заключении сделаем следующее. Когда форма отобразится на экране, одна из радио-кнопок должна быть включена (например первая). Для этого ей надо послать сообщение BM_CLICK.


// Показываем окно
ShowWindow( Wnd, SW_SHOWNORMAL );

SendMessage( RBtn1, BM_CLICK, 0, 0 );

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

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

Компоненты:   

TmVolCtrl v.1.0

Позволяет контролировать выход с саунд-карты. Можно менять уровень громкости CD-ROM, Wave, Midi, LineIn.

TWinAmpComponent

TWinAmpComponent - компонент с полной функциональностью WinAmp'а.

TBASSPlayer v.1.81

TBASSPlayer это компонент, который может проигрывать потоковые файлы WAV, MP3, WMA и Ogg Vorbis используя BASS sound system (BASS.DLL и BASSWMA.DLL). TBASSPlayer версии 1.2 также может проигрывать другие типы потоковых файлов, используя плагины Winamp 2. BASS sound system это прекрасная аудио библиотека, которая помогает легко создавать универсальный аудио проигрыватель потоковых файлов. Эта встроенная возможность ограничена в некоторых популярных типах потоковых файлов. TBASSPlayer версии 1.2 снимает данные ограничения. С TBASSPlayer версии 1.2, возможно использование плагинов Winamp 2 для проигрывания потокового файла, декодирование которого не возможно с помощью BASS sound system. TBASSPlayer имеет несколько особенностей: возможна одновременная загрузка до 8 внешних модулей Winamp 2(input plug-ins).

TToneGen v.2.15

Компонент позволяет легко создавать звуковые эффекты в приложении, не нуждаясь во внешних файлах или ресурсах приложения. Для Delphi и C++Builder. TToneGen генерирует звуковой сигнал в памяти и оттуда же его и проигрывает.

Color Scheme Editor v.1.0

Компонента для создания собственных цветовых схем с последующим занесением их в реестр.


Исходники:   

Книжный магазин

Курсовая работа
Задание:

Разработать структуру базы данных для книжного магазина, содержащую информацию о складах.
В базе данных должна храниться следующая информация:
1. Данные о складах:
- название склада
- адрес
- телефон
- ФИО директора
2. Данные о книгах:
- название книги
- автор
- издательство
- год выпуска
- тираж
- область знаний
- цена издательства
3. Наличие на складе:
- количество упаковок
- количество экземпляров в упаковке
4. Информация о продажах:
- дата продажи
- название книги
- автор
- отпускная цена за экземпляр
- количество экземпляров
Построить запросы, формы и отчеты, позволяющие получать следующую информацию:
- какие книги по конкретной тематике имеются на складе
- подготовить бланк заказа на приобретение конкретной книги
- сравнить отпускные цены по конкретной книге на различных складах
- какие книги конкретного автора имеются на складе
- подготовить выручку от реализации за день, месяц
ER-диаграмма:


Схема отношений:

База данных Paradox. Программа написана в среде Delphi 4.0 с использованием BDE (Borland Database Engine).

Покупка-продажа товаров

Курсовая работа
Задание:
Разработать структуру базы данных для фирмы, осуществляющей посредническую деятельность, оптовую закупку товаров у других фирм и продажу товаров более мелким продавцам.
В базе данных должна храниться следующая информация:
1. Данные о сотруднике фирмы:
- ФИО
- должность
- оклад
- отдел, в котором работает сотрудник
2. Сведения о приобретаемых товарах:
- тип товара (бытовая техника, продукты, автомобили и др.)
- наименование продукции
- цена
- количество приобретаемого товара
- дата заключения контракта
- производитель
- сотрудник, оформивший заказ на приобретение товара
3. Сведения о фирмах, продающих товары:
- название фирмы
- телефон
- адрес
- директор фирмы
4. Сведения о фирмах, покупающих товары:
- название фирмы
- телефон
- адрес
- директор фирмы
5. Сведения о поставляемых товарах:
- тип товара
- наименование продукции
- цена
- количество поставляемого товара
- дата заключения контракта
- фирма-покупатель
- сотрудник, оформивший заказ на приобретение товара
- сроки оплаты по каждому заказу
Построить запросы, формы и отчеты, позволяющие получать следующую информацию:
- сведения о составе и стоимости заказов (дата оформления, сотрудник, оформивший заказ, сумма заказа, перечень товаров)
- какова средняя стоимость различных видов поставляемых товаров за весь период и за отдельные временные интервалы
ER-диаграмма:


Схема отношений:

База данных Paradox. Программа написана в среде Delphi 4.0 с использованием BDE (Borland Database Engine).

Формула-1

Курсовая работа
Задание:

Разработать структуру базы данных для учета результатов гонок ФОРМУЛА-1.
В базе данных должна храниться следующая информация:
1. Команды-участники:
- название команды
- страна
- менеджер (владелец)
- пилоты
2. Спонсоры команды:
- фирма
- страна
- сумма взноса
3. Календарь гонок:
- дата
- страна
- трасса
4. Результаты гонок:
- кто какое место занял
- кто на каком круге сошел
- причина схода с трассы
5. Данные о пилотах:
- фамилия, имя, дата рождения, рост, вес
- в каких гонках участвовал раньше
- сколько гонок провел за ту или иную команду
- сколько очков набрал, какие места занимал в гонках
Построить запросы, формы и отчеты, позволяющие получать следующую информацию:
- сколько очков имеет та или иная команда по результатам гонок
- сколько раз представители команды были на подиуме
- сколько гонок провел пилот
- сколько очков набрал пилот (1 место - 10, 2 место - 6, 3 место - 4, 4 место - 3, 5 место - 2, 6 место - 1)
- фамилии и имена пилотов, не добравшихся до конца трассы с указанием причины схода. Данные должны выводиться по убыванию количества сходов с трассы. Пилоты, не имеющие сходов, выводиться не должны
ER-диаграмма:


Схема отношений:



База данных Paradox. Программа написана в среде Delphi 4.0 с использованием BDE (Borland Database Engine).

EditEx Source

Исходник СУПЕР-МОЩНЕЙШЕГО текстового редактора, поддерживающий 56 подсветок, 9 кодировок, имеющий отличные средства для работы с HTML, есть встроенный браузер, НЕХ, встроенный FTPклиент... Да много всего!!!

Телефонный справочник под Windows

Исходники телефонного справочника под Виндовс (Delphi).

WinAmpDll

DLL-проект, показывающий как создавать плагины для WinAmp


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

http://www.noil.pri.ee/ - Здесь вы можете почитать статьи, скачать исходники и компоненты, пообщаться на форуме.


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

Великий грех всех программ перед программистами - они делают то, что программист написал, а не то, что он имел в виду.


Длина популярной программы прямо пропорциональна квадрату ее версии, умноженной на десять.


Женщина изучает прейскурант колдовских услуг, чтобы отвадить мужа гулять на сторону:
Заклинание белой магии, гарантия 1 год, 1000 долларов;
заклинание серой магии, гарантия 2 года, 2000 долларов;
заклинание черной магии, гарантия 3 года, 3000 долларов...
А вот это мне подходит - срок действия не ограничен, абонентская плата в год 250 долларов, безлимитный высокоскоростной интернет!


Идет фидошник по улице, видит, как маляр закрашивает нецензурные слова на заборе.
"Наверное, модератор", - подумал он.


В России и в США одновременно созданы самообучающиеся компьютеры с искусственным интеллектом. Ровно через 1 год 22 дня 13 часов 25 минут 34 сек. американский компьютер взломал управление ядерными ракетами и уничтожил все живое. Русскому же компьютеру было все равно - он спился где-то месяцев за 5-6 до этого.


Совершенство в русском мате достигается при вождении автомобиля и
работе с продукцией фирмы Microsoft.



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

Рассылки 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
Отписаться
Вспомнить пароль

В избранное