Облака / Clouds
    Go to Copy.com
    Copy.com
    The bast cloud service
    Get 20 GB free!!!
    Support WebDav.
    Show more >>

    Go to Dropbox.com
    Dropbox.com
    time-tested cloud storage
    Support WebDav.
Все бесплатно
    Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.



Вопросы
  Создание кнопки на панели в IE
   Категория: Интернет и Сети
  Округление целого числа до 5
   Категория: Математика
  Как в Memo прокрутить текст
   Категория: Компоненты
  Как создать ярлык
   Категория: Приложение
  Число строкой с предстоящими нулями
   Категория: Текст и строки
  Сохраняем Bitmap в поле dbase
   Категория: Базы данных
  Вычислить логарифм
   Категория: Математика
  Компонент SpeedButton
   Категория: Компоненты
  Компоненты Panel, GroupBox, Bevel, ScrollBox, Splitter
   Категория: Компоненты
  Поставить пароль на Paradox
   Категория: Базы данных

Delphi - Справочник: SetLength

ABCDEFGHIJKLMNOPQRSTUVWXYZ

  << Вернуться  

 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

  << Вернуться