Страница 1 из 1

Не найду StrLen для PwideChar

СообщениеДобавлено: 09.03.2013 14:23:02
ssl
В хелпе сказано, что есть две ипостаси (overload) функции StrLen: для PChar и для PWideChar. Но компиляция на вызов StrLen с параметром PWideChar ругается, и в исходниках только одна "ипостась" (Lasarus 1.0.4, FPC 2.6.0).
:(
Чем пользуется народ?

Re: Не найду StrLen для PwideChar

СообщениеДобавлено: 09.03.2013 18:28:24
Sergei I. Gorelkin
Length() работает для PWideChar.

Re: Не найду StrLen для PwideChar

СообщениеДобавлено: 10.03.2013 10:31:09
ssl
Я так и сделал, как временную меру. Просто есть опасения, что параметр для Length сначала будет преобразован в строку (WideString или Unicodestring), т.е. куча лишних действий, в т.ч. и с выделением памяти. Или "оно умное"? :)

Re: Не найду StrLen для PwideChar

СообщениеДобавлено: 10.03.2013 15:03:02
Максим
ssl писал(а):и в исходниках только одна "ипостась" (Lasarus 1.0.4, FPC 2.6.0).

Плохо искали, всё там есть. Убедитесь, что используется режим компилятора objfpc или delphi и подключён модуль SysUtils.

Re: Не найду StrLen для PwideChar

СообщениеДобавлено: 10.03.2013 15:46:28
ssl
Хм. Создаю новый проект, добавляю SysUtils:

Код: Выделить всё
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) - нема :(

Re: Не найду StrLen для PwideChar

СообщениеДобавлено: 10.03.2013 20:00:03
Максим
Да, действительно, это появилось только в версии 2.6.2.