Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Texbox больше 65535 символов Добавлено: 19.10.10 18:38  

Автор вопроса:  Zahar | Web-сайт: partnerka-ru.info
В моей проге имеется текстбокс, в которую пользователь в процессе работы после копирования из своего текста вставляет для дальнейшей обработки строки огромной длины. Какой бы не была строка длины, она мануально нормально вставляется и прокручивается в текстбоксе. Но вот "забрать" из этого текстбокса можно только первые 65535 символов.
Это меня не устраивает. Можно как-то забрать всю строку (может быть что-то из АПИ)?
Сразу оговорюсь, что ричтекстбокс тоже не подходит - строки могут быть больше, чем позволяет даже этот контрол.

Ответить

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

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #1 Добавлено: 19.10.10 19:26
забрать?

Ответить

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



Вопросов: 0
Ответов: 73
 Профиль | | #2 Добавлено: 20.10.10 04:33
Выделяешь буфер в памяти размером на единицу больше, чем возвращает SendMessage hwnd, WM_GETTEXTLENGTH и используешь его как параметр в WM_GETTEXT.
Если нужен пример, укажи язык.

Ответить

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



Вопросов: 91
Ответов: 67
 Web-сайт: partnerka-ru.info
 Профиль | | #3
Добавлено: 20.10.10 10:23
Очень нужен пример. Язык VB.

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #4 Добавлено: 20.10.10 10:33
Контрол RichTextBox. Его знает любая винда.

Ответить

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



Вопросов: 91
Ответов: 67
 Web-сайт: partnerka-ru.info
 Профиль | | #5
Добавлено: 20.10.10 10:49
  1. Контрол RichTextBox. Его знает любая винда.

Внимательно читайте мой вопрос. Этот контрол тоже не подходит, т.к. вставляемый текст может быть больше 2МБТ

Ответить

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



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #6
Добавлено: 20.10.10 10:50
Eugy пишет:
Выделяешь буфер в памяти размером на единицу больше, чем возвращает SendMessage hwnd, WM_GETTEXTLENGTH и используешь его как параметр в WM_GETTEXT.
Если нужен пример, укажи язык.

Да-да. Я посмотрю, как он потом с этим буфером будет работать. Он же привык к бейсику, а тут АПИ для работы со строками. Или, хуже того, отдельная библиотека со строковыми функциями.

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #7 Добавлено: 20.10.10 11:50
Zahar пишет:
Этот контрол тоже не подходит, т.к. вставляемый текст может быть больше 2МБТ
Не вижу связи.
А если хочешь безлаговую работу с большим текстом, пиши свой контрол.

Ответить

Номер ответа: 8
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #8
Добавлено: 20.10.10 12:39
Проблема не в контроле, а в типе String.

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #9 Добавлено: 20.10.10 15:25
в vb6 ?

Ответить

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



Вопросов: 91
Ответов: 67
 Web-сайт: partnerka-ru.info
 Профиль | | #10
Добавлено: 20.10.10 17:26
Не вижу связи.
А если хочешь безлаговую работу с большим текстом, пиши свой контрол.

Велосипед целесообразно избобретать тогда, когда точно уверен, что он ещё не изобретён...

Проблема не в контроле, а в типе String.

Не понимаю, о чём Вы, но думаю не о том, что надо.

в vb6 ?

Да, хотя и в последующих версиях то же самое...

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #11 Добавлено: 20.10.10 19:17
Zahar пишет:
Да, хотя и в последующих версиях то же самое...
ложь и провокация. вовсе не так же. там до 2ккк символов
Zahar пишет:
Велосипед целесообразно избобретать тогда, когда точно уверен, что он ещё не изобретён...
richtextbox изобретен, смекаешь?
Zahar пишет:
Не понимаю, о чём Вы, но думаю не о том, что надо.
а я думаю о том. -_-

Ответить

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



Вопросов: 91
Ответов: 67
 Web-сайт: partnerka-ru.info
 Профиль | | #12
Добавлено: 20.10.10 23:52
richtextbox изобретен, смекаешь?

Я уже писал дважды, что этот контрол из-за пусть большего, но всё же ограничения по длине строки, мне тоже не решает проблему.

а я думаю о том. -_-

Тогда поясните.

Ответить

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



Вопросов: 0
Ответов: 73
 Профиль | | #13 Добавлено: 21.10.10 01:56
Не надо пугать. Надеюсь винда не китайская)
  1. Public Function gettxt(hwndtxt As Long) As String
  2.     Dim lt As Long
  3.     lt = SendMessage(hwndtxt, WM_GETTEXTLENGTH, 0, 0) + 1
  4.     ReDim strbuf(lt - 2) As Byte
  5.     SendMessage hwndtxt, WM_GETTEXT, lt, strbuf(0)  ' As Any
  6.     gettxt = StrConv(strbuf, vbUnicode)
  7. End Function
  8.  
  9. Public Function settxt(hwndtxt As Long, s As String) As Long
  10.    SendMessage hwndtxt, WM_SETTEXT, lt, ByVal s ' As Any
  11. End Function
  12.  
  13.  
  14. Private Sub Form_Load()
  15.     settxt Text1.hwnd, "А" & String(66000, "z") & "Я"
  16.     Dim M As String
  17.     M = gettxt(Text1.hwnd)
  18.     Debug.Print Len(M)
  19. End Sub

Ответить

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



Вопросов: 0
Ответов: 73
 Профиль | | #14 Добавлено: 21.10.10 07:39
p/s/ я несколко перемудрил, пытаясь показать, что строка - это просто массив байт.)
  1. Public Function gettxt(hwndtxt As Long) As String
  2.     Dim lt As Long
  3.     lt = SendMessage(hwndtxt, WM_GETTEXTLENGTH, 0, 0) + 1
  4.     gettxt = String(lt - 1, 0)
  5.     SendMessage hwndtxt, WM_GETTEXT, lt, ByVal gettxt
  6. End Function

Ответить

Номер ответа: 15
Автор ответа:
 Zahar



Вопросов: 91
Ответов: 67
 Web-сайт: partnerka-ru.info
 Профиль | | #15
Добавлено: 21.10.10 15:03

Eugy,
Что ещё сказать - СПАСИБО - ВСЁ РАБОТАЕТ!!

Ответить

Страница: 1 |

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



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