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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.08.2014, 17:25   #1
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию Проблема с указателем на Frame

Добрый день\вечер

Имеется Frame, на нем ListView и Button1. Так же имеется самописный класс TMainClass, унаследованный от TThread.

При создании экземпляра класса TMainClass, передается указатель на Frame. Класс создается при нажатии на Button1.

Класс TMainClass
Код:

  TMainClass = class(TMainClass)
    ..
    protected 
      procedure Test;
    public
      ParentPointer: ^TIWFrame2;
      ListViewPointer: ^TsListView;
  end;

  procedure TMainClass.Test;
  begin
     ParentPointer^.ListView1.Items.Count; // Тут у нас вылетает access
     ListViewPointer^.Items.Count; // А тут все ок
  end;
Класс фрейма
Код:
type
  TIWFrame2 = class(TFrame)
    ...
    ListView1: TListView;
    procedure Button1Click(Sender: TObject);
  end;

  procedure TIWFrame2.sButton1Click(Sender: TObject);
  ...
  begin
    ...
    MainClass := TMainClass.Create;
    MainClass.ListViewPointer := @ListView1;
    MainClass.ParentPointer := @Self;
    MainClass.Resume;
  end;
На строке ParentPointer^.ListView1.Items.Coun t;, вылетает access.


Пожалуйста, подскажите в чем причина.
Я конечно могу обращаться сразу к ListView1 (через его указатель), минуя ParentPointer, но все же для меня удобнее использовать ParentPointer, т.к его юзают еще и другие функции.

Спасибо
bakanaev вне форума Ответить с цитированием
Старый 31.08.2014, 17:47   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
ParentPointer: ^TIWFrame2;
Почему не
Код:
ParentPointer: TIWFrame2;
Это и так указатель на объект. Ну и обращение непосредственно к ListView1.Items.Count из потока чревато. Синхронизация наше все
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.09.2014, 08:40   #3
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Код:
ParentPointer: TIWFrame2;
Все равно access летит
bakanaev вне форума Ответить с цитированием
Старый 01.09.2014, 09:13   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
MainClass.ParentPointer := @Self;
Так и осталось? @ убери
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.09.2014, 11:43   #5
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Так и осталось? @ убери
Точно, забыл убрать)) Спасибо
bakanaev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с указателем в файловом потоке PaPoV Qt и кроссплатформенное программирование С/С++ 0 07.04.2014 15:25
Проблема с указателем Form_13 Общие вопросы Delphi 2 20.12.2011 22:35
Проблема с указателем(с++) Lazy maximka Помощь студентам 1 16.11.2011 01:04
Проблема с указателем novak3 Общие вопросы C/C++ 3 07.05.2011 13:51
проблема с указателем на массив Sergey.Voloxov Общие вопросы C/C++ 7 14.03.2010 17:47