Главная страница
    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.038 c
4-1150665129
Valerio
2006-06-19 01:12
2006.11.12
USB и Веб -камеры


2-1161938208
JTAG
2006-10-27 12:36
2006.11.12
Добрый день, подскажите плз, как изменить указатель


15-1161547034
BOA_KAA
2006-10-22 23:57
2006.11.12
MyIE???????


15-1161262853
ПЛОВ
2006-10-19 17:00
2006.11.12
Что есть Виста


15-1161633915
matt
2006-10-24 00:05
2006.11.12
Бегущий по лезвию





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский