На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: SCINER, B.V.
  
    > Сущность строк в Visual Basic , Небольшое исследование на тему
      Всем привет.

      Хочу разъяснить что такое строка в Visual Basic и как она работает.

      Как извесно, строки в VB хранятся в виде BSTR (о том что это, подробно написал ANDLL здесь)
      Формат весьма универсальный.

      Однако это не единственная фишка VB в строках.
      Если быть внимательным, то можно заметить, что для получения адресов переменных используется функция VarPtr, но только не для строковых. Для них испольуется StrPtr.
      Возникает 2 резонных вопроса: почему отдельная функция? и почему StrPtr и VarPtr возвращают разные знания?

      Всё дело в том, что строка в VB это всего-лишь 4 байта, являющиеся указателем на BSTR строку, причём не на её начало, а на данные (тоесть начало BSTR строки + 4 байта)!
      Вот так всё просто и универсально.

      Функция VarPtr возвращает адрес ячейки памяти, где лежит адрес BSTR строки + 4, а функция StrPtr возвращает число из этой ячейки.
      Да и функции StrPtr физически не существует :)

      На рисунке сделал визуализацияю для упрощения понимания :)

      Кстати появляется возможность быстрого "копирования" строки или создания строк, данные в которых будут общими.
      Сообщение отредактировано: SCINER -

      Прикреплённая картинка
      Прикреплённая картинка
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0351 ]   [ 16 queries used ]   [ Generated: 27.04.24, 15:36 GMT ]