Чем пользуется народ?
Не найду StrLen для PwideChar
Модератор: Модераторы
Не найду StrLen для PwideChar
В хелпе сказано, что есть две ипостаси (overload) функции StrLen: для PChar и для PWideChar. Но компиляция на вызов StrLen с параметром PWideChar ругается, и в исходниках только одна "ипостась" (Lasarus 1.0.4, FPC 2.6.0).

Чем пользуется народ?
Чем пользуется народ?
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Length() работает для PWideChar.
Я так и сделал, как временную меру. Просто есть опасения, что параметр для Length сначала будет преобразован в строку (WideString или Unicodestring), т.е. куча лишних действий, в т.ч. и с выделением памяти. Или "оно умное"? 
ssl писал(а):и в исходниках только одна "ипостась" (Lasarus 1.0.4, FPC 2.6.0).
Плохо искали, всё там есть. Убедитесь, что используется режим компилятора objfpc или delphi и подключён модуль SysUtils.
Хм. Создаю новый проект, добавляю SysUtils:
Получаю:
project1.lpr(14,11) Error: Incompatible type for arg no. 1: Got "PWideChar", expected "PChar"
Искал FAR'ом строку StrLen по всем файлам в каталоге D:\lazarus\fpc\2.6.0\source\rtl с подкаталогами.
StrLen(PWideChar) - нема
Код: Выделить всё
program Project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes, SysUtils
{ you can add units after this };
var P: PWideChar;
begin
StrLen(P);
end.
Получаю:
project1.lpr(14,11) Error: Incompatible type for arg no. 1: Got "PWideChar", expected "PChar"
Искал FAR'ом строку StrLen по всем файлам в каталоге D:\lazarus\fpc\2.6.0\source\rtl с подкаталогами.
StrLen(PWideChar) - нема
Да, действительно, это появилось только в версии 2.6.2.
