| 
| 
 | Вопрос # 4 061/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!есть програмка она выдает список айпи адресов выбранной страны из ComboBox
 список айпи записан в одномерном массиве
 так вот я привел пример программы, она замечательно работает, но если я увеличу количество записей в массиве например до 2000, то есть 2000 айпи адресов будет выдавтаь у страны какой либо, тогда мне пишется такое сообщение:
 
 Too many local constans. Use shooter procedures.
 
 Я понял смысл ошибки, но не знаю как заменить. ведь мне в дальнейшем необходимо чтобы программа выдавала и 10000 айпи адресов. и нужно чтобы вся программа была в одном .exe файле, то есть чтобы небыло подгружаемых dll или баз данных.
 помогите пожалуйста
 Приложение:Переключить в обычный режим procedure TForm1.cbb1Change(Sender: TObject);var S: integer;var i:Integer;var andorra: array[1..3] of string;var afgan: array[1..2] of string;var amerika: array[1..3] of string;beginS:=cbb1.ItemIndex;andorra[1]:='192.123.123.13';andorra[2]:='192.123.123.14';andorra[3]:='192.123.123.15';if s=0 thenbeginmmo1.Clear;for i:= 1 to 3 dommo1.Lines.Add(andorra[i]);endelseafgan[1]:='13.255.22.22';afgan[2]:='13.255.22.23';if s=1 thenbeginmmo1.Clear;for i:= 1 to 2 dommo1.Lines.Add(afgan[i]);endelseamerika[1]:='133.212.232.23';amerika[2]:='133.212.232.24';amerika[3]:='133.212.232.25';if s=2 thenbeginmmo1.Clear;for i:= 1 to 3 dommo1.Lines.Add(amerika[i]);endend;end.
|  |   Вопрос задал: winterrab (статус: Посетитель)Вопрос отправлен: 19 апреля 2010, 10:35
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 11; последнее сообщение — 22 апреля 2010, 08:23; участников в обсуждении: 4. 
|   | min@y™ (статус: Доктор наук), 19 апреля 2010, 10:43 [#1]:Используй ресурсы. Загони в файл ресурсов всю инфу, прикомпили к ехе-шнику, а затем выдёргивай в TResourceStream и грузи в TStringList или куда-либо ещё. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Вадим К (статус: Академик), 19 апреля 2010, 10:44 [#2]:А можете показать, что в коде нужно исправить, что бы ошибка начала проявляться? Галочка "подтверждения прочтения" - вселенское зло. |  
|   | winterrab (статус: Посетитель), 19 апреля 2010, 16:33 [#3]:Ошибка появится если в массиве допустим var andorra: array[1..3] of string;
 я изменю 3 на 2000
 var andorra: array[1..2000] of string;
 и соответственно добавлю еще 1997 записей,
 andorra[1]:='192.123.123.13';
 andorra[2]:='192.123.123.14';
 andorra[3]:='192.123.123.15';
 andorra[4]:='192.123.123.14';
 andorra[5]:='192.13.3.1';
 ...
 andorra[2000]:='10.17.45.22';
 
 тогда программа будет ругаться
 |  
|   | winterrab (статус: Посетитель), 19 апреля 2010, 16:38 [#4]:min@y™: Спасибо, теперь буду читать инфу по этому, как разберусь сообщу получилось или нет   |  
|   | min@y™ (статус: Доктор наук), 19 апреля 2010, 17:36 [#5]: Цитата (winterrab): Ошибка появится если в массиве допустим var andorra: array[1..3] of string; я изменю 3 на 2000 var andorra: array[1..2000] of string; и соответственно добавлю еще 1997 записей, andorra[1]:='192.123.123.13'; andorra[2]:='192.123.123.14'; andorra[3]:='192.123.123.15'; andorra[4]:='192.123.123.14'; andorra[5]:='192.13.3.1'; ... andorra[2000]:='10.17.45.22';  Ты чего, руками всё это набирал?
 Про диапазон IP-адресов не слышал? IP-адрес - это ж 4 байта, нафига его хранить в строках?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | winterrab (статус: Посетитель), 19 апреля 2010, 20:54 [#6]:min@y™: нет не руками, я в екселе все подготовил у меня готовые есть шаблоны от 1 до 2000. |  
|   | min@y™ (статус: Доктор наук), 19 апреля 2010, 21:20 [#7]: Цитата (winterrab): нет не руками, я в екселе все подготовил у меня готовые есть шаблоны от 1 до 2000.  ААААААААААААААА, какой кашмар!!!
 Ты ещё полное собрание сочинений дедушки Ленина к проге прилинкуй, будет ваще супер.
 А если серьёзно - не храни IP-адреса в виде массива строк, храни в виде массива целых чисел типа DWORD. Особенно, если они идут подряд. В этом случае можно хранить только начальный адрес и количество. Каждый адрес будет занимать 4 байта памяти, а если хранить строкой - от 7 до 15 байт. Оно тебе надо?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Егор (статус: 10-ый класс), 20 апреля 2010, 19:35 [#8]:min@y™, а потом вопрос появится - "а как из числа DWORD получить IP адрес" 
   Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.— Donald E. Knuth.
 |  
|   | min@y™ (статус: Доктор наук), 20 апреля 2010, 20:17 [#9]: Цитата (Егор): а потом вопрос появится - "а как из числа DWORD получить IP адрес"   Ну, научу, вспомню молодость!
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | winterrab (статус: Посетитель), 21 апреля 2010, 23:28 [#10]:Ребята, подскажите дальше в чём проблема, прочитал примеры составил код, только он что-то не работает... procedure TForm1.ComboBox1Change(Sender: TObject);
 {$R resources.res}
 var S: integer;
 function GetResourceAsString(ResName: pchar; ResType: pchar): string;
 begin
 S:=combobox1.ItemIndex;
 if s=0 then
 begin
 memo1.Clear;
 Memo1.Lines.Text := GetResourceAsString('49', 'text');
 else
 begin
 memo1.Clear;
 Memo1.Lines.Text := GetResourceAsString('50', 'text');
 end;
 end.
 соответстенно 49 и 50 это 2 текстовика, которые я кинул в файлы ресурсов, в которых хранятся диапазоны. Уважаемый
 min@y™: к сожалению я неправильно высказался, там IP адреса в разброс и нет последовательности типа 1,2,3,4... это я в примере написал такие айпи, простите что ввел в заблуждение
 |  
|   | min@y™ (статус: Доктор наук), 22 апреля 2010, 08:23 [#11]: Цитата (winterrab): к сожалению я неправильно высказался, там IP адреса в разброс и нет последовательности типа 1,2,3,4... это я в примере написал такие айпи, простите что ввел в заблуждение  Да пофигу, что вразброс! Я тебе ещё раз повторяю: не храни IP-адреса в строках - это неэффективно, медленно и занимает много памяти.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |