Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1161773761
kulkse
2006-10-25 14:56
2006.11.12
частная очередь сообщений


2-1161854032
Делфи
2006-10-26 13:13
2006.11.12
Сохранение


2-1161599893
Megabyte
2006-10-23 14:38
2006.11.12
Компоненты работы с почтой


6-1151325940
N
2006-06-26 16:45
2006.11.12
Неприятности с IdHTTPServer-ом


15-1161924781
0x00
2006-10-27 08:53
2006.11.12
Массивы в msvc++





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский