IPB
ЛогинПароль:

 
 Ответить  Открыть новую тему 
> переменная типа STRING
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Мужской

Репутация: -  0  +


Можно ли в переменную типа STRING ввести маркер конца строки?может ли он вообще в нем содержаться?каким образом?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Переменная типа String (если ты о Паскалевском типе) устроена так, что ей не надо маркер конца строки - длина строки хранится в ее первом байте. Если надо строку с терминатором - пользуйся типом PChar - это аналог С-шных строк, оканчивающихся нулем.

В крайнем случае, можно и в String записать символ #0, но при выводе этой строки стандартными методами, такой маркер не будет приниматься во внимание:

var s: string;
begin
s := 'test '#0' it';
writeln(s);
end.
Будет выведено
test   it


, а не просто "test"...

Можно, опять же, считать, что любой символ (например '#') - это маркер конца строки, но тогда тоже придется переписывать функции работы со строками...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Причём здесь ноль - в виндовсе и досе другой маркер конца строки. Не проверял, как выводится в виндовсе символы маркера - 13 и 10, но в линуксе всё работает. Здесь маркер состоит из одного символа с порядковым номером 10
var
S:String;

begin
S:='1234567890';
S[9]:=Chr(10);
writeln('');
writeln(S);
end.


Изображение

Сообщение отредактировано: SKVOZNJAK -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
Причём здесь ноль - в виндовсе и досе другой маркер конца строки
Правда что-ли? #13 и #10 - это вообще-то CR/LF (Carriage Return/Line Feed), что в переводе означает
Цитата
Возврат каретки - символ, при выводе которого курсор перемещается к левому краю поля, не меняя высоту.
...
Подача строки - символ при выводе которого «курсор» перемещается на следующую строку.
Где здесь маркер, повествующий о том, что строка уже закончилась, и дальше не нужно ее просматривать, можно поподробнее?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Цитата
, что в переводе означает

Английский язык за качество не пинал только фанат и ленивый.

Цитата
Где здесь маркер, повествующий о том, что строка уже закончилась, и дальше не нужно ее просматривать, можно поподробнее?


Создай простой текст в редакторах типа блокнота на разных операционках и просмотри побайтово. Нету там нуля в конце строки. Символы #13,#10 стандарт по факту маркера EOL для виндовса, #10 для линукса, #13 для макинтоша. Первоначально стандарты как раз и разрабатывались для удобства печатания: операционки-то были маленькие а принтеры матричные, насыщать текстовики вордовским мусором было совсем не обязательно.
Текст набранный в блокноте:
Код
qwe
1234
ddfgghj

А вот как этот текст выглядит в редакторе в виде двоичного файла
Изображение
#0 в ASCII шрифте выглядит также как и #32, и где он здесь между строк? Конец строки обозначается маркером #13,#10. Аналогичная картина в досе и линуксе, маки не тестил, но по коственным данным (кнопкам в редакторе kwrite)и там в конце строки простого текстового файла ставится не #0. Поставь #0 в концах строк в батника, запусти и полюбуйся на глюки. Похоже система об упоминаемом тобой формате ничего не знает.

Сообщение отредактировано: SKVOZNJAK -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.12.2024 23:04
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name