Форум: "Начинающим";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
Внизarray of string Найти похожие ветки
← →
Ingwar © (2006-10-27 11:20) [0]Мне в программе нужно использовать массив строк, но прочитав про SetLength у меня возник вопрос: Если у меня строки разного размера, и зачастую копируются при помощи СopyMemory, то где гарантия, что у меня в процессе работы программы одна строка в массиве не налезет на другую. Можно ли в описании массива указать максимальный размер одного элемента (строки)?
Сейчас пока использую двумерный array of char, а очень хотелось бы использовать массив строк =)
← →
Сергей М. © (2006-10-27 11:23) [1]
> где гарантия, что у меня в процессе работы программы одна
> строка в массиве не налезет на другую
Гарантию можешь дать только ты сам, не допуская ошибок в своей программе.
> Можно ли в описании массива указать максимальный размер
> одного элемента (строки)?
Да, разумеется.
array of String[макс.длина]
Но про SetLenght() при этом придется забыть
← →
Johnmen © (2006-10-27 11:23) [2]см. TStringList
← →
Desdechado © (2006-10-27 11:26) [3]SetLength гарантирует, что строки не налезут друг на друга.
А вот с CopyMemory тебе придется самому отслеживать этот момент, на тоона и низкоуровневая функция.
← →
Desdechado © (2006-10-27 11:28) [4]> array of String[макс.длина]
Это уже не динамическая длина, а фиксированная. И выделяется она сразу, AFAIK
← →
Сергей М. © (2006-10-27 11:31) [5]
> Desdechado © (27.10.06 11:28) [4]
Автор спросил, можно ли ограничить в описании длину каждой из строк в составе массива. Чем не ограничение в описании ? Динамику, разумеется, при этом придется похоронить
← →
ЮЮ © (2006-10-27 11:43) [6]
> и зачастую копируются при помощи СopyMemory, то где гарантия,
> что у меня в процессе работы программы одна строка в массиве
> не налезет на другую.
а очень хотелось бы использовать массив строк =)
Для копирования строк (string) не потребуется СopyMemory, ибо string это и есть динамический массив символов.
SizeOf(string) = 4;
Array of String - массив 4-байтных указателей. Сами строки хранятся в другом месте, поэтому ситуация "у меня в процессе работы программы одна строка в массиве не налезет на другую" невозожна
← →
Ingwar © (2006-10-27 15:18) [7]Спасибо всем! Динамика собсно и не нужна была... Просто хотелось уйти от двумерного массива char =)
← →
Сергей М. © (2006-10-27 15:19) [8]
> Просто хотелось уйти от двумерного массива char
Кто ж мешал ?)
← →
Ingwar © (2006-10-27 23:50) [9]Мешало отсутствие знаний =)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.052 c