Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.04.2008, 19:16
bombovix bombovix вне форума
Прохожий
 
Регистрация: 16.04.2008
Сообщения: 11
Репутация: 10
Смущение ListBox - ошибка: list index out of bounds (-1)

Код:
Код:
procedure TApplication01.CheatsClick(Sender: TObject);
var n: string;
begin
n:=Cheats.Items[Cheats.ItemIndex];
Memo1.Lines.LoadFromFile('cheats\'+n+'.txt');
end;

Пишет ошибку: List Index Out Of Bounds (-1)
Обвиняет строку: n:=Cheats.Items[Cheats.ItemIndex];

Подскажите в чем ошибка.
Ответить с цитированием
  #2  
Старый 16.04.2008, 21:39
Аватар для AXS
AXS AXS вне форума
Новичок
 
Регистрация: 26.11.2006
Адрес: РК г. Талдыкорган
Сообщения: 67
Репутация: 15
По умолчанию

Когда в твоём Cheats не выделен ни один элемент Cheats.ItemIndex равно -1. А Cheats.Items[-1] не существует (список начинается со строки номер ноль ). Вот тебе и ошибка... пиши так:
Код:
procedure TApplication01.CheatsClick(Sender: TObject);
var 
  n: string;
begin
if Cheats.ItemIndex = -1 then
  Exit;
  n:=Cheats.Items[Cheats.ItemIndex];
  Memo1.Lines.LoadFromFile('cheats\'+n+'.txt');
end;
Ответить с цитированием
  #3  
Старый 17.04.2008, 06:54
bombovix bombovix вне форума
Прохожий
 
Регистрация: 16.04.2008
Сообщения: 11
Репутация: 10
По умолчанию

Это теперь понятно.
Но ведь я знаю, что выбрал что-то в этом списке, почему же тогда значение равно -1?
Просто если использовать Exit, то программа не имеет смысла, при нажатии на любую строку в ЛистБоксе, ничего не происходит, а должен отображаться текст.

Добавлено:
Все, сам решил эту проблему.

Последний раз редактировалось bombovix, 17.04.2008 в 07:50.
Ответить с цитированием
  #4  
Старый 17.04.2008, 15:40
bombovix bombovix вне форума
Прохожий
 
Регистрация: 16.04.2008
Сообщения: 11
Репутация: 10
По умолчанию

А еще вопрос:
Как можно высчитать количество строк в ЛистБоксе?

Так же хотелось бы узнать команды перевода переменных из одного вида в другой(из целочисленной в строку например). А то я раньше в 7 делфи делал IntToStr, вроде получалось, а сейчас в 2007 не знаю.

Последний раз редактировалось bombovix, 17.04.2008 в 15:47.
Ответить с цитированием
  #5  
Старый 17.04.2008, 16:10
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

Высчитать колличество строк в ListBox
Код:
ListBox1.Cout{тип integer}

Перевод из целочисленного в строковый
Так и остался IntToStr. Если не получается, то проверь тип объявленной переменной, к которой присваиваешь строковое значение
Ответить с цитированием
  #6  
Старый 17.04.2008, 16:13
bombovix bombovix вне форума
Прохожий
 
Регистрация: 16.04.2008
Сообщения: 11
Репутация: 10
По умолчанию

Count пробывал,
PHP код:
i:=ListBox1.Count
Не работает.


Одна из переменных string, другая integer, IntToStr все равно не работает, пишет неопределенный идентификатор(udeclared identificator)
Код в котором вылазит ошибка:
Цитата:
procedure TApplication01.FormCreate(Sender: TObject);
var
i, i1: integer;
s, s1: string;
begin
Solutions.Visible:=False;
Solutions.Enabled:=false;
Solutions.Items.LoadFromFile('solutions\z-games.sys');
Cheats.Items.LoadFromFile('cheats\z-games.sys');
i:=Solutions.Count;
s:=i(IntToStr);
i1:=Solutions.Count;
s1:=i1(IntToStr);
Memo1.Lines.Add('На данный момент в нашей базе данных кодов и прохождений:');
Memo1.Lines.Add('Прохождений: к '+s+' играм');
Memo1.Lines.Add('Кодов: к '+s1+' играм');
end;

Последний раз редактировалось bombovix, 17.04.2008 в 16:29.
Ответить с цитированием
  #7  
Старый 17.04.2008, 18:10
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

Цитата:
procedure TApplication01.FormCreate(Sender: TObject);
var
i, i1: integer;
s, s1: string;
begin
Solutions.Visible:=False;
Solutions.Enabled:=false;
Solutions.Items.LoadFromFile('solutions\z-games.sys');
Cheats.Items.LoadFromFile('cheats\z-games.sys');
i:=Solutions.Count;
s:=i(IntToStr);
i1:=Solutions.Count;
s1:=i1(IntToStr);
Memo1.Lines.Add('На данный момент в нашей базе данных кодов и прохождений:');
Memo1.Lines.Add('Прохождений: к '+s+' играм');
Memo1.Lines.Add('Кодов: к '+s1+' играм');
end;

Шутник)) А не пробывал так?

Код:
procedure TApplication01.FormCreate(Sender: TObject);
var
i, i1: integer;
s, s1: string;
begin
Solutions.Visible:=False;
Solutions.Enabled:=false;
Solutions.Items.LoadFromFile('solutions\z-games.sys');
Cheats.Items.LoadFromFile('cheats\z-games.sys');
i:=Solutions.Count;
s:=IntToStr(i);
i1:=Solutions.Count;
s1:=IntToStr(i1);
Memo1.Lines.Add('На данный момент в нашей базе данных кодов и прохождений:');
Memo1.Lines.Add('Прохождений: к '+s+' играм');
Memo1.Lines.Add('Кодов: к '+s1+' играм');
end;
Ответить с цитированием
  #8  
Старый 17.04.2008, 18:13
bombovix bombovix вне форума
Прохожий
 
Регистрация: 16.04.2008
Сообщения: 11
Репутация: 10
По умолчанию

сори, заработался со flash
Ответить с цитированием
  #9  
Старый 17.04.2008, 18:21
bombovix bombovix вне форума
Прохожий
 
Регистрация: 16.04.2008
Сообщения: 11
Репутация: 10
По умолчанию

Но ошибка все равно выдается.
Вот скрин:
Ответить с цитированием
  #10  
Старый 17.04.2008, 18:30
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

В uses наверно нету модуля, в котором эти функции описаны. Кажется SysUtils называется
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #11  
Старый 17.04.2008, 18:33
bombovix bombovix вне форума
Прохожий
 
Регистрация: 16.04.2008
Сообщения: 11
Репутация: 10
По умолчанию

The Shadow, мудрец
Спасибо, и правда не было
Ответить с цитированием
  #12  
Старый 17.04.2008, 18:40
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

Думали думали, а оказалось так просто))
Ответить с цитированием
  #13  
Старый 17.04.2008, 19:54
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

[quote=bombovix]Count пробывал,
PHP код:
i:=ListBox1.Count
Не работает.

А ListBox1.Items.Count не пробывал? Ты у кого кол-во запрашиваешь? У самого ListBox'а или у коллекции его элементов? Учите матчасть, вьюноша!!!
Ответить с цитированием
  #14  
Старый 18.04.2008, 05:55
bombovix bombovix вне форума
Прохожий
 
Регистрация: 16.04.2008
Сообщения: 11
Репутация: 10
По умолчанию

lmikle, вобщето и так все уже заработало, ошибка в другом была.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:42.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter