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

Конвертация String в PWideChar

Delphi , Синтаксис , Преобразования



Автор: Gua
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> 
Зависимости: ???
Автор:       Gua, gua@ukr.net, ICQ:141585495, Simferopol
Copyright:   Andre .v.d. Merwe
Дата:        18 июля 2002 г.
***************************************************** }

function StringToPWide(sStr: string; var iNewSize: integer): PWideChar;
var
  pw: PWideChar;
  iSize: integer;
begin
  iSize := Length(sStr) + 1;
  iNewSize := iSize * 2;

  pw := AllocMem(iNewSize);

  MultiByteToWideChar(CP_ACP, 0, PChar(sStr), iSize, pw, iNewSize);

  Result := pw;
end;

Пример использования:

procedure TForm1.Button1Click(Sender: TObject);
var
  iSize: integer;
begin
  ChangeWallpaper(StringToPWide('C:\1.jpg', iSize));
end;
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Конвертация PWideChar в String

Зависимости: ???
Автор:       Gua, gua@ukr.net, ICQ:141585495, Simferopol
Copyright:   Andre .v.d. Merwe
Дата:        18 июля 2002 г.
***************************************************** }

function PWideToString(pw: PWideChar): string;
var
  p: PChar;
  iLen: integer;
begin
  iLen := lstrlenw(pw) + 1;
  GetMem(p, iLen);

  WideCharToMultiByte(CP_ACP, 0, pw, iLen, p, iLen * 2, nil, nil);

  Result := p;
  FreeMem(p, iLen);
end;

Пример кода на языке Delphi!

Функции StringToPWide и PWideToString используются для конвертации между строкой (Unicode-строкой) и указателем на массив широких символов (PWideChar).

Функция StringToPWide:

function StringToPWide(sStr: string; var iNewSize: integer): PWideChar;
var
  pw: PWideChar;
  iSize: integer;
begin
  iSize := Length(sStr) + 1; // добавляем 1 для null-терминированной строки
  iNewSize := iSize * 2; // рассчитываем требуемый размер в широких символах

  pw := AllocMem(iNewSize);
  MultiByteToWideChar(CP_ACP, 0, PChar(sStr), iSize, pw, iNewSize); // конвертируем из.multi-быт до широкого символа
  Result := pw;
end;

Эта функция принимает строку в качестве входного параметра и возвращает указатель на PWideChar, который указывает на конвертированную строку. Она использует функцию MultiByteToWideChar для выполнения конвертации.

Функция PWideToString:

function PWideToString(pw: PWideChar): string;
var
  p: PChar;
  iLen: integer;
begin
  iLen := lstrlenw(pw) + 1; // получаем длину строки широких символов
  GetMem(p, iLen); // выделяем память для конвертированной строки

  WideCharToMultiByte(CP_ACP, 0, pw, iLen, p, iLen * 2, nil, nil); // конвертируем из широкого символа до.multi-быта
  Result := p;
  FreeMem(p, iLen); // освобождаем выделившуюся память
end;

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

Пример использования:

procedure TForm1.Button1Click(Sender: TObject);
var
  iSize: integer;
begin
  ChangeWallpaper(StringToPWide('C:\1.jpg', iSize)); // конвертируем строку в PWideChar и передаем ее ChangeWallpaper
end;

В этом примере функция StringToPWide используется для конвертации строки в PWideChar, который затем передается процедуре ChangeWallpaper.

В целом, эти функции полезны при работе с строками в Delphi, особенно при работе с путями к файлам или другими строками, которые могут содержать неASCII-символы.

В статье описаны функции для преобразования строк на русском языке между типами String и PWideChar с использованием библиотек Delphi.


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

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




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


:: Главная :: Преобразования ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-07-06 10:59:49/0.0062282085418701/0