Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как увеличить строку (string), не более 255 символов, а надо больше 
:(
    Опции темы
digitech
Дата 25.11.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 1.4.2007

Репутация: нет
Всего: 1



Вот у меня программа, которая заполняет строку N звёздочками. Причём больше 255 звёздочек быть не может, так как тип string не позволяет. А как сделать так, чтобы пользователь ввёл N=500, и на экран вывелось 500 звёздочек?

Код

begin
clrscr;
Writeln('Введите количество символов - N');
readln(n);
s:='*';
for i:=1 to n-1 do
s:=s+'*';
writeln(s); {только 255 звёздочек}
readln;
end.

PM MAIL   Вверх
stab
Дата 25.11.2007, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: нет
Всего: 48



Код

for i := 1 to n do write('*');



--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
digitech
Дата 25.11.2007, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 1.4.2007

Репутация: нет
Всего: 1



а тогда эта звёздочка не будет записана как строка.
PM MAIL   Вверх
digitech
Дата 25.11.2007, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 1.4.2007

Репутация: нет
Всего: 1



А если остальное записать в другую строку? 
Вот так к примеру: 
Код

begin
clrscr;
Writeln('Введите кол-во символов - N<500');
readln(n);
s:='*';
a:=s[1];
for i:=1 to n-1 do
if i<255 then
s:=s+'*'
else a:=a+a;

if n<=255 then
writeln(s) else
begin write(s); write(a); end;
readln;

это будет правильно?
PM MAIL   Вверх
Ofer
Дата 25.11.2007, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.10.2006
Где: КривбаСС

Репутация: нет
Всего: 5



digitech, используй вместо типа String тип  PChar.
PM MAIL ICQ   Вверх
digitech
Дата 25.11.2007, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 1.4.2007

Репутация: нет
Всего: 1



а не могли бы вы кусочек программы с pcchar показать, чтоб понятно было
PM MAIL   Вверх
Ofer
Дата 26.11.2007, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.10.2006
Где: КривбаСС

Репутация: нет
Всего: 5



Код

{$X+}
...
  PC : PChar;
  C : array [0..n] of Char;
begin
...
  PC := C;
  PC[StrLen(PC)] := #0;
  WriteLn(PC);
...
end.


PM MAIL ICQ   Вверх
digitech
Дата 12.12.2007, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 1.4.2007

Репутация: нет
Всего: 1



А зачем надо вот это:
Код

PC := C; 
 PC[StrLen(PC)] := #0;

если без этого работает так же?

Это сообщение отредактировал(а) digitech - 12.12.2007, 18:23
PM MAIL   Вверх
volvo877
Дата 12.12.2007, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(digitech @  12.12.2007,  17:17 Найти цитируемый пост)
если без этого работает так же?

Как "так же"? У тебя что, без PChar-а печатается PChar? Программу свою приводи полностью, а не обрывки какие-то, тебе покажут, почему нельзя без этого; а так - сотрясаешь воздух впустую...
PM MAIL   Вверх
Ofer
Дата 13.12.2007, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.10.2006
Где: КривбаСС

Репутация: нет
Всего: 5



digitech, насколько помтю #0 это терминальный ноль, который обознрачает завершение строки
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0820 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.