Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2012, 13:03   #1
m@tem@tik
 
Регистрация: 21.12.2012
Сообщений: 7
Вопрос Как получить 6 последних символов в строке?

Как получить шесть последних символов в строке?
m@tem@tik вне форума Ответить с цитированием
Старый 25.12.2012, 13:06   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

s := Copy (s, Length(s) - 6, Length(s));
где s - исходная строка
FaTaL вне форума Ответить с цитированием
Старый 25.12.2012, 13:07   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

...:=copy(s,length(s)-6,6);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.12.2012, 13:10   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

как-то так:
Код:
 for i:=Length(myStr) downto 1 do
 begin
   If (i >=(Length(myStr)-6)) then
   REsult:=Result+myStr[i];
 end;
Человек_Борща вне форума Ответить с цитированием
Старый 25.12.2012, 13:27   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Stilet
Код:
...:=copy(s,length(s)-6,6);
+1

только я бы проверку поставил на то, что Length(s)>6:
Код:
function LastNChar(const s : string; N : integer) : string;
begin
  if length(s)>N then result := Copy(s, length(s)-N, N)
  else result := s;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.12.2012, 13:31   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
я бы проверку поставил
Нет смысла. Такие проверки внутри сору есть, именно поэтому способ Фаталя тоже сработает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.12.2012, 13:51   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Stilet
Нет смысла. Такие проверки внутри сору есть
согласен.
не знал. думал, будет ошибка. проверил, вроде бы Вы правы - всё работает, ошибок нет.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.12.2012, 14:02   #8
superedward
Форумчанин
 
Аватар для superedward
 
Регистрация: 27.11.2012
Сообщений: 190
По умолчанию

s:=RightStr(s,6)
superedward вне форума Ответить с цитированием
Старый 25.12.2012, 15:19   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

superedward,

во-первых, модуль StrUtils не во всех версиях Delphi есть (в Delphi 5, например, нет)

а во-вторых,
если посмотреть исходники этой функции увидим предложенный выше неоднократно способ через Copy:
Код:
function RightStr(const AText: AnsiString; const ACount: Integer): AnsiString; overload;
begin
  Result := Copy(WideString(AText), Length(WideString(AText)) + 1 - ACount, ACount);
end;

Внимание!
в решениях выше допушена ошибочка. нужно добавлять единичку к длине строки:
Код:
 ..... := Copy(s, Length(s)+1-6, 6);

Последний раз редактировалось Serge_Bliznykov; 25.12.2012 в 15:21.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.12.2012, 07:13   #10
superedward
Форумчанин
 
Аватар для superedward
 
Регистрация: 27.11.2012
Сообщений: 190
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
superedward,
Внимание!
в решениях выше допушена ошибочка. нужно добавлять единичку к длине строки:
Код:
 ..... := Copy(s, Length(s)+1-6, 6);
Решение с RightStr не единственно верное, но наглядное и простое.
superedward вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция в Access для удаления последних символов kity Помощь студентам 3 18.11.2010 08:55
Копирование последних 3-х символов Mihanches Общие вопросы Delphi 5 21.09.2010 19:02
удаление 4 последних символов в строке DuM4uK Общие вопросы Delphi 3 14.10.2009 08:06
Получить последовательность bi....bn из нулей и едениц,в которой bi=1, когда в i-ой строке число символов R_A_M_I_L7777777 Помощь студентам 3 19.05.2009 16:03
Узнать два последних символа в строке Kib Общие вопросы Delphi 5 19.04.2009 23:04