powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / String не бесконечный?
15 сообщений из 15, страница 1 из 1
String не бесконечный?
    #38247756
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте есть переменная с типом данных String
в цикле в неё стекается так
Код: vbnet
1.
2.
Сгенерировано = Сгенерировано & Первое_слово & vbCrLf
Количество_сгенерировано = Количество_сгенерировано + 1



в конце цикла
Код: vbnet
1.
Selection.TypeText Text:=Сгенерировано


и мессага сколько же Количество_сгенерировано
так вот мессага говорит, что всего Количество_сгенерировано = 27140, а реально напечатало 2255 шт., вопрос - почему не всё напечатало, напрашивается вывод, что String не бесконечный?
И как следить когда он переполняется? что предпринимать?
так то у меня в цикле раньше было
Код: vbnet
1.
Selection.TypeText Text:=Первое_слово & vbCrLf


и горя не знал, но здесь подсказали, что так медленно
...
Рейтинг: 0 / 0
String не бесконечный?
    #38247780
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Считай дополнительно длину сгенерированной строки:
Код: vbnet
1.
Длина_сгенерировано = Длина_сгенерировано + Len(Первое_слово) + 2
...
Рейтинг: 0 / 0
String не бесконечный?
    #38247781
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,
>Считай дополнительно длину сгенерированной строки
и... когда и как действовать?
...
Рейтинг: 0 / 0
String не бесконечный?
    #38247791
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, предположим, длина ограничена 64K. Тогда так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
If (65533 - Длина_сгенерировано) < Len(Первое_слово) Then ' 65533 = 2^16 - 1 - 2
  Selection.TypeText Text:=Сгенерировано
  Сгенерировано = ""
  Длина_сгенерировано = 0
End If
Сгенерировано = Сгенерировано & Первое_слово & vbCrLf
Количество_сгенерировано = Количество_сгенерировано + 1
Длина_сгенерировано = Длина_сгенерировано + Len(Первое_слово) + 2
...
Рейтинг: 0 / 0
String не бесконечный?
    #38247792
Фотография Green2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде бы 2 гигабайта не более размер строки.
...
Рейтинг: 0 / 0
String не бесконечный?
    #38247797
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
муторно, перепроверил, скорость при количестве проходов в 150000 одинакова, нафига я Вас послушал...
Код: vbnet
1.
Selection.TypeText Text:=Первое_слово & vbCrLf в цикле - рулит
...
Рейтинг: 0 / 0
String не бесконечный?
    #38247805
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофа,

Word из Office 2010 вставляет через метод TypeText максимум 14467 символов. Итого как решение, вставлять не полностью весь текст из переменной, а постепенно, накапливая в буферную переменную и потом отдать её методу TypeText
...
Рейтинг: 0 / 0
String не бесконечный?
    #38247815
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VSVLADWord из Office 2010 вставляет через метод TypeText максимум 14467 символов.
Не совсем так. Если длина строки n, метод TypeText вставляет (n Mod 65536) символов начиная с начала строки. Вот эксперимент в окне Immediate, Word 2000.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
?len(activedocument.Range.Text) 
 1 'пустой документ
selection.typetext string(65536,"a")
?len(activedocument.Range.Text)
 1 'ничего не вставилось
selection.typetext "1" & string(65536,"a")
?len(activedocument.Range.Text)
 2 'вставился один символ "1". После этого очистил документ.
selection.typetext "1" & string(100000,"a")
?len(activedocument.Range.Text)
 34466 'добавилось 34465 символов "1аааааааааааааааааа..."
?100001 mod 65536
 34465 'почему именно 34465
...
Рейтинг: 0 / 0
String не бесконечный?
    #38247818
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересно, что у близкого по смыслу метода InsertAfter ограничения нет:
Код: vbnet
1.
2.
3.
4.
5.
?len(activedocument.Range.Text) 
 1 'пустой документ
selection.insertafter string(1000000,"a")
?len(activedocument.Range.Text)
 1000001 'вставил миллион символов!
...
Рейтинг: 0 / 0
String не бесконечный?
    #38247819
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может быть, это решение для ТС?
...
Рейтинг: 0 / 0
String не бесконечный?
    #38247951
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КазанскийМожет быть, это решение для ТС?
спасибо, но
TypeText максимум 14467 символов
плевать до этого у мня не дойтёт, чем огород 14258120
...
Рейтинг: 0 / 0
String не бесконечный?
    #38248006
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофаTypeText максимум 14467 символов
плевать до этого у мня не дойтёт, чем огород 14258120 катастрофатак вот мессага говорит, что всего Количество_сгенерировано = 27140, а реально напечатало 2255 шт.Льёте, батенька, 27140 > 14467
Или тогда какого ... задавать академические вопросы?
...
Рейтинг: 0 / 0
String не бесконечный?
    #38248012
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,
в конце цикла нашло 27140
а печатать то я буду в самом цикле, как только нашло так сразу и всё будет хорошо, одним словом кто-то когда-то на этом форуме меня с панталыки сбил...
...
Рейтинг: 0 / 0
String не бесконечный?
    #38248014
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ничего не сбили, а правильно посоветовали.

Суть была в чём - вы исполняете .TypeText внутри цикла, значит, вы исполняете его десятки тысяч раз. Даже если вывод на экран в процессе отключен - код самого метода исполняется эту туеву хучу раз. Вам же предложили - исполнить метод один раз, в конце (или как я - несколько раз в цикле, но всего лишь несколько), поскольку в большинстве реализаций - вывод обычно медленнее, чем конкатенация строк. То, что обнаружилась бяка с mod 64K - вам тоже посоветовали, как обойти.
Просто учитывайте, что "неотличие" по скорости между разными методами - это сейчас, на ваших данных, Офисе, ОС и железе. При других условиях - всё может измениться (и, следуя ЗМ, - не в лучшую сторону).
...
Рейтинг: 0 / 0
String не бесконечный?
    #38248020
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM, спасибо!! учту
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / String не бесконечный?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]