Разное
Облака / Clouds

The bast cloud service
Get 20 GB free!!!
Support WebDav.
Show more >>

time-tested cloud storage
Support WebDav.
Последние книги
Самое популярное
Все бесплатно
Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.
Навигация
Вопросы
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 |