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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2011, 12:11   #11
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Здравствуйте
Цитата:
Сообщение от Aleksandr Посмотреть сообщение
Не получается.
Как Вы думаете, что можно на это ответить?... Только такой ответ: семнадцать.
ЧТО Вы сделали и в итоге ЧТО не получается? ЧТО...
До свидания
OlegVE вне форума Ответить с цитированием
Старый 11.05.2011, 12:21   #12
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Вывести запросом из базы списка свободных значений поля по заданному интервалу достаточно сложно даже в случае integer поля, а для вашего случая, где символьное поле сложной структуры начнутся такие заморочки, что лучше и не браться. Вам в посте 7 предложили сначала сгенерировать в StringList все возможные значения адресов в заданном интервале, запросом получить использованные значения в этом интервале, затем из StringList на основании данных запроса удалить задействованные адреса. В результате в StringList все дырки и останутся. Ну и используйте теперь данные StringList для выборки свободных адресов

P.S. Понятно что интервал должен быть в разумных пределах, чтобы не получилось миллиард строк в StringList
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 11.05.2011 в 12:41.
Аватар вне форума Ответить с цитированием
Старый 11.05.2011, 13:34   #13
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

Сохраняю список в dat файл, но он пустой. Вот код
Код:
 MyList := TStringList.Create;
   ADOQuery1.Active:=false;
  ADOQuery1.SQL.Text := 'select IP from refbook Where IP>'+ quotedstr(MaskEdit1.Text) + ' AND IP<'+ quotedstr(MaskEdit2.Text);
  ADOQuery1.Active:=true;
   ADOQuery1.First;
  while not ADOQuery1.Eof do begin
   if MyList.Find(ADOQuery1.FieldByName('IP').AsString, Index) then MyList.Add(ADOQuery1.FieldByName('IP').AsString);
   ADOQuery1.Next;
  end;

  MyList.Sort;
  ADOQuery1.Active:=false;
  ADOQuery1.SQL.Text := 'select IP from refbook Where IP>'+ quotedstr(MaskEdit1.Text) + ' AND IP<'+ quotedstr(MaskEdit2.Text);
  ADOQuery1.Active:=true;

  ADOQuery1.First;
  while not ADOQuery1.Eof do begin
   if MyList.Find(ADOQuery1.FieldByName('IP').AsString, Index) then MyList.Delete(Index);
   ADOQuery1.Next;
  end;
  MyList.SaveToFile('D:\123.dat');
  MyList.Free;
Aleksandr вне форума Ответить с цитированием
Старый 11.05.2011, 14:03   #14
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А где генерация в StringList всех возможных значений адресов в заданном интервале? Это ручками в дельфях нужно сделать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.05.2011, 14:26   #15
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

Не знаю как сделать генерацию в StringList. Вот что-то пытался сделать, получается какая-то ерунда.
Код:
Index := MaskEdit1.Text;
try if (Index >= 0) and (Index < MaskEdit2.Text) then
begin NewIndex := Index + 1;
for k := 0 to MyList.Items.Count - 1 do
MyList.Items.Add(MyList.Items.Strings[k]);
except
Aleksandr вне форума Ответить с цитированием
Старый 11.05.2011, 14:51   #16
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

любопытно, что за значения у Вас в MaskEdit1.Text и MaskEdit2.Text ?..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.05.2011, 14:55   #17
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

начало и конец интервала списка IP
Aleksandr вне форума Ответить с цитированием
Старый 11.05.2011, 15:28   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
начало и конец интервала списка IP
Какие там КОНКРЕТНО значения?!
и, соответственно, что Вы хотите получить в качестве всех возможных значений адресов в заданном интервале ?!!



p.s. ну, предположим, что у Вас в первом значение IP адрес сайта ya.ru,
а во-втором - yandex.ru
ya.ru [77.88.21.3]
yandex.ru [213.180.204.11]
что Вы хотите получить в качестве всех возможных значений?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.05.2011, 15:47   #19
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

То что хочет сделать автор топика имеет смысл для интервалов типа 213.180.204.11 - 213.180.204.322 Всё остальное конечно лишено смысла
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.05.2011, 16:03   #20
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

А если интервал 192.168.40.01-192.168.40.200?
Aleksandr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести список файлов assch Общие вопросы C/C++ 1 21.10.2010 03:16
Delphi вывести на экран таблицу значений функции rager06 Помощь студентам 6 11.09.2010 15:51
Список уникальных значений PARTOS Microsoft Office Excel 13 18.12.2009 11:14
Раскрывающийся список значений, макросом. Flangini Microsoft Office Excel 13 22.06.2009 17:01
Элементы управления и список значений tomasmazas Microsoft Office Excel 1 26.12.2007 09:20