Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перевод Array of char в String


Страницы:   1 2

Begu ©   (2005-06-15 04:15:00) 

как правильно реализовать сабж?
есть:
c: array[1..10] of char;
s: string;

FillChar(c, SizeOf(c), 0);
при присвоении s := c; длина s становится = 10, даже если в массиве одни 0.


Begu   (2005-06-15 04:59:00) [21]

Удалено модератором


Просто Джо   (2005-06-15 04:57:00) [22]

Удалено модератором


Просто Джо   (2005-06-15 04:54:00) [23]


> я думал, что компилятор при преобразовании воспринимает
> array of char как PChar

Нужно прежде чем думать, хелп прочитать. А после этого объявить массив по-человечески, а именно:

c: array [ 0..10] of char;


Begu   (2005-06-15 04:52:00) [24]

>Просто Джо ©   (15.06.05 04:49) [7]

потому что я думал, что компилятор при преобразовании воспринимает array of char как PChar


Begu   (2005-06-15 04:52:00) [25]

Удалено модератором
Примечание: МАТ, нападки


Просто Джо   (2005-06-15 04:51:00) [26]


> слабо
> я думаю такие вещи должны быть борландом реализованы, а
> не нужно новые функции преобразования писать.

Они реализованы. И заодно, ответь, пожалуйста на [7].


Begu   (2005-06-15 04:50:00) [27]

слабо
я думаю такие вещи должны быть борландом реализованы, а не нужно новые функции преобразования писать.


Просто Джо   (2005-06-15 04:49:00) [28]


> [2] Begu   (15.06.05 04:20)
> должно быть 0

Так с какого, прости, перепугу, должно быть 0?


Просто Джо   (2005-06-15 04:38:00) [29]


>  [5] Begu   (15.06.05 04:38)
> я не теорию спрашивал, а задал конкретный вопрос

А из теории слабо сделать выводы?


Begu   (2005-06-15 04:38:00) [30]

я не теорию спрашивал, а задал конкретный вопрос


Просто Джо   (2005-06-15 04:36:00) [31]

Вдогонку. Длина строки типа string хранится отдельно, а именно в ячейке размером в двойное слово по относительному адресу [Адрес_строки-4]. Пройдись отладчиком по телу встроенной процедуру LStrLen и все поймешь.

Заключительный символ с кодом 0 добавляется к строкам для совместимости с C-шными строками, используемыми в Windows, т.е, указатель на массив символов PChar.
Возможно, не слишком корректноя формулировка, что-то я спать хочу :)


Просто Джо   (2005-06-15 04:30:00) [32]

Переменная типа string может хранить любые символы. Символ с кодом 0 в ней не является признаком конца строки. Ты перепутал string и null-terminated string.


Begu   (2005-06-15 04:20:00) [33]

должно быть 0


Просто Джо   (2005-06-15 04:17:00) [34]


> длина s становится = 10, даже если в массиве одни 0.

А сколько должно быть по-твоему?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо