На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> UDT CopyMemory
    LenB(V1)=2, LenB(V2)=8(указатель на строку =4байта + его выравнивание по границе=4, итого 8байт). Я копирую 2 байта в struT2, т.е. указатель на строку s1 не перезапишет. Но в реале перезаписывает, я никак не могу понять, откуда берутся доп. нули в хвосте struT1?
    Сообщение отредактировано: BlackSun -
      Цитата BlackSun @
      Но в реале перезаписывает, я никак не могу понять, откуда берутся доп. нули в хвосте struT1?

      Где? Ничего не перезаписывает.
        Ага, причина в постоянной строке в структуре. Таки строка s1 ломается в результате.

        ExpandedWrap disabled
          Private Type stru1
           sFix As String * 10
           b1 As Byte
           b2 As Byte
          End Type
           
          Private Type stru2
           sFix As String * 10
           b1 As Byte
           b2 As Byte
           
           s1 As String
          End Type
           
          Private Sub Form_Load()
          Dim V1 As stru1, V2 As stru2
              V2.s1 = "123"
              CopyMemory V2, V1, LenB(V1)
          Debug.Print LenB(V1), LenB(V2), V2.s1
              Unload Me
          End Sub
          Цитата TheTrik @
          Чтобы такого не было нужно передавать ByVal VarPtr().
          Сообщение отредактировано: TheTrik -
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0231 ]   [ 17 queries used ]   [ Generated: 19.03.24, 09:25 GMT ]