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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2008, 15:37   #1
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию Access Violation

Создал некий класс, в котором есть массив из фрэймов и процедуры создания и удаления фрэймов. Все работает отлично, кроме удаления. Удаляет вроде бы нормально только иногда проскакивают ошибки типа Access Violation, нет доступа к адресу 0000000, и т.д., особенно вылетает когда удаляется последний элемент массива. Не пойму что тут не так, помогите пожалуйста разобраться.
Код:
Код:
type
    TNavigation= class
    private
    public
        CNQ         : word;//текущее кол-во Ansver
        Ansver      : array [1..n] of TAnsver;//массив фрэймов
        procedure Create_Answer(Parent_Control:TWinControl);
        procedure DeleteAnsver(Namber:word);
end;
procedure TNavigation.Create_Answer(Parent_Control:TWinControl);
begin
    CNQ:=CNQ+1;
    if Ansver[CNQ]=nil then
    begin
    Ansver[CNQ]:=TAnsver.Create(Parent_Control);
    with Ansver[CNQ] do
    begin
        Parent:=Parent_Control;
        Name:='Ansver'+IntToStr(CNQ);
        Align:=alTop;
        Height:=110;
        Count:=CNQ;// Count - переменная в фрэйме
    end;
    end;
end;
//----------------------------- DELETE ANSVER ---------------------------
procedure TNavigation.DeleteAnsver(Namber:word);
var i:word;
begin
    if Namber=CNQ then
    begin
        Ansver[CNQ].Free;
        Ansver[CNQ]:=nil;
        CNQ:=CNQ-1;
    end
    else
    begin
        for i:=Namber to CNQ-1 do
        begin
            Ansver[i].Text_Ansver.Text:=Ansver[i+1].Text_Ansver.Text;
        end;
        Ansver[CNQ].Free;
        Ansver[CNQ]:=nil;
        CNQ:=CNQ-1;
    end;
end;
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 05.06.2008, 16:38   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

На какой строке выскакиввает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.06.2008, 16:46   #3
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

Ошибка: Access Violation at address ... in module 'Editor.exe'. Read of address ...
Вот модуль

Код:
program Editor;
uses
  Forms,
  Main in 'Main.pas' {MainWindow},
  Navigation in 'Navigation.pas',
  Variant_Frame in 'Variant_Frame.pas' {Ansver: TFrame},
  Edit in 'Edit.pas' {EditWindow};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TMainWindow, MainWindow);
  Application.Run;
end.// здесь указатель на ошибку
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Access violation at address.. RegentM Общие вопросы Delphi 4 01.11.2007 03:46
Access Violation Carbon Общие вопросы Delphi 12 18.09.2007 19:55
Access violation на строке вида StrLCopy(PChar(st1),PChar(st2),10); malor Общие вопросы Delphi 1 11.07.2007 13:39
Возникает исключение "Access violation at address ... Наташка Общие вопросы Delphi 1 18.05.2007 12:16