Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Как увеличить строку (string)


Автор: digitech 25.11.2007, 18:19
Вот у меня программа, которая заполняет строку 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.

Автор: stab 25.11.2007, 18:31
Код

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

Автор: digitech 25.11.2007, 18:58
а тогда эта звёздочка не будет записана как строка.

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

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;

это будет правильно?

Автор: Ofer 25.11.2007, 19:59
digitech, используй вместо типа String тип  PChar.

Автор: digitech 25.11.2007, 20:48
а не могли бы вы кусочек программы с pcchar показать, чтоб понятно было

Автор: Ofer 26.11.2007, 00:44
Код

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


Автор: digitech 12.12.2007, 18:17
А зачем надо вот это:
Код

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

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

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

Как "так же"? У тебя что, без PChar-а печатается PChar? Программу свою приводи полностью, а не обрывки какие-то, тебе покажут, почему нельзя без этого; а так - сотрясаешь воздух впустую...

Автор: Ofer 13.12.2007, 20:53
digitech, насколько помтю #0 это терминальный ноль, который обознрачает завершение строки

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)