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

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


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

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

Выпуск : № 53


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


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

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


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


Вопрос № 126 задаёт: Середюк И. А. Ответить  
Здравствуйте.
Есть поле редактирования RichEdit2. Через заданое время текст в поле перерисовывается. Как зделать так, чтобы во время перемещения курсора над строками в этом поле текст строки становился жирным и подчеркнутым (только во время нахождения над ним курсора), и при двойном нажатии левой (или правой) клавиши миши этот текст присвоить какой-то переменной (допустим переменной StrVid) строкового типа?
Спасибо!
Вопрос № 127 задаёт: Андрей Леонов  Ответить
Появилась необходимость взаимодействия с Активными Дирректориями.
ldifde.exe уже не усраивает.
Как работать с AD из Delphi 6/7?
Есть ли какая литература по этой теме, и где её взять?
Вопрос № 128 задаёт: Роман  Ответить
Здраствуйте!
Подскажите, пожалуйста, как обратиться к переменной (массиву), если имя этой переменной хранится в виде строковой константы? А также как вызвать процедуру (функцию), если известно строковое представление ее имени?

Ответы.

Ожидаются.


Статья:    "Сортировка ListView в режиме vsReport при нажатии на заголовок колонки." http://decoding.narod.ru/practic/sortlistview/sortlistview.html

Довольно интересная, а главное полезная функция. Те, кто работают с Total Commander, понимают, о чем идет речь. И сейчас мы постараемся разобраться, как это делается.

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

Добавим в программу целочисленную переменную Sort. Она будет отвечать за направление сортировки - прямое или обратное.


var
  Form1: TForm1;
  Sort: integer = 1;

Далее нужно выбрать директорию, списком файлов из которой мы будем манипулировать. Желательно, чтобы в директории было побольше файлов, директория Windows вполне подойдет. Следующая функция вызывает диалог выбора каталога (не забудьте подключить FileCtrl).


procedure TForm1.Button1Click(Sender: TObject);
var
  Dir1: string; // Dir1 - начальная директория
  Dir2: string; // Dir2 - выбранный каталог
begin
   if SelectDirectory( 'Выбор каталога', Dir1, Dir2 ) then
   begin
      ListView1.Clear;  // Очищаем ListView
      GetFiles( Dir2 ); // Запускаем поиск файлов
   end;
end;

В приведенном выше коде процедура GetFiles ищет файлы и выводит всю информацию о них в ListView. Разберем поподробней эту процедуру.


procedure GetFiles( APath: string );
var
  sr: TSearchRec;
  isFound: boolean;
  ListItem: TListItem;
  temp: string;
begin
   // Поиск первого файла в директории
   isFound := FindFirst( APath + '\*.*', faAnyFile, sr ) = 0;
   // Если он найден, получаем информацию о нем, и ищем дальше
   while isFound do
   begin
      // Если файл не является папкой
      if ( sr.Name <> '.' ) and ( sr.Name <> '..' ) and
         ( ( sr.Attr and faDirectory ) <> faDirectory ) then
         begin
            // Добавляем новый item
            ListItem := Form1.ListView1.Items.Add;
            // Получаем имя файла
            temp := ExtractFileName( sr.Name );
            if LastDelimiter( '.', temp ) <> 0 then
               ListItem.Caption := Copy( temp, 0, LastDelimiter( '.', temp )-1 )
            else
               ListItem.Caption := temp;
            // Получаем расширение файла
            temp := ExtractFileExt( sr.Name );
            ListItem.SubItems.Add( Copy( temp, Pos( '.', temp )+1, Length( temp ) ) );
            // Размер файла
            ListItem.SubItems.Add( IntToStr( sr.Size ) );
            // Дата последнего изменения файла
            ListItem.SubItems.Add( DateToStr( FileDateToDateTime( 
                                   FileAge( APath + '\' + sr.Name ) ) ) );
            // Время последнего изменения файла
            ListItem.SubItems.Add( TimeToStr( FileDateToDateTime( 
                                   FileAge( APath + '\' + sr.Name ) ) ) );
         end;
      // Пытаемся найти следующий файл
      isFound := FindNext( sr ) = 0;
   end;
   // Прекращаем поиск
   FindClose( sr );
end;

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


procedure TForm1.ListView1ColumnClick(Sender: TObject;
  Column: TListColumn);
begin
   Sort := -Sort;
   // Если щелкнули по первой колонке - Caption
   if Column = ListView1.Columns[0] then
      ListView1.CustomSort( @SortCaptionAsString, Sort )
   else
   // Если щелкнули по второй колонке - SubItem1
   if Column = ListView1.Columns[1] then
      ListView1.CustomSort( @SortFirstSubItemAsString, Sort )
   else
   // Если щелкнули по третьей колонке - SubItem2
   if Column = ListView1.Columns[2] then
      ListView1.CustomSort( @SortSecondSubItemAsInteger, Sort )
   else
   // Если щелкнули по четвертой колонке - SubItem3
   if Column = ListView1.Columns[3] then
      ListView1.CustomSort( @SortThirdSubItemAsDate, Sort )
   else
   // Если щелкнули по пятой колонке - SubItem4
   if Column = ListView1.Columns[4] then
      ListView1.CustomSort( @SortFourthSubItemAsTime, Sort );
end;

Помните, в самом начале мы объявили переменную Sort, которая отвечает за направление сортировки. Здесь, при каждом клике по заголовку, мы меняем значение Sort на противоположное (Sort может принимать значения 1 и -1), тем самым мы меняем направление сортировки.

Ну и наконец, сами процедуры сортировки.


// Сортируем по первой колонке
// Caption - текстовое поле
function SortCaptionAsString(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
begin
   Result := 0;
   if AnsiUpperCase( Item1.Caption ) > AnsiUpperCase( Item2.Caption ) then
      Result := ParamSort
   else
   if AnsiUpperCase( Item1.Caption ) < AnsiUpperCase( Item2.Caption ) then
      Result := -ParamSort;
end;

// Сортируем по второй колонке
// SubItem1 - текстовое поле
function SortFirstSubItemAsString(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
begin
   Result := 0;
   if AnsiUpperCase( Item1.SubItems[0] ) > AnsiUpperCase( Item2.SubItems[0] ) then
      Result := ParamSort
   else
   if AnsiUpperCase( Item1.SubItems[0] ) < AnsiUpperCase( Item2.SubItems[0] ) then
      Result := -ParamSort;
end;

// Сортируем по третьей колонке
// SubItem2 - числовое поле
function SortSecondSubItemAsInteger(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
begin
   Result := 0;
   if StrToInt( Item1.SubItems[1] ) > StrToInt( Item2.SubItems[1] ) then
      Result := ParamSort
   else
   if StrToInt( Item1.SubItems[1] ) < StrToInt( Item2.SubItems[1] ) then
      Result := -ParamSort;
end;

// Сортируем по четвертой колонке
// SubItem3 - поле с датой
function SortThirdSubItemAsDate(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
begin
   Result := 0;
   if StrToDate( Item1.SubItems[2] ) > StrToDate( Item2.SubItems[2] ) then
      Result := ParamSort
   else
   if StrToDate( Item1.SubItems[2] ) < StrToDate( Item2.SubItems[2] ) then
      Result := -ParamSort;
end;

// Сортируем по пятой колонке
// SubItem4 - поле с временем
function SortFourthSubItemAsTime(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
begin
   Result := 0;
   if StrToTime( Item1.SubItems[3] ) > StrToTime( Item2.SubItems[3] ) then
      Result := ParamSort
   else
   if StrToTime( Item1.SubItems[3] ) < StrToTime( Item2.SubItems[3] ) then
      Result := -ParamSort;
end;

Ну вот, еще один секрет раскрыт. Удачи в программировании.

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

Библиотеки AllLib (Delphi 3 - Delphi 7). 
Набор исходников для расширения функционала стандартных библиотек Delphi. 
Некоторые из функций: 

конвертация строк, например, '1 443,45', '12=34', '1111011b', '30-JAN-2004', '30/01/04 11:12:55.945', 'Wed Mar 13 19:15:06 UTC+0300 2002' в соответствующие типы;
кодирование в и из строк C++/JScript, Pascal, Base64, HTML, URLEncode/URLDecode, KOI, ISO;
работа с блоками памяти; 
индексируемые списки и таблицы с быстрым поиском без изменения порядка элементов; 
обертки потоков с кэшированием чтения и записи, включая построчное; 
список, копирование и удаление файлов с подкаталогами, проверка по маске; 
ini в памяти или потоке;
экспорт, импорт и удаление ключа реестра с подразделами, корректной работой при ограниченных правах доступа; 
threadvar с инициализацией и завершением, правильной работой в Delphi 3, поддержка многопоточности всем кодом; 
работа с исключениями; 
поддержка русского и английского языков; 
удобные функции;
диалоги без VCL, SysUtils и ресурсов; 
работа с базами данных через ADO без VCL, синхронизация выборки с таблицей в памяти; 
работа с сокетами для сервера и клиента без VCL и SysUtils, работа с HTTP; 
поддержка IActiveScript для выполнения скриптов JScript, VBScript; 
список процессов, запуск с ожиданием завершения, межзадачный обмен, запуск и остановка сервисов, приложений COM+; 
сжате и распаковка с помощью Delphi ZLib; 
привязка к компьютеру путем чтения из оборудования параметров CPU, BIOS, HDD; 
загрузка графики с помощью GDI+; 
финансовые; 
генерация ключей и запросов, выпуск и установка сертификатов, асимметричная шифрация и дешифрация, подпись и проверка ЭЦП с использованием CryptoAPI RSA, RSA-128 и Крипто-Про ГОСТ 28147-89, ГОСТ Р 34.11/34.10-94/2001 с возможностью кэширования ключей;
асимметричная шифрация и дешифрация, подпись и проверка ЭЦП с использованием trial-версии Сигнал-КОМ Message-PRO RSA и СКЗИ ГОСТ 28147-89, ГОСТ Р 34.11/34.10-94/2001 с возможностью кэширования ключей; 
симметричная шифрация и дешифрация.

Более полный перечень функций - см. http://vstepanov78.narod.ru/prog.htm
Исходники библиотек: http://vstepanov78.narod.ru/alllib.zip
Пример утилиты, использующей библиотеки, и ее исходники: http://vstepanov78.narod.ru/utils.zip

PianoEx v.1.1

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

Особенности:
  1. Проигрывает MIDI-файл, симулируя игру на пианино
  2. Поддерживает MIDI IN/OUT.
  3. Красочное нажатие на клавиши «пианино»
  4. Отображение дорожек разными цветами
  5. Включает компоненты MidiFile, MidiPlayer, MidiIn / MidiOut, PianoKeyboard, PianoTracks / PianoChannels.

Книги:   

Основы СОМ.

2-е издание, исправленное и переработанное. 
Автор: Дейл Роджерсон. 228 стр., РУС., PDF.

  Данная книга посвящена рассмотрению модели компонентных объектов Microsoft, более известной как COM (Component Object Model).Полученные знания Вы сможете применить при создании ваших собственных компонентов на С++, а также компонентов ActiveX, OLE. 
  Эта книга рассчитана на обычного программиста на C++, имеющего некоторый опыт разработки для Win32. Но даже если Вы только начинаете использовать C++, пугаться не следует . Разрабатывать компоненты COM на C++ несложно , и мастерского владения языком не требуется . Опыт программирования для Microsoft Windows также полезен , но не обязателен . У пользователей UNIX не должно возникнуть проблем при чтении примеров . Преимущество программистов для Windows лишь в том , что они знакомы с инструментами разработки Windows-приложений . Знание Microsoft Foundation Class Library (MFC) и опыт работы с этой библиотекой также не обязательны . 
  Если Вы пишете программы для UNIX, Macintosh, Linux, VMS или какой - другой операционной системы , эта книга также будет Вам полезна . Концепции , заключенные в СОМ , работают не только в операционной системе Microsoft Windows, СОМ — это не большой API. COM — это способ программирования , стоящий в одном ряду с такими способами , как структурное или объектно - программирование . Вы можете использовать подход СОМ в любой операционной системе . 

http://www.krf.bsu.by/EBooks/zip/R9761.rar
или
http://it-books.narod.ru/COM/InsideCOM_rus.rar
Примеры с диска 0.5Mb C++ 
http://it-books.narod.ru/COM/code.rar

Сущность технологии СОМ.

Автор: Дональд Бокс.
Сант-Петербург, 2001, , 400 стр., РУС., HTML.

В этой книге СОМ исследуется с точки зрения разработчика C++. Написанная ведущим специалистом по модели компонентных объектов СОМ, она раскрывает сущность СОМ, помогая разработчикам правильно понять не только методы модели программирования СОМ, но и ее основу. Понимание мотивов создания СОМ и ее аспектов, касающихся распределенных систем, чрезвычайно важно для тех разработчиков, которые желают пойти дальше простейших приложений СОМ и стать по-настоящему эффективными СОМ-программистами. Показывая, почему СОМ для распределенных систем (Distributed СОМ) работает именно так, а не иначе, Дон Бокс дает вам возможность применять эту модель творчески и эффективно для ежедневных задач программирования. 

http://www.krf.bsu.by/EBooks/zip/R9771.rar
или
http://it-books.narod.ru/COM/EssentialCOM_rus.rar

Пишем компилятор.

Д.Креншоу 293c., pdf

  Эта серия статей является руководством по теории и практике разработки синтаксических анализаторов и компиляторов языков программирования. Прежде чем вы закончите чтение этой книги, мы раскроем все аспекты конструирования компиляторов,
создадим новый язык программирования, и построим работающий компилятор. Хотя я по образованию и не специалист в компьютерах, я интересовался компиляторами в течение многих лет. Я покупал и старался разобраться с содержимым практически каждой выпущенной на эту тему книги. И, должен признаться, это был долгий путь. Эти книги написаны для специалистов в компьютерной науке и слишком трудны для понимания большинству из нас. Но с течением лет часть из прочитанного начала доходить до меня. Закрепить полученное позволило то, что я начал самостоятельно пробовать это на своем собственном компьютере. Сейчас я хочу поделиться с вами
своими знаниями. После прочтения этой книги вы не станете ни специалистом, ни узнаете всех секретов теории конструирования компиляторов. Я намеренно полностью игнорирую большинство теоретических аспектов этой темы. Вы изучите только практические аспекты, необходимые для создания работающей системы.

http://www.krf.bsu.by/EBooks/zip/R9911.pdf

Основы конструирования компиляторов.

В.А.Серебряков, М,П,Галочкин 182c., pdf

  Предлагаемая вниманию читателя книга основана на курсе лекций, прочитанных на факультете вычислительной математики и кибернетики Московского государственного университета и факультете управления и прикладной математики Московского физикотехнического института в 1991-1999 гг. Авторы надеются, что издание книги восполнит существенный пробел в литературе на русском языке по разработке компиляторов.
  Содержание книги представляет собой “классические” разделы предмета: лексический и синтаксический анализ, организация памяти компилятора (таблицы символов) и периода исполнения (магазина), генерация кода. Рассматриваются некоторые средства автоматизации процесса разработки трансляторов, такие как LEX, YACC, СУПЕР, методы генерации оптимального кода. Сделана попытка на протяжении всего изложения провести единую “атрибутную” точку зрения на процесс разработки компилятора. В книге не затрагиваются чрезвычайно важные вопросы глобальной оптимизации и разработки компиляторов для машин с параллельной архитектурой. Авторы надеются восполнить эти пробелы в будущем.
  Книга будет полезной как студентам и аспирантам программистских специальностей, так и профессионалам в этих областях.
Авторы с благодарностью примут все конструктивные замечания по содержанию книги.

http://www.krf.bsu.by/EBooks/zip/R9921.zip


Интересные и полезные сайты по Delphi: Если Вы хотите, чтобы Ваш сайт был в этом разделе пишите.
http://www.noil.pri.ee/     - Здесь вы можете почитать статьи, скачать исходники и компоненты, пообщаться на форуме.
http://www.delphi.int.ru/  - Ресурс для Delphi-программистов, где каждый найдёт что-то полезное!
http://www.ExCode.ru     - Программирование на высоком уровне
http://decoding.narod.ru - Сайт для Delphi-программистов со статьями автора, компонентами, FAQ, и другой полезной информацией.
http://www.p-lib.pp.ru/    - На сайте находится множество статей по Visual C++, Visual Basic, ASP.NET/ASP, Delphi, Java, Базам Данных, 
PHP, Perl и т. д. Кроме того есть каталог сайтов, свежие компьютерные новости, софт, книги и многое другое.

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

:)

А марку чтоб почту отправить они на монитор клеют?

:)

А windows завис, и в ОЗУ полезли нехорошие мысли...

:)

Бубен для сисадмина - цена 10$.

:)

Идет мужик по лесу. Вдруг видит - на полянке сидит паренек и красит
ромашку в зеленый цвет.
- Парень, ты что делаешь?
- Как что - к ICQ коннекчусь!

:)

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

:)

Разговаривают два программиста:
- Слушай, я вчера в магазине такую вещь видел - чувствую, что для
компа, а для чего нужна - понять не могу...
- А как называется?
- Мышеловка.


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

Рассылки 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
Архив рассылки
Отписаться Вебом Почтой
Вспомнить пароль

В избранное