Delphi 2006 system.delete для широких строк? - PullRequest
2 голосов
/ 26 августа 2009

есть ли аналог процедуры Delete, который можно использовать для широких строк? Или я должен просто использовать копирование и объединить получившиеся WideStrings?

Ответы [ 2 ]

5 голосов
/ 26 августа 2009

Delete - это "волшебная функция компилятора". Компилятор использует свои знания базового типа данных для надлежащей обработки операции. Для большинства массивов он может просто преобразовать информацию, которую вы пишете в своем коде, в фактическое смещение и количество байтов, которые необходимо удалить, и вместо этого передает это в процедуру сборки _Delete. Для WideStrings, как указал Александр, у него есть специальная процедура _WStrDelete.

Итог: если вы можете передать массив или строку в Delete и он скомпилируется, он должен работать просто отлично.

5 голосов
/ 26 августа 2009

Внутренние функции RTL, такие как Delete, Insert, Length и т. Д., Работают как для строк Ansi, так и для строк Wide.

Например, вызов Delete для WideString преобразуется в вызов WStrDelete (см. System.pas).

...