![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Срез длинной строки [D7, XP]
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);?