Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

О пользе типа ShortString при использовании WinAPI

Delphi , Синтаксис , Текст и Строки



Автор: Павел Озерский
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> О пользе типа shortstring при использовании WinAPI

Довольно значительное количество функций WinAPI принимают как параметры
указатель на заполняемый ими массив символов и размер этого массива, а
возвращают количество помещенных ими символов. Если мы работаем в ANSI (не
Unicode), здесь удобно пользоваться короткими строками и "убивать двух зайцев"
за один раз.

Зависимости: windows
Автор:       Павел Озерский, pavel@insect.mail.iephb.ru, Санкт-Петербург
Copyright:   собственная разработка автора (Павел Озерский)
Дата:        26 апреля 2002 г.
***************************************************** }

//пример:

function ClassName(hwnd: tHandle): shortstring;
begin
  byte(Result[0]) := GetClassName(hwnd, pChar(@Result[1]), 255);
end;

Программный код на Delphi!

Автор Павел Озеровский подчеркивает преимущества использования типа ShortString при работе с функциями WinAPI, которые требуют указателя на массив символов и его размер в параметрах.

В частности, он обсуждает функции, которые заполняют массив символов и возвращают количество символов, которое они написали. При работе в ANSI-режиме (без Unicode) удобно использовать ShortString, потому что она позволяет "убить двух птиц одним камнем" - выделить буфер для строки и инициализировать его пустой строкой одновременно.

Пример кода defines функцию ClassName, которая принимает tHandle (окно Windows) в качестве входного параметра и возвращает ShortString. Функция использует функцию WinAPI GetClassName для получения имени класса окна, связанного с данным handle, и хранит его в Result ShortString.

Вот что код делает:

function ClassName(hwnd: tHandle): shortstring;
begin
  byte(Result[0]) := GetClassName(hwnd, pChar(@Result[1]), 255);
end;

Функция GetClassName принимает три параметра:

  • hwnd: окно handle для которого получить имя класса.
  • lpClassName: указатель на буфер, который будет получать имя класса. В этом случае он установлен в pChar(@Result[1]), что является указателем на первый символ строки Result.
  • nMaxCount: максимальное количество символов, которое может быть написано в буфере. В этом случае оно установлено в 255.

Функция возвращает количество символов, написанных в буфере.

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

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

О пользе типа ShortString при использовании WinAPI заключается в возможности работать с функциями, принимающими указатель на заполняемый массив символов и размер этого массива, а также возвращать количество помещенных символах.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Текст и Строки ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 09:00:39/0.0034689903259277/0