Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.12;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.053 c
15-1162011397
Rbn
2006-10-28 08:56
2006.11.12
AutoCad


2-1161693916
azot
2006-10-24 16:45
2006.11.12
progress bar


15-1161931115
Витян
2006-10-27 10:38
2006.11.12
Пара простых вопросов по физике...


15-1161694391
Сатир
2006-10-24 16:53
2006.11.12
Закрытие неявного курсора


2-1162043286
uhhh
2006-10-28 17:48
2006.11.12
копирование файла