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