Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Delphi |
![]() ![]() |
ыйдюк
Guest |
Как работает функция delete? Она принимает на вход динамический массив или строку (а строка, ведь, тоже является массивом), но при удалении элементов смещает все остальные на их место или работает по-другому? Например, строку из 900 000 000 символов она обрабатывает всего за 94ms (удаляю первый символ) - как-то слишком быстро для простого смещения. |
10 окт 18, 14:47 [21700572] Ответить | Цитировать Сообщить модератору |
Мимопроходящий Member Откуда: бурятский тундрюк, эсквайр Сообщений: 29523 |
читай про пейджинг и то как работают менеджеры памяти Posted via ActualForum NNTP Server 1.5 |
10 окт 18, 14:53 [21700577] Ответить | Цитировать Сообщить модератору |
wadman Member Откуда: Санкт-Петербург Сообщений: 24929 |
procedure _UStrDelete(var S: UnicodeString; Index, Count: Integer); var L, N: Integer; begin InternalUniqueStringU(S); L := Length(S); if (Index >= 1) and (Index <= L) and (Count > 0) then begin Dec(Index); N := L - Index - Count; if N < 0 then N := 0; Move(PWideChar(Pointer(S))[L - N], PWideChar(Pointer(S))[Index], N * 2); SetLength(S, Index + N); end; end; |
10 окт 18, 14:54 [21700581] Ответить | Цитировать Сообщить модератору |
white_nigger Member Откуда: Тула Сообщений: 1993 |
|
||
10 окт 18, 15:58 [21700658] Ответить | Цитировать Сообщить модератору |
Все форумы / Delphi | ![]() |