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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2010, 22:24   #1
TorchWood
 
Регистрация: 23.09.2010
Сообщений: 6
По умолчанию Обрезать все кроме цифр, Дельфи

Здравствуйте, пожалуйста помогите мне, уже день мучаюсь, ничего не могу найти, в дельфи новичок,
как из такой строки:
C 4348907987
T
оставить только цифры?

кстати, ещё подскажите пожалуйста, как постоянно получать данные от сервера? чтобы функция ненадо было каждый раз вывывать,
Код:
Chat.Lines.Add(TCP.ReadLn);
принимаю вот так, и мне приходиться каждый раз нажимать на кнопку чтобы получить очередное сообщение от сервера, как сделать автообновление? или как там можно

народ, помогите же

Последний раз редактировалось artemavd; 24.09.2010 в 07:37.
TorchWood вне форума Ответить с цитированием
Старый 24.09.2010, 07:38   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
как постоянно получать данные от сервера?
Использовать компонент Timer
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 24.09.2010, 07:43   #3
m.a.x.i.m
Пользователь
 
Регистрация: 29.03.2008
Сообщений: 32
По умолчанию

Код:
function only_numbers(str:string):string;//получает строку
                                         //возвращает только цифры из строки
var buf:string;
    i:integer;
begin
buf:='';
for i:=1 to length(str) do//перебираем все символы строки
  if str[i] in ['0'..'9'] then buf:=buf+str[i];//если очередной символ - цифра
                                               //то приписываем  его к итоговой строке
Result:=buf;
end;
используем
Код:
Edit2.Text:=only_numbers(Edit1.Text);
m.a.x.i.m вне форума Ответить с цитированием
Старый 24.09.2010, 14:56   #4
TorchWood
 
Регистрация: 23.09.2010
Сообщений: 6
По умолчанию

Спасибо большое!
TorchWood вне форума Ответить с цитированием
Старый 25.09.2010, 07:45   #5
TorchWood
 
Регистрация: 23.09.2010
Сообщений: 6
По умолчанию

а как мне проверить есть ли что либо в пакете Chat.Lines.Add(TCP.ReadLn); ?
Если не пусто, то вызвать таймер, и проверять каждый раз на существование пакета и только потом обновлять?

И ещё подскажите пожалуйста, как правильно сделать, короче

only_numbers(TCP.ReadLn) % 47385 + 90202; мне нужно решить такой уровнение, ответ записать куда то в переменную, для дальнейшего использования

делал так
k := Chat.Lines.Add(only_numbers(TCP.Rea dLn));
j := k % 47385 + 90202;

но там разные ошибки выбивают, типа там разные форматы данных или что то вроде этого

Последний раз редактировалось TorchWood; 25.09.2010 в 07:49.
TorchWood вне форума Ответить с цитированием
Старый 11.08.2011, 22:29   #6
celovec
Форумчанин
 
Регистрация: 15.06.2007
Сообщений: 182
По умолчанию

Код:
function only_numbers(str:string):string;//получает строку
                                         //возвращает только цифры из строки
var buf:string;
    i:integer;
begin
buf:='';
for i:=1 to length(str) do//перебираем все символы строки
  if str[i] in ['0'..'9'] then buf:=buf+str[i];//если очередной символ - цифра
                                               //то приписываем  его к итоговой строке
Result:=buf;
end;
Заметил когда в str нет вообще символов, код выдает ошибку, подскажите пожалуйста как избежать ошибки?
celovec вне форума Ответить с цитированием
Старый 11.08.2011, 22:29   #7
celovec
Форумчанин
 
Регистрация: 15.06.2007
Сообщений: 182
По умолчанию

Сейчас пришло в голову, прошу прощенья, случайно добавил как новый ответ.

А разве нет чего-то вот такого в delphi
Код:
$get2 = preg_replace( '#[^0-9]#i', '', $get); ?

Последний раз редактировалось celovec; 12.08.2011 в 00:32.
celovec вне форума Ответить с цитированием
Старый 01.08.2015, 17:20   #8
vershik
 
Регистрация: 07.05.2012
Сообщений: 6
По умолчанию

Код:
function only_numbers(str:string):string;
var buf:string;
    i:integer;
begin
 if str<>'' then
 begin
  buf:='';
  for i:=1 to length(str) do
    if str[i] in ['0'..'9'] then buf:=buf+str[i];
  Result:=buf;
 end else Result:='';
end;
Используем:

Код:
Edit2.Text:=only_numbers(Edit1.Text);
vershik вне форума Ответить с цитированием
Старый 01.08.2015, 17:36   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
vershik
Во-первых некропост, 4 года как-никак.
Во-вторых нет там ни какой ошибки, нормально пусто возвращает и без всяких проверок
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автофильтр (AutoFilter), как отфильтровать данные все кроме.? SAIIIA.P Microsoft Office Excel 8 30.06.2022 19:33
Сумма цифр введенного трехзначного числа. Дельфи by -ORTODOX- Помощь студентам 20 02.02.2011 14:21
Помогите создать макрос, который бы удалил все ячейки, кроме каждой 8-ой Рамирас Microsoft Office Excel 7 24.07.2010 19:37
Закрыть все файлы Excel,кроме текущего BesTiYa Microsoft Office Excel 5 10.12.2009 12:53
закрыть все дочерни окна, кроме главного окна Worms Общие вопросы Delphi 2 03.12.2007 22:18