Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
13 / 13 / 11
Регистрация: 10.08.2011
Сообщений: 226
Записей в блоге: 1
1

Длина строки только 128 символов

14.03.2012, 21:38. Показов 3489. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Pascal
1
2
3
4
5
 uses crt;
              var   s:string;
              begin
                readln(s);
               end.
длина строковой переменной должно быть вроде 255 ,а почему я с компьютера в
переменную s только 128 символов ? пожалуйста подробно ,если возможно !
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2012, 21:38
Ответы с готовыми решениями:

Удаление из строки слов, длина которых меньше К символов
Удалить слова из заданного текста, длина которых меньше К символов. Добавлено через 17 часов 56...

Удалить из строки все слова, длина которых меньше пяти символов
1. Вывести на экране строку, введенную пользователем, по диагонали. 2. Добавить в строку пробелы...

Дано целое число K и текстовый файл. Удалить из каждой строки файла первые K символов (если длина строки меньше K, то удалить из нее все символы)
Помогите Пожалуйста написать программу! Дано целое число K и текстовый файл. Удалить из каждой...

Удалить из третьей строки все слова, длина которых меньше пяти символов
С клавиатуры вводится строка, состоящая из слов и чисел (целых и вещественных), отделенных друг от...

13
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
14.03.2012, 21:59 2
Просто в буфер памяти больше не входит.
0
13 / 13 / 11
Регистрация: 10.08.2011
Сообщений: 226
Записей в блоге: 1
15.03.2012, 10:26  [ТС] 3
а почему тогда говорят ,что максимальная длина равна 255 ? это у всех или нет?
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
15.03.2012, 11:46 4
Цитата Сообщение от aleksskay Посмотреть сообщение
а почему тогда говорят ,что максимальная длина равна 255 ? это у всех или нет?
Не путайте сроку и буфер. Не помню как в паскале менять размер буфера, в Си что-то вроде
C
1
2
#include <stdio.h>
void setbuf(FILE *stream, char *buffer);    /* ANSI */
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
15.03.2012, 11:51 5
Во внутреннем представлении строковой переменной байт с индексом 0 (ноль) содержит сведения о длине строки. Так как тип данных Byte может кодировать только 256 различных значений, то и наибольшая длина строковых данных в строке равна:
256 - 1 байт
Здесь (-1) - означает, что мы исключаем байт в индексом 0, который содержит служебную информацию.
Это означает, что если в программе мы объявили переменную:
Pascal
1
2
var
  S : String;
то в памяти она будет занимать 256 байт. И в эту переменную можно записывать строки разной длины, но не больше чем 255 символов.
Например, если мы выполним такое действие:
Pascal
1
2
3
4
var
  S : String;
begin
  S := '12345';
то в памяти первые 6 байт переменной S будут иметь такие значения:
Код
Индекс:   0   1   2   3   4   5
Значение: #5 '1' '2' '3' '4' '5'
Правее шестого байта (его индекс 5) располагаются следующие байты строки с индексами: 6..255 - их содержимое не учитывается, потому что они выходят за границы, определённые в первом байте строки: S[0] = 5.
1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
15.03.2012, 12:19 6
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от go Посмотреть сообщение
Не помню как в паскале менять размер буфера,
Пробовал увеличить буфер
Pascal
1
{$M 65000,0,655000}
без разницы, вводишь с клавы 128 символов и стоп. Если нужно больше, жмешь Enter и склеиваешь строки.

Добавлено через 8 минут
Вот в Паскаль АВС сколько хочешь, столько и вводи, правда выведет только 255 символов. Видимо 128 это ограничение DOS.

Добавлено через 3 минуты
Фрее Паскаль как истинный суррогат позволяет ввести 255 символов...

Добавлено через 51 секунду
При чем без разницы как объявлена строка string, или ansistring.

Добавлено через 58 секунд
Как-то мы уже забавлялись с этим.
Readln не более 255 символов.
3
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
15.03.2012, 12:22 7
Цитата Сообщение от Puporev Посмотреть сообщение
Пробовал увеличить буфер
Попробуй отключить буферизация.

Добавлено через 2 минуты
Цитата Сообщение от Puporev Посмотреть сообщение
{$M 65000,0,655000}
Ты из ДОСа запускаешь? В виндовс вроде
Код
{$M размер_стека, размер кучи} (Windows)
Просто у меня чистого ДОСа нет, только в эмуляторе.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
15.03.2012, 12:27 8
Цитата Сообщение от go Посмотреть сообщение
Ты из ДОСа запускаешь?
Так Турбо Паскаль под DOS работает.

Добавлено через 1 минуту
Вообще размер стека по умолчанию установлен 128 байт. И где его изменить?....

Добавлено через 1 минуту
У меня реальный режим Дос.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
15.03.2012, 12:42 9
Puporev, Я вспомнил эту процедуру
Процедура SetTextBuf( var f: Text; var Buf; BufSize: Word ) служит
для увеличения или уменьшения буфера ввода - вывода текстового файла
f. Значение размера буфера для текстовых файлов по умолчанию равно
128 байтам. Рекомендуется изменять разиер буфера до открытия файла.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
15.03.2012, 12:51 10
Так это для быстрого чтения и записи в текстовый файл.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
15.03.2012, 14:03 11
Лучший ответ Сообщение было отмечено как решение

Решение

Puporev, точно?!
В ДОСБоксе у меня отработал корректно
Pascal
1
2
3
4
5
6
7
8
var
   s, buf : string;
begin
     settextbuf(input, buf, 255);
     readln(s);
     writeln(s);
     readln;
end.
Попробуй
2
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
15.03.2012, 14:11 12
Все нормально, подумал про input, да что-то лень проверять стало. Спасибо!
0
13 / 13 / 11
Регистрация: 10.08.2011
Сообщений: 226
Записей в блоге: 1
15.03.2012, 20:51  [ТС] 13
Я правильно понимаю ,то что данное ограничение ввода 128 символов по умолчанию и у других
пользователей ?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
15.03.2012, 20:57 14
Цитата Сообщение от aleksskay Посмотреть сообщение
данное ограничение ввода 128 символов по умолчанию
Во всех у кого Турбо Паскаль, читать-то хоть умеешь, уж сколько жуем...
1
15.03.2012, 20:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2012, 20:57
Помогаю со студенческими работами здесь

В заданный непустой текст входят только цифры и буквы. Длина текста не более 12 символов
очень прошу помочь с задачей, среда Pascal abc. В заданный непустой текст входят только цифры...

Проверить, чтобы длина строки была не меньше двух символов
Помогите решить срочно надо Задание:Текст в файле:Имя пользователя.Проверить, чтобы длина строки...

Записать в другой файл все строки, длина которых больше 5 символов
Дан текстовый файл. Записать в другой файл все строки, длина которых больше 5 символов. Помогите...

Строка: Если длина строки больше 10, то оставить только первые 6 символов...
Дана строка.Если ее длина больше 10,то оставить в строке только первые 6 символов,иначе дополнить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru