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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2012, 22:01   #1
Spymen
Новичок
Джуниор
 
Регистрация: 11.06.2012
Сообщений: 2
По умолчанию Access Violation при работе с объектом в процедуре

ВСем доброго времени суток. Очень прошу помочь разобраться, потому что ответа в литературе и интеренете не нашол.

Код (удалил неучаствующие процедуры и объявления):

Цитата:
unit Unit1;
interface
uses
//куча библиотек
type
TMainform = class(TForm)
//куча компонентов
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Mainform: TMainform;
Settings: Tstringlist;
procedure LoadSettings();

implementation

uses Unit2;
{$R *.dfm}

procedure LoadSettings();
var
s_list: Tstringlist;
Inifile: Tinifile;
i: integer;
begin
s_list:=Tstringlist.Create;
Inifile:=Tinifile.Create('data\sett ings.ini');
// считываем из файла настройки
inifile.ReadSection('main',s_list);
for i:=0 to s_list.count-1 do begin
Settings.Values[s_list[i]]:=inifile.readstring('main',s_list[i],'0');
end;
showmessage(Settings.Names[0]+'='+Settings.Values[Settings.Names[0]]+
' '+Settings.Names[1]+'='+Settings.Values[Settings.Names[1]]);
inifile.destroy; s_list.Free;
end;

procedure TMainform.FormCreate(Sender: TObject);
var
i: integer;
s: string;
begin
//Загрузка настроек и списка персонажей
Settings := Tstringlist.create;
LoadSettings();
LoadPersList();
// установка параметров элементов ФОРМЫ
showmessage(Settings.Names[0]+'='+Settings.Values[Settings.Names[0]]+
' '+Settings.Names[1]+'='+Settings.Values[Settings.Names[1]]);
for i:=0 to strtoint(settings.Values['Pers_count'])-1 do begin
mainform.change_pers.items.Add(pers _list[i,1]);
end;
end;
end.
При старте программы всё проходит успешно, showmessage в процедуре LoadSettings выполняется коректно и отображает верные данные. А Вот проверочный showmessage процедуре TMainform.FormCreate вызывает AccessViolation. Перечитал все доступные мне буквари и ФАКи. Нигде не нашол ответа что я делаю не так. Пробовал включить Settings и LoadSettings в состав TMainform в различные разделы, всегда один и тот же результат. Обьясните что я делаю не так?
Spymen вне форума Ответить с цитированием
Старый 11.06.2012, 22:09   #2
ych_del
Форумчанин
 
Аватар для ych_del
 
Регистрация: 06.02.2011
Сообщений: 149
По умолчанию

Общий алгоритм такой: ставим бряк в самом начале, и идем по шагам, по ходу проверяя все переменные.
На какой строке происходит AV?
Профессиональный конвертор галлюцинаций заказчика в алгоритмическую структуру.
ych_del вне форума Ответить с цитированием
Старый 11.06.2012, 22:30   #3
Spymen
Новичок
Джуниор
 
Регистрация: 11.06.2012
Сообщений: 2
По умолчанию Ошику устранил

Спасибо за пинок, ошибка была в том что динамический массив pers_list не был определён в размере, и при обращении к нему из функции LoadPersList возникал AccessViolation и дельфи упорно показывал на строку Showmessage ... которая совсем невиновата и работает правильно ...
Spymen вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
access violation при работе с ini файлами demiancz Общие вопросы Delphi 5 07.01.2012 15:51
Access Violation при .Create.BitMap YaMolekula Общие вопросы Delphi 1 28.05.2011 13:42
Access violation при выполнении Bernarditto C++ Builder 5 04.11.2010 14:25
Access violation at address при выполнении end elsin Общие вопросы Delphi 5 30.01.2009 10:29
access violation при создании обьекта goog Общие вопросы Delphi 12 11.01.2009 20:33