Разное
Облака / Clouds
The bast cloud service
Get 20 GB free!!!
Support WebDav.
Show more >>
time-tested cloud storage
Support WebDav.
Последние книги
Самое популярное
Все бесплатно
Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.
Навигация
Вопросы
Создание кнопки на панели в IE
Категория: Интернет и Сети
Категория: Интернет и Сети
Округление целого числа до 5
Категория: Математика
Категория: Математика
Как в Memo прокрутить текст
Категория: Компоненты
Категория: Компоненты
Как создать ярлык
Категория: Приложение
Категория: Приложение
Число строкой с предстоящими нулями
Категория: Текст и строки
Категория: Текст и строки
Сохраняем Bitmap в поле dbase
Категория: Базы данных
Категория: Базы данных
Вычислить логарифм
Категория: Математика
Категория: Математика
Компонент SpeedButton
Категория: Компоненты
Категория: Компоненты
Компоненты Panel, GroupBox, Bevel, ScrollBox, Splitter
Категория: Компоненты
Категория: Компоненты
Поставить пароль на Paradox
Категория: Базы данных
Категория: Базы данных
Delphi - Справочник: SetLength
SetLength
|
1 procedure SetLength ( var StringToChange : string; NewLength : Integer ) ; 2 procedure SetLength ( var ArrayToChange : Array type; Dim1Length : Integer {;Dim2Length : Integer; ...} ) ; |
Процедура (Unit System)
|
Изменяет размер строки или размер динамического массива
|
Описание:
|
Процедура SetLength изменяет размер строки, одномерного динамического массива или многомерного динамического массива Вариант 1. При изменении размера строки StringToChange, новый размер NewLength может быть меньше, такой же или больше, чем у существующей строки. Во всех случаях размер задается в символах и в любом случае создается новая строка. Если строка короче, то она отсекается. Если она длиннее, то добавленные символы не будут проинициализированы. Это может дать странный эффект - смотрите первый пример. Вариант 2. Динамический массив объявляется без задания фиксированной длины. Такое объявление создает лишь указатель. Даже многомерный динамический массив создается в виде одного неинициализированного указателя. SetLength меняет длину измерений Dim1Length, Dim2Length … массива ArrayToChange. Это может быть сделано несколько раз - не только над неинициализированным указателем. Последующие вызовы сотрут данные или добавят дополнительное место. Это дополнительное место инициализируется только в том случае, если оно содержит строки, интерфейсы или переменные типа Variant. Dim1Length указывает на левое (внешнее) измерение массива. |
Пример кода: Пример
|
//Пример кода : Делаем строку меньше или длиннее var myString : string; onPos : Integer; begin // Присваиваем моей строке известную фразу myString := 'The cat sat on the mat'; // Показ этого значения ShowMessage('"'+myString+'"'); // Теперь делаем строку длиннее SetLength(myString, 25); // Показ снова этого значения // Обратите внимание, что строка закончена преждевременно // Это потому что дополнительные символы не инициализированы ShowMessage('"'+myString+'"'); // Теперь делаем строку короче - прерывают перед 'sat' onPos := AnsiPos('sat', myString); SetLength(myString, onPos-1); // Показ этой строки снова // Теперь строка полностью инициализирована ShowMessage('"'+myString+'"'); end; //Пример кода : Установка длины одномерных и многомерных массивов var singleArray : array of string; multiArray : array of array of Word; i, j : Integer; begin // Установливаем длину одномерного массива SetLength(singleArray, 4); // Теперь заполняем : обратите внимание, что динамические массивы начинаются с 0 ShowMessage('Одномерный массив :'); for i := 0 to 3 do begin singleArray[i] := 'String '+IntToStr(i); ShowMessage('Элемент '+IntToStr(i)+' = '+singleArray[i]); end; // Устанавливаем длину многомерного массива SetLength(multiArray, 2, 3); // Теперь заполняем его ShowMessage('Многомерный массив :'); for i := 0 to 1 do for j := 0 to 2 do begin multiArray[i,j] := i + j; ShowMessage('Элемент '+IntToStr(i)+','+IntToStr(j)+' = '+ IntToStr(multiArray[i,j])); end; end;
Результат:
|
"The cat sat on the mat" "The cat sat on the mat "The cat " Одномерный массив : Элемент 0 = 0 Элемент 1 = 1 Элемент 2 = 2 Элемент 3 = 3 Многоиерный массив : Элемент 0,0 = 0 Элемент 0,1 = 1 Элемент 0,2 = 2 Элемент 1,0 = 1 Элемент 1,1 = 2 Элемент 1,2 = 3 |