Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2009, 23:28   #1
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию Delphi 7 - скрытые возможности Unicode (WideString)

Приветствую. Почему скрытые ? Вот к примеру, не могу понять, нигде встретить вообще не могу. Открывает модуль System.pas нажимаем поиск и вбиваем _WStrCopy и Мы видим, список всех функций для работы с этим интерфейсом WideString.

Собственно вопрос, как возможно, если вообще возможно, все это дело связананное с префиксом WStr... сделать видимым для моей программы в коде, чтобы можно было свободно использовать эти функции ?

Спасибо за сотрудничество.
BOBAH13 вне форума Ответить с цитированием
Старый 12.03.2009, 23:32   #2
Роман Радер
Форумчанин
 
Аватар для Роман Радер
 
Регистрация: 16.12.2006
Сообщений: 859
По умолчанию

я не знаю почему его нельзя нормально использовать, но просто скопировать реализацию в отдельный модуль и юзать можно.
Роман Радер вне форума Ответить с цитированием
Старый 12.03.2009, 23:40   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А вот на это внимание не обратили?
Цитата:
Note
Under Win32, WideString values are not reference-counted. Under Linux, they are.
mihali4 вне форума Ответить с цитированием
Старый 12.03.2009, 23:40   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от Роман Радер Посмотреть сообщение
я не знаю почему его нельзя нормально использовать, но просто скопировать реализацию в отдельный модуль и юзать можно.
Гы. Если бы это было так легко Может уже есть порт где-нибудь ?

Цитата:
Сообщение от mihali4 Посмотреть сообщение
А вот на это внимание не обратили?
Проблему не решает

Даже в таком случае почему тогда мы видим это:

Код:
procedure _WStrFromPWCharLen(var Dest: WideString; Source: PWideChar; CharLength: Integer);
{$IFDEF LINUX}
..............
{$ENDIF}
{$IFDEF MSWINDOWS}
asm
        { ->    EAX     Pointer to WideString (dest)      }
        {       EDX     Pointer to characters (source)    }
        {       ECX     number of characters  (not bytes) }
        TEST    ECX,ECX
        JE      _WStrClr

        .....

        CALL    SysFreeString
end;
{$ENDIF}
{$IFDEF MSWINDOWS} - зачем тогда ?

Последний раз редактировалось BOBAH13; 12.03.2009 в 23:43.
BOBAH13 вне форума Ответить с цитированием
Старый 12.03.2009, 23:43   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Проблему не решает
И не может решить, ибо не существует такой справки (и ссылок) для винды... Только для Линукса...
mihali4 вне форума Ответить с цитированием
Старый 13.03.2009, 00:02   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Скопировал идею из System.pas, и написал саморучно, вот что вышло

Код:
function WideCopy(const Str: WideString; const Index, Count: Integer): WideString;
var
  i, n, l: Integer;
begin
  l := Length(Str);
  i := Index;
  n := Count;

  if (i < 1) then
    i := 0
  else
  begin
    Dec(i);
    if (i > l) then
      Exit;
  end;
  
  if (n < 0) then
    Exit;
  n := l - i;
  if (n > Count) then
    n := Count;

  SetLength(Result, n);
  Move(Pointer(Integer(Pointer(Str)) + i * SizeOf(WChar))^,
    Pointer(Result)^, n * SizeOf(WChar));  
end;
BOBAH13 вне форума Ответить с цитированием
Старый 13.03.2009, 06:12   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Ребят, а перейти на версию 2009 - не вариант? Там заявленная нативная поддержка уникода (в том числе и в VCL контролах)...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.03.2009, 08:40   #8
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Ребят, а перейти на версию 2009 - не вариант? Там заявленная нативная поддержка уникода (в том числе и в VCL контролах)...
Не вариант Но я уже собираюсь, просто проект уже делаю на дельфи 7. Щас вот все String заменяю на WideString, вроде все стало норм.
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрытые компоненты drknn Компоненты Delphi 6 07.03.2009 18:08
Unicode в Delphi Fedorovich БД в Delphi 2 31.10.2008 21:34
Unicode и Delphi BOBAH13 Общие вопросы Delphi 3 27.09.2008 13:08
WideString и String Mitron Общие вопросы Delphi 1 11.02.2008 19:14
Media возможности в Delphi NoName_emaNoN Win Api 12 28.01.2008 12:18