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

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Ответить
ssl
новенький
Сообщения: 59
Зарегистрирован: 17.05.2005 11:27:01

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

Сообщение ssl »

В хелпе сказано, что есть две ипостаси (overload) функции StrLen: для PChar и для PWideChar. Но компиляция на вызов StrLen с параметром PWideChar ругается, и в исходниках только одна "ипостась" (Lasarus 1.0.4, FPC 2.6.0).
:(
Чем пользуется народ?
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Length() работает для PWideChar.
ssl
новенький
Сообщения: 59
Зарегистрирован: 17.05.2005 11:27:01

Сообщение ssl »

Я так и сделал, как временную меру. Просто есть опасения, что параметр для Length сначала будет преобразован в строку (WideString или Unicodestring), т.е. куча лишних действий, в т.ч. и с выделением памяти. Или "оно умное"? :)
Аватара пользователя
Максим
энтузиаст
Сообщения: 599
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Сообщение Максим »

ssl писал(а):и в исходниках только одна "ипостась" (Lasarus 1.0.4, FPC 2.6.0).

Плохо искали, всё там есть. Убедитесь, что используется режим компилятора objfpc или delphi и подключён модуль SysUtils.
ssl
новенький
Сообщения: 59
Зарегистрирован: 17.05.2005 11:27:01

Сообщение 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) - нема :(
Аватара пользователя
Максим
энтузиаст
Сообщения: 599
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Сообщение Максим »

Да, действительно, это появилось только в версии 2.6.2.
Ответить