Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Срез длинной строки [D7, XP]


Страницы:   1 2

lobach ©   (2006-10-28 10:55:00) 

помогите с этой функцией, она должна срезать строку(до длинны num), если в ней более num символов
function srez(stroka: string; num:integer): String;
var
i: integer;
ns: String;
begin
i:=1;
if Length(stroka) = num then
result:=stroka;
if Length(stroka) < num then
result:=stroka
else begin
while i <= num do
result:=ns+stroka[i];
i:=i+1;
end;
end;
Помогите


Пусик   (2006-10-28 23:21:00) [21]

function srez(stroka: string; num:integer): String;
begin
 if stroka<>''
   then Result := Copy(stroka,1,num)
   else Result := '';
end;


vidiv   (2006-10-28 22:10:00) [22]

блин... одна строка всего:
Str := copy(Str, 1, num);


Ketmar   (2006-10-28 14:43:00) [23]

>[6] lobach(c) 28-Oct-2006, 11:23
>Домашнее задание выполнено:
тройка. один балл добавлен за энтузиазм. Copy(), F1.


Anatoly Podgoretsky   (2006-10-28 11:27:00) [24]

Задание выполнено не совсем верно, а точнее не верно, еасть побочные эффекты.
Первая часть правильна, а вот часть должна быть выполнена с помощью функции Copy.
Вот тогда это будет правильно и на одну не нужную команду меньше, но если ты хочешь ее использовать, то надо переделать, первой строкой присвоение строки результату и второй строкой если результат длиннее нормы, то обрезать его, а не stroka


lobach   (2006-10-28 11:23:00) [25]


> А вот само написание данной строки это твое домашнее задание,
> если не справишься, значит программирование не твое.

Домашнее задание выполнено:
function srez(stroka: string; num:integer): String;
begin
if length(stroka) <= num then
result:=stroka
else
SetLength(stroka, num);
result:=stroka;
end;

Всем спасибо!!!


Anatoly Podgoretsky   (2006-10-28 11:11:00) [26]

Конечно же нет


Virgo_Style   (2006-10-28 11:08:00) [27]

Virgo_Style ©   (28.10.06 11:01) [1]

Ой, ну конечно же, num<length(Stroka)! :-[


Anatoly Podgoretsky   (2006-10-28 11:08:00) [28]

В паскале есть оператор <= и делать поэтому двумя командами некрасиво.
В Дельфи есть оператор SetLength, который устанавливает строку без всяких циклов посимвольного копирования. Имея на руках данные карты функция сокращается до одной строки if then else.
А вот само написание данной строки это твое домашнее задание, если не справишься, значит программирование не твое.


ЮЮ   (2006-10-28 11:04:00) [29]

1) Copy(Str, 1, n);

2) If Length(Str) > n then SetLength(str, n);

3) если непременоо нужен srez и твой алгоритм, то перед циклом Result := '':


Virgo_Style   (2006-10-28 11:01:00) [30]

if num>length(Stroka) then SetLength(Stroka, num);?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо