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

Мастера DELPHI. Новости мира компонент, FAQ, статьи...


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

Ежедневная рассылка сайта Мастера DELPHI

DELPHIMASTER.ru

Выпуск от 25.09.03 09:04

Вышел очередной дайджест форумов. Скачать можно здесь
Кое-что из нашей кладовки   |x|
  • Однобитные массивы размерности 1D, 2D, 3D route66 route66@hotbox.ru   (24.09.03 16:39)
    Однобитные массивы размерности 1D, 2D, 3D,организованные в виде классов. Созданы в виде 1 модуля с 3-мя классами (не компоненты в терминологии Delphi). В качестве элементов массивов выступают биты, соответственно возможен индексный доступ к каждому биту по порядку от начала массива (1-й элемент имеет индекс 0). Также возможен побайтный доступ. Классы, определяющие 2-х и 3-х мерные массивы имеют все возможности 1-мерного.
    В исходнике имеются краткие, но, надеюсь, понятные комментарии. Там, где их нет - названия идентификаторов говорят сами за себя :).
    Для применения массивов нужно: 1)включить модуль в проект; 2)пользоваться.
    Данный модуль использовался в реальном проекте, все классы и их методы были проверены. В предлагаемой редакции глюки, баги и прочие подобные не очень полезные свойства ПО обнаружены не были (хотя это и не гарантирует их отсутствие).
    »»» Скачать: исходные тексты (2кб)
  • Synapse ORMADA ormada@mail.ru   (24.09.03 12:23)
    Всем кто работает с кодировкой/декодировкой/e-mail просто необходимо множество готовых ф-ий и компонентов.Писал не я ,но нашёл.
    »»» Скачать: исходные тексты (747кб) демонстрационный EXE файл (36кб) посмотреть скриншот
Лучшее из нашего FAQ   |x|
Кто-нибудь может кинуть мне пример программирования COM портов

»»» Rukhimovich Oleg - rukhiich@hotmail.com (06.06.00 20:23)
Если нужны подробности, пишите.

unit TestRosh;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Panel1: TPanel;
Label1: TLabel;
PortCombo: TComboBox;
Label2: TLabel;
BaudCombo: TComboBox;
Label3: TLabel;
ByteSizeCombo: TComboBox;
Label4: TLabel;
ParityCombo: TComboBox;
Label5: TLabel;
StopBitsCombo: TComboBox;
Label6: TLabel;
Memo1: TMemo;
Edit1: TEdit;
Button1: TButton;
Memo2: TMemo;
Edit2: TEdit;
Label7: TLabel;
Button2: TButton;
Label8: TLabel;
Edit3: TEdit;
procedure Button1Click(Sender: TObject);
procedure Memo2Change(Sender: TObject);
procedure Memo1Change(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure PortComboChange(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Memo1DblClick(Sender: TObject);
   end;

var
   Form1: TForm1;

implementation

{$R *.DFM}

uses Registry;

var
   hPort: THandle;

procedure TForm1.Memo1Change(Sender: TObject);
var
   i: Integer;
begin
   Edit1.Text := '';
   for i := 1 to Length(Memo1.Text) do
Edit1.Text := Edit1.Text + Format('%x', [Ord(Memo1.Text[i])]) + ' '
end;

procedure TForm1.Memo2Change(Sender: TObject);
var
   i: Integer;
begin
   Edit2.Text := '';
   for i := 1 to Length(Memo2.Text) do
Edit2.Text := Edit2.Text + Format('%x', [Ord(Memo2.Text[i])]) + ' '
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   S, D: array[0..127] of Char;
   actual_bytes: Integer;
   DCB: TDCB;
begin

   FillChar(S, 128, #0);
   FillChar(D, 128, #0);

   DCB.DCBlength := SizeOf(DCB);

   if not GetCommState(hPort, DCB) then begin
ShowMessage('Can''t get port state: ' + IntToStr(GetLastError));
Exit;
   end;

   try
DCB.BaudRate := StrToInt(BaudCombo.Text);
   except
BaudCombo.Text := IntToStr(DCB.BaudRate);
   end;

   try
DCB.ByteSize := StrToInt(ByteSizeCombo.Text);
   except
ByteSizeCombo.Text := IntToStr(DCB.ByteSize);
   end;

   if ParityCombo.ItemIndex > -1 then
DCB.Parity := ParityCombo.ItemIndex
   else
ParityCombo.ItemIndex := DCB.Parity;

   if StopBitsCombo.ItemIndex > -1 then
DCB.StopBits := StopBitsCombo.ItemIndex
   else
StopBitsCombo.ItemIndex := DCB.StopBits;

   if not SetCommState(hPort, DCB) then begin
ShowMessage('Can''t set new port settings: ' + IntToStr(GetLastError));
Exit;
   end;

PurgeComm(hPort, PURGE_TXABORT or PURGE_RXABORT or PURGE_TXCLEAR or PURGE_RXCLEAR);

   StrPCopy(S, Memo1.Text);

   if not WriteFile(hPort, S, StrLen(S), actual_bytes, nil) then begin
ShowMessage('Can''t write to port: ' + IntToStr(GetLastError));
Exit;
   end;

   if not ReadFile(hPort, D, StrToInt(Edit3.Text), actual_bytes, nil) then
ShowMessage('Can''t read from port: ' + IntToStr(GetLastError))
   else
ShowMessage('Read ' + IntToStr(actual_bytes) + ' bytes');
   Memo2.Text := D;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
   with TRegistry.Create do begin
OpenKey('\Software\MBEM\Rosh Shkila', True);
WriteString('Port', PortCombo.Text);
WriteString('Baud Rate', BaudCombo.Text);
WriteString('Byte Size', ByteSizeCombo.Text);
WriteString('Parity', IntToStr(ParityCombo.ItemIndex));
WriteString('Stop Bits', IntToStr(StopBitsCombo.ItemIndex));
Destroy;
   end;
   if not CloseHandle(hPort) then begin
ShowMessage('Can''t close port: ' + IntToStr(GetLastError));
Exit;
   end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   hPort := CreateFile(PChar(PortCombo.Text),
   GENERIC_READ + GENERIC_WRITE,
   0,
   nil,
   OPEN_EXISTING,
   FILE_ATTRIBUTE_NORMAL,
   0);

   if hPort = INVALID_HANDLE_VALUE then
ShowMessage('Can''t open ' + PortCombo.Text + ': ' + IntToStr(GetLastError))
   else
Button2.Hide;
end;

procedure TForm1.PortComboChange(Sender: TObject);
begin
   FormDestroy(Sender);
   Button2.Show;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
   with TRegistry.Create do begin
OpenKey('\Software\MBEM\Rosh Shkila', True);
PortCombo.Text := ReadString('Port');
BaudCombo.Text := ReadString('Baud Rate');
ByteSizeCombo.Text := ReadString('Byte Size');
ParityCombo.ItemIndex := StrToInt(ReadString('Parity'));
StopBitsCombo.ItemIndex := StrToInt(ReadString('Stop Bits'));
Destroy;
   end;
end;

procedure TForm1.Memo1DblClick(Sender: TObject);
begin
   Memo1.Lines.Clear;
   Memo2.Lines.Clear;
   Edit1.Text := '';
   Edit2.Text := '';
end;

end.


»»» peter - ppp_extr@chat.ru (03.07.00 09:05)
Пример вывода текста на печать используя ком порт

Var
Printer: THandle;
N : Cardinal;
C : POverlapped;

begin
//Открываем порт принтера для записи
Printer := CreateFile(PChar('LPT1'),
GENERIC_READ or GENERIC_WRITE,0,nil,
OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);

//Печатаем слово 'Hello World';
WriteFile(Printer,'Hello World',11,N,c);
//Закрываем порт
CloseHandle(Printer);

-= Из конференции сайта MASTERS OF DELPHI (http://delphi.mastak.com) =-

»»» Прислать свои комментарии

Обсуждается в конференциях   |x|
  • Как узнать атрибут файла?
    Как узнать: файл Read-only или нет? Спасибо.
  • Ping из-под НЕ админа
    Пингую с пом. IDICMP компы в локальной сетке. Пинг проходит только из-под админа. Под обычным юзером пинг не получается....
  • Trigger
    Пытаюсь создать тригер для генерации ID SET TERM !!; CREATE TRIGGER GENERATENEWID FOR TABLE BEFORE INSERT AS BEGIN NEW....
  • Psapi.dll - ошибка обновления?
    Привет ALL! Переставил систему с 2000 проф на адв. сервер и при инсталляции офиса и Дельфи появилась ошибка что Psapi....
  • Как из TBitmap вытащить plain data
    Как из TBitmap вытащить plain data - без всяких заголовков и сохранить данные в файл? Scanline?
  • Как определить версию Windows?
    Здравствуйте. Подскажите, пожалуйста, как программно определить версию Windows. Как это сделать средствами WinAPI и где ...
  • KOLDataModule
    Подскажите как правильно работать с KOLDataModule ее надо ставить на отдельную форму? Или можно объекты TADOQuery ...
У нас большой выбор статей   |x|
Создание COM-объектов средствами Delphi. Часть 1
Как преодолеть отсутствие множественного наследования в Delphi.
Однако есть способ решения этих проблем: применение единого стандарта для организации связи между объектами, который не зависит от используемой платформы и языка. Именно такова разработанная Microsoft компонентная модель объекта COM (Component Object Model). Данная технология уже получила широкое внедрение: ведь на ее базе работают механизмы OLE и ActiveX.
Новинки книжного рынка   |x|
Delphi и технология COM (+CD)
Книга посвящена использованию технологии Component Object Model (COM) в приложениях, созданных с помощью Delphi. Освещаются вопросы, связанные с принципами модели COM, разработкой элементов управления ActiveX, серверов и контроллеров автоматизации, применением OLE-документов в приложениях, а также с использованием программного обеспечения COM и COM+ для организации распределенных вычислений. Книга предназначена для опытных программистов, имеющих опыт разработки приложений с помощью Delphi и интересующихся вопросами применения COM-технологии и созданием распределенных приложений на ее основе.
Автор: Елманова Н. З., Трепалин С. В., Тенцер А.
Другие сайты о DELPHI   |x|
Novarm Development Center
Программные продукты с Delphi исходниками, форумы для программеров и юзеров. Каталог программного обеспечения с системой получения полной статистики загрузок по сайтам и странам.

» Оценка сайта: 2
Опрос населения :)
Какую ОС вы используете _в_основном_ при написании програм для Win32
»»» Win2k
»»» Win98
»»» WinXP
»»» WinNT
»»» WinMe
»»» Win95
»»» Ни одну из перечисленных
»»» Я не пишу под Win32
»»» Не знаю
Для души

Хокку дня
Три самурая на зимнем ветру
Саке распивают холодным
Лучше б мы взяли портвейна...

Афоризмы
Прошу! Не надо афишировать мою всемирную известность.

Фраза дня
Заряженному танку в дуло не смотрят.

Дурацкие законы (информация предоставлена сайтом kurilka.com)
В городе Файетвилл в Арканзасе (США) считается преступлением убивать "любое живое существо".
В городе Ногалез в Аризоне (США) особым постановлением запрещено носить подтяжки.

И на закуску коротенький анекдот
Индейцы придумали подушки, но делали их очень некачественно - поэтому и ходили с перьями на голове...

Фотоприколы.
Начните день с хорошего настроения!
http://www.delphimaster.ru/cgi-bin/prikol.pl?id=357732


На этом позвольте откланяться и пожелать вам удачного дня.
Искренне ваш, Алексей (merlin@delphimaster.ru)

Добро пожаловать на сайт -= Мастера DELPHI =- 


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное