![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перевод Array of char в String
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.
А сколько должно быть по-твоему?