Правильная конкатенация18.04.2023, 02:34. Показов 7270. Ответов 117
Метки нет (Все метки)
На другом форуме видел такой вариант конкатенации большого массива и он мне очень понравился, поскольку скорость близкая к join. На сколько я знаю тип String это структура содержащая в себе массив символов и еслиб у нас был доступ к этому массиву и возможность делать что-то вроде redim preserve.. В общем, можно ли как-то улучшить алгоритм, чтоб закасматить окончательно етот join? )
0
|
||
| 18.04.2023, 02:34 | |
|
Ответы с готовыми решениями:
117
Из символов одного текста строковых функций о операций конкатенация получить другой текст Правильная обработка ошибок конкатенация строки |
| 01.05.2023, 18:07 [ТС] | |||||||
|
SafeArrayRedim Not Not ResultSplit, SafeArrayBound(0) Добавлено через 5 минут Трик здесь вместо Not Not рекомендует использовать другую функцию
0
|
|||||||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
| 01.05.2023, 19:11 | |
|
testuser2, да пожалуйста, я сам это нашёл на сайте VbSpeeds, там очень много скоростных фишек для VB. Ихний девиз VB может работать очень быстро. А то у многих заблуждение что программы созданные на VB медленные. Это смотря как программировать. На VB6 можно написать коды которые будут работать быстрее чем на С++
Добавлено через 1 минуту The trick, вот сюда зайди посмотри http://www.xbeat.net/vbspeed/ я там это всё скачал там ещё очень много чего есть для супер-скоростей
0
|
|
| 12.09.2023, 10:26 [ТС] | |||||||
|
Издержки метода - дополнительное использвание памяти, получается если хотим сделать, указательный массив на всю строку (или ее часть), то для начала создать пустой массив нужного размера, который (изначальный буфер этого массива) в последующем будет висеть в памяти уже "мертвым грузом". Не знаю, может быть есть способ создания SafeArray с указанием уже готового буфера.. Для этого надо понимать его структуру и т.д. Для большей униерсальности и адаптации под VBA заменил GetMem4 на CopyMemory и использовал ArrPtr(VarPtr) из библиотеки VBE7.dll Кликните здесь для просмотра всего текста
На отметке "Stop" в окне Locals можно видеть, что массив var указывает напрямую на часть строки переменной q. И ели поменять какое-то значение в массиве var, то изменения также будут видны в строке q. Также в тесте видна работа левостороней функции Mid, то, что она работает напрямую с буфером строки. Также видна работа команды redim preserve, то, что при увеличении массива можно по прежнему использовать тот же указатель.
0
|
|||||||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|||
| 12.09.2023, 11:02 | |||
|
Добавлено через 1 минуту
0
|
|||
| 12.09.2023, 11:11 [ТС] | ||
|
VBE7 это VBA-шная основная библиотека, если есть МСО, то она есть
0
|
||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
||
| 12.09.2023, 11:15 | ||
|
Добавлено через 2 минуты testuser2, кстати была же тема как использовать строку как байтовый массив, может не на этом форуме, но было же помню
0
|
||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
| 12.09.2023, 11:18 | |
|
testuser2, в 2008 году же это ещё обсуждали: https://forum.sources.ru/index... ew=showall
0
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|||||||||||
| 12.09.2023, 11:36 | |||||||||||
|
Итак переписал скрипт для VB6:
Но по факту я так вообще и не понял, что делает этот скрипт???? Добавляет один пробел во фразе "Привет мир"? Добавлено через 3 минуты Вот кстати фокус "строка как байтовый массив" пусть и на нашем форуме будет:
1
|
|||||||||||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|||
| 12.09.2023, 11:53 | |||
|
Добавлено через 15 секунд Добавлено через 1 минуту testuser2, ты там почитай тему форума на исходниках кстати, я же ссылку тебе скинул, там есть и возвраты указателей
0
|
|||
| 12.09.2023, 12:21 [ТС] | ||
|
0
|
||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
||||||||
| 12.09.2023, 12:53 | ||||||||
|
Добавлено через 1 минуту Добавлено через 2 минуты The trick, помнишь у стандартной поставки VB6 был даже Microsoft'овский пример сравнения Mid$ и CopyMemory, в те времена раньше CopyMemory был быстрее на старых медленных компьютерах, теперь наоборот Mid$ быстрее стал Добавлено через 4 минуты The trick, о кстати спасибо за код, я не знал что Mid можно так использовать в обратную сторону я думал только для получения подстроки для сравнений и всё в общем я затестил:
Кстати знак доллара играет важную роль, при очень больших объёмах, может выиграть пол секунды времени даже, я помню тестировал раньше
1
|
||||||||
| 12.09.2023, 16:03 [ТС] | ||||||||||||||||
|
Добавлено через 8 минут Добавлено через 5 минут Добавлено через 1 час 34 минуты
Добавлено через 19 минут The trick, не подскажешь, можно ли также манипулировать строками (bstr), как safearray, т.е. менять указатель на данные и прописывать размер этих данных? Размер я вроде знаю, он указывается перед буфером. Можно ли строковой переменной подменить буфер на другой? Добавлено через 53 минуты А все понял. Строковая переменная фактически хранит указатель на буфер. И если этот указатель переписать, то наверное можно "подменить" буфер у строковой переменной. В переменной l оказывается то же, что в выдаче StrPtr(sarr(0))
1
|
||||||||||||||||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
||
| 12.09.2023, 16:11 | ||
|
testuser2, ну я думаю, ты уже узнал всё, что хотел)))
Добавлено через 11 секунд узнал много нового так точно) Добавлено через 4 минуты кстати в примере строка как байтовый массив, получается что если менять значения байтового массива то меняется и сама строка, но наоборот у меня не получалось сделать, что если менять строку то и меняется байтовый массив... Добавлено через 1 минуту
0
|
||
| 12.09.2023, 16:33 [ТС] | ||||||||||
|
Добавлено через 2 минуты Добавлено через 12 минут
0
|
||||||||||
| 12.09.2023, 16:33 | |
|
конкатенация строк в excel через vba Конкатенация и последующее копирование уникальных строк по условию Добавление записей массива из одной книги на лист другой + возможная конкатенация Из символов одного текста с помощью стоковых функций о операция конкатенация получить другой текст Конкатенация Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки.
Добавлено:
- Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|