Главная страница
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.036 c
2-1161780965
vitusrus
2006-10-25 16:56
2006.11.12
Срочный вопрос.


3-1158317143
Sergey_b
2006-09-15 14:45
2006.11.12
выбор данных, в соответствии с иерархией


3-1157979045
NotGooDP
2006-09-11 16:50
2006.11.12
Программное востановление БД


6-1150882006
Cerberus
2006-06-21 13:26
2006.11.12
Заблокировать входящий трафик для IE.


2-1161768977
Rule
2006-10-25 13:36
2006.11.12
AV при выполнении метода TObjectList.Sort