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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2022, 21:58   #1
AppData
Форумчанин
 
Регистрация: 20.09.2013
Сообщений: 246
По умолчанию Вытащить из строки с ип адресом последние цифры

добрый день.

пытался всяческий попостить POS но так и не смог

хочу из вытащить из строки с ip адресом последние цифры

они могут быть и 3 значные так и 1 цифра
AppData вне форума Ответить с цитированием
Старый 06.05.2022, 22:35   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Код:
  i:=Length(str);
  while (i >= 1) and (ord(str[i]) >= $30) and (ord(str[i]) <= $39) do dec(i);
  i:=strtoint(copy(str, i + 1, Length(str) - i));
macomics вне форума Ответить с цитированием
Старый 06.05.2022, 22:40   #3
AppData
Форумчанин
 
Регистрация: 20.09.2013
Сообщений: 246
По умолчанию

Код:
var
i:integer;
str: String;
begini:=Length(str);
  while (i >= 1) and (ord(str[i]) >= $30) and (ord(str[i]) <= $39) do dec(i);
  i:=strtoint(copy(str, i + 1, Length(str) - i));
  Edit1.Text := str;
  Form1.Caption := Edit1.Text;
end;
что то не так
AppData вне форума Ответить с цитированием
Старый 06.05.2022, 22:44   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

AppData, потому что результат в виде числа находится в i, её и нужно показывать в эдите.
macomics, сравнивать можно и без ord сразу с цифрами.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 06.05.2022, 23:14   #5
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
macomics, сравнивать можно и без ord сразу с цифрами.
С цифрами у меня Warning вылазит. А переводить в 10-ю систему #48 / #57 не наглядно.
Цитата:
Сообщение от AppData Посмотреть сообщение
что то не так
Я вам цифру уже перевел в бинарный вид из текстового и результат в переменной i.
Код:
copy(str, i + 1, Length(str) - i)
Это текстовое представление.
macomics вне форума Ответить с цитированием
Старый 06.05.2022, 23:44   #6
AppData
Форумчанин
 
Регистрация: 20.09.2013
Сообщений: 246
По умолчанию

Код:
str:=form1.edit1.text;
for i:=1 to length(str) do
if (ord(str[i])>=30) and (ord(str[i])<=39) then integer //30..39 коди чисел в таблице кодировки символов
else string;
Код:
var fl:boolean;
    i:integer;
    str:string;
begin
 str:=Edit1.Text;
 fl:=true;
 for i:=1 to length(str) do
  if not(str[i] in ['0'..'9']) then
   fl:=false;

 if fl then {integer}
  else {string}
end;
AppData вне форума Ответить с цитированием
Старый 06.05.2022, 23:46   #7
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от AppData Посмотреть сообщение
//30..39 коди чисел в таблице кодировки символов
А куда $ делись. Это 16-ое представление. Я же написал #48 = $30.

ADD: Я вам написал сканирование строки от конца к началу. Вам же нужна цифра с конца
Код:
for i:=Length(str) downto 1 do if (ord(str[i]) < $30) and (ord(str[i]) > $39) then index:=i;
copy(str, index + 1, Length(str) - i)
С циклом for понадобится объявить счетчик цикла и дополнительную переменную сохраняющую index.

Последний раз редактировалось macomics; 06.05.2022 в 23:53.
macomics вне форума Ответить с цитированием
Старый 07.05.2022, 00:00   #8
AppData
Форумчанин
 
Регистрация: 20.09.2013
Сообщений: 246
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
А куда $ делись. Это 16-ое представление. Я же написал #48 = $30.

ADD: Я вам написал сканирование строки от конца к началу. Вам же нужна цифра с конца
Код:
for i:=Length(str) downto 1 do if (ord(str[i]) < $30) and (ord(str[i]) > $39) then index:=i;
copy(str, index + 1, Length(str) - i)
С циклом for понадобится объявить счетчик цикла и дополнительную переменную сохраняющую index.
есть пример?
AppData вне форума Ответить с цитированием
Старый 07.05.2022, 00:06   #9
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Код:
procedure TForm1.Button1.OnClick(Sender:TObject);
var
  i:integer;
  str: String;
begin
  str := Edit1.Text;
  i:=Length(str);
  while (i > 0) and (ord(str[i]) - $30 < 10) do dec(i);
  str := copy(str, i + 1, Length(str) - i);
  Form1.Caption := str;
  i:=strtoint(str);
end;
macomics вне форума Ответить с цитированием
Старый 07.05.2022, 00:15   #10
AppData
Форумчанин
 
Регистрация: 20.09.2013
Сообщений: 246
По умолчанию

о чем и речь
Изображения
Тип файла: jpg Безымянный.jpg (49.4 Кб, 18 просмотров)
AppData вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заменить последние цифры в IP на звездочки nibufep PHP 4 13.04.2015 14:48
Последние символы строки arshavin0230 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 04.10.2014 19:35
Дан двумерный массив. начиная с 1 строки сдвинуть все строки на 2 вниз, а последние 2 переместить на место первых двух строк. Proskurina Помощь студентам 5 03.03.2013 21:38
Найти степень числа N, у которой три последние цифры одинаковые. Vika_0_0 Паскаль, Turbo Pascal, PascalABC.NET 7 11.03.2012 10:24
Как вытащить последние 100 записей? vladtr SQL, базы данных 20 31.05.2010 09:30