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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2013, 20:11   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию Вывести в мемо значение из едита

Здравствуйте, проблема вот в чем, в edit1 вводится любой ip-адрес, в качестве разделителя точка, в общем надо вывести то, что стоит перед разделителями в массив, а массив в мемо, вот например ввели

123.131.23123.123123, а в массив занести вот это:

a[1]=123
a[2]=131
a[3]=23123
a[4]=123123

ну и вывести массив в мемо

Код:
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
    slesh:Boolean;
    j,pozition:byte;
    s:string[255];
    a:array[1..4] of string;

begin
  j:=1;
  Memo1.clear;
   pozition:=0;
   slesh:=false;
   s:=trim(Edit1.Text);
 for i:=1 to Length(s) do
 begin
  if s[i]='.' then
  begin;
  Inc(pozition);
  a[j]:=Copy(s,1,i-1);
  Delete(s,1,i);
  Inc(j);
  end
  else if (s[i]='/') then slesh:=True;
   if (pozition>3) or not (s[i] in ['0'..'9','.','/',' ']) then
    begin
    MessageBeep(1);
    ShowMessage('Введен некорректный ip-адрес! (см. позицию '+inttostr(i)+')');   //считаем кол-во точек, если более 3-х или
    Exit;                                                                         //введенго не число, то пишем ошибку
    end;
 end;
   for i:=1 to j do Memo1.Lines.Add(a[i]);
end;
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 14.04.2013, 20:23   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Читайте справку. Все проще...
Код:
  Memo.Lines.Delimiter := '.';
  Memo.Lines.DelimitedText := '111.222.333.444';
  //В мемо будет то, что вам надо.
Человек_Борща вне форума Ответить с цитированием
Старый 14.04.2013, 20:27   #3
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
    slesh:Boolean;
    j,pozition:byte;
    s:string[255];
    a:array[1..3] of string;

begin
  j:=1;
  Memo1.clear;
   pozition:=0;
   slesh:=false;
   s:=trim(Edit1.Text);
 for i:=1 to Length(s) do
 begin
  if s[i]='.' then
  begin;
  Inc(pozition);
  Memo1.Lines.Delimiter := '.';
  end
  else if (s[i]='/') then slesh:=True;
   if (pozition>3) or not (s[i] in ['0'..'9','.','/',' ']) then
    begin
    MessageBeep(1);
    ShowMessage('Введен некорректный ip-адрес! (см. позицию '+inttostr(i)+')');   //считаем кол-во точек, если более 3-х или
    Exit;                                                                         //введенго не число, то пишем ошибку
    end;
 end;
   Memo1.Lines.DelimitedText := '111.222.333.444';
 end;
не пойму, вот так надо писать? Просто первый раз такое вижу
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 14.04.2013, 20:34   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Я вам написал как надо писать. А вы циклы какие-то напихали...

IPv4 подчиняется след. правилам:
1. Длинна строки не более 15 знаков(длинна байта - 3 знака, в IP 4 байта. 3*4=12+3 точки = 15 знаков всего).
2. В строке обязательно есть 3 точки
3. Каждый байт IP адреса не больше числа 255 и не меньше-равно 0.

Если все 3 пункта соблюдены, то IP введен корректно, иначе там ошибка. У вас проверок этих не наблюдаю =).

Последний раз редактировалось Человек_Борща; 14.04.2013 в 20:41.
Человек_Борща вне форума Ответить с цитированием
Старый 14.04.2013, 20:42   #5
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

ну можно же и так написать 132.12.1.203/18, в общем спасибо за замечание, но это не суть, вопрос был про массив и мемо, кстати, если интересно зачем я это пишу, то пожалуйста:

1) Определить класс айпишника
2) Маску
3) Кол-во сетей
4) Кол-во подсетей
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в браузере(на делфи) вывести адрес сайта в мемо и едит Exibet179 Работа с сетью в Delphi 13 10.02.2013 13:38
Вывести в поле мемо несколько элементов таблицы. celest БД в Delphi 3 17.05.2012 17:13
Как вывести в Мемо список посещенных ссылок(Webbrowser) Terikon Работа с сетью в Delphi 4 14.11.2010 16:08
Рассчитать и вывести значение kipish_lp Microsoft Office Excel 9 08.06.2010 05:17
[Делфи]Как вывести из мемо все что есть (без циклов и массивов) zotox Помощь студентам 3 03.05.2009 20:25