Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Clipboard заменяет 0x00 на 0x32 Почему ??? Добавлено: 07.03.06 15:01  

Автор вопроса:  VisBas | Web-сайт: chipmicro.narod.ru
Clipboard заменяет 0x00 на 0x32. Почему ?
И как прочитать то, что реально наход. в буффере (если там текст, с непечатн. симв.) ?

Ответить

  Ответы Всего ответов: 14  

Номер ответа: 1
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #1 Добавлено: 07.03.06 15:21
В тексте вообще-то не должно быть непечатных символов. Иначе это будет не текст, и получать его нужно будет иначе, чем с CFTEXT.
И можно было бы привести код, чтобы не гадать на кофейной гуще.

Ответить

Номер ответа: 2
Автор ответа:
 VisBas



Вопросов: 44
Ответов: 127
 Web-сайт: chipmicro.narod.ru
 Профиль | | #2
Добавлено: 07.03.06 15:41
Непечатный символ, в частности - 0x00 специально копируется из hex редактора, а затем VB должен показать его ascii код ( 0x00 ).

Вот такая вещь не прокатыв.

a = Clipboard.GetText
Label1 = Asc(a)


все непечатные симв. замен. на 0x32 (пробел).
Как только что обнаружил, такая же ерунда со строками ресурсов.

Ответить

Номер ответа: 3
Автор ответа:
 VisBas



Вопросов: 44
Ответов: 127
 Web-сайт: chipmicro.narod.ru
 Профиль | | #3
Добавлено: 07.03.06 15:44
Опечатался, замен. на 0x20 (пробел)

Ответить

Номер ответа: 4
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #4 Добавлено: 07.03.06 16:25
Дык это не clipboard меняет, а vb. Есть у него дурная привычка в строку вместо нуля пихать пробел.

Ответить

Номер ответа: 5
Автор ответа:
 VisBas



Вопросов: 44
Ответов: 127
 Web-сайт: chipmicro.narod.ru
 Профиль | | #5
Добавлено: 07.03.06 16:49
Понятное дело, что VB. Как бы его отучить от этой дурной привычки..
или она у него в генах, передается от версии к версии..

Ответить

Номер ответа: 6
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #6 Добавлено: 07.03.06 16:55
Можно попробовать отказаться от vb объекта clipboard и vb-строк, и работать напрямую с апи.
OpenClipboard сотоварищи +
SysAllocString и компания
CopyMemory

Ответить

Номер ответа: 7
Автор ответа:
 VisBas



Вопросов: 44
Ответов: 127
 Web-сайт: chipmicro.narod.ru
 Профиль | | #7
Добавлено: 07.03.06 17:22
Мда.. Хотелось проще и быстрее, но раз так пошел я обратно в Builder C++

Ответить

Номер ответа: 8
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #8 Добавлено: 08.03.06 20:58
У класса Clipboard есть помимо методов GetText и SetText методы Get/SetData, но они работают с типом IPictureDisp. Почему-то.

Ответить

Номер ответа: 9
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #9 Добавлено: 09.03.06 11:44
Вообще странно. Насколько мне известно, VB никогда не заменял нуллчары в строке на что либо еще. А при работе с буффером через GetText используются NTS, в следствие чего имеем, скажем:

Private Sub Form_Load()
Dim Str1 As String, Str2 As String
Str1 = "1234" & vbNullChar & vbNullChar & "5678"
MsgBox Len(Str1)
Clipboard.SetText Str1
Str2 = Clipboard.GetText
MsgBox Len(Str2)
End Sub

Ответить

Номер ответа: 10
Автор ответа:
 VisBas



Вопросов: 44
Ответов: 127
 Web-сайт: chipmicro.narod.ru
 Профиль | | #10
Добавлено: 09.03.06 20:10
Вообще странно. Насколько мне известно, VB никогда не заменял нуллчары в строке на что либо еще.


После твоего кода, засомневался и еще раз проверил. Странно, но факт !

Ответить

Номер ответа: 11
Автор ответа:
 VisBas



Вопросов: 44
Ответов: 127
 Web-сайт: chipmicro.narod.ru
 Профиль | | #11
Добавлено: 09.03.06 20:18
А WinCom может врать ? Я из него копирую.

Ответить

Номер ответа: 12
Автор ответа:
 VisBas



Вопросов: 44
Ответов: 127
 Web-сайт: chipmicro.narod.ru
 Профиль | | #12
Добавлено: 09.03.06 20:31

Разобрался :

1. Буффер не может содержать нулевого символа, т.к. последний, является указателем на конец строки.
2. WinCom, видимо при копировании, заменяет 0x00 на 0x20.

Т.о. скопированный из WinCom'a 0x00 превращается в 0x20, а vb действительно тут непричем.

Ответить

Номер ответа: 13
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #13
Добавлено: 11.03.06 19:15
Скопированный отовсюду 0x00 превращается в 0x20, это сам виндовый клипбоард делает такое преобразование.

Ответить

Номер ответа: 14
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #14 Добавлено: 13.03.06 10:30
Ну с каких пор клипборд такое делает?
Смотрим еще раз пост N9 и еще раз убеждаемся - при работе с текстом буффер использует Null-Terminated Strings, из чего следует - строка после vbNullChar просто отсекается. Неужто так трудно запустить и проверить?

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам