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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2012, 20:23   #1
Zeraim
Ra-Ra ?
Форумчанин
 
Аватар для Zeraim
 
Регистрация: 06.03.2008
Сообщений: 286
По умолчанию Access Violation, в процедуре, при задании размера TBitmap

Собственно, чертовщина какая то.
Создаю битмап и задаю сразу же размер в OnFormCreate:
Код:
bGraph := TBitmap.Create;
bGraph.Width := 100;
bGraph.Height := 100;
Проблем нету.
Дальше меняю в процедуре размер битмапа. И получаю Access Violation...
Вот как пробовал:
Код:
bGraph.Width := 200;
bGraph.Height := 200;
и
Код:
bGraph.Width := img1.Width;
bGraph.Height := img1.Height;
Размеры у имг вполне нормальные, я на нём что-то рисую и тд.
Процедура вызывается после создания битмапа.

Использую Delphi 7 Lite Full
Zeraim вне форума Ответить с цитированием
Старый 09.12.2012, 20:30   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Похоже, что в процедуре обращение к несозданному объекту - bGraph или img1
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.12.2012, 20:48   #3
Zeraim
Ra-Ra ?
Форумчанин
 
Аватар для Zeraim
 
Регистрация: 06.03.2008
Сообщений: 286
По умолчанию

С img1 всё в порядке, я вполне спокойно с ним работаю. Да и после создания битмапа его размеры меняются.
Может есть проблема с самим обращением к битмапу внутри функции ? Может надо как-то по другому к нему обращаться?
Просто делфи 7 лаит первый раз пользуюсь, и уже были косяки с передачей массива внутри вложенных процедур...
Zeraim вне форума Ответить с цитированием
Старый 09.12.2012, 21:08   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Использую Delphi 7 Lite Full
Я думаю, что проблема в этом.
Человек_Борща вне форума Ответить с цитированием
Старый 09.12.2012, 21:17   #5
Zeraim
Ra-Ra ?
Форумчанин
 
Аватар для Zeraim
 
Регистрация: 06.03.2008
Сообщений: 286
По умолчанию

Как оказывается, я не могу и с созданным внутри процедуры битмапом работать. Либо это невозможно в данной версии делфи, либо это как-то извратили )

Если кто сталкивался, или есть идеи как это может решаться, отпишитесь.

Спасибо за внимание )
Zeraim вне форума Ответить с цитированием
Старый 09.12.2012, 21:22   #6
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
не могу и с созданным внутри процедуры битмапом работать
Так у Вас bGraph тоже внутри процедуры объявляется?
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 09.12.2012, 21:45   #7
Zeraim
Ra-Ra ?
Форумчанин
 
Аватар для Zeraim
 
Регистрация: 06.03.2008
Сообщений: 286
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
Так у Вас bGraph тоже внутри процедуры объявляется?
Нет, он объявляется глобально. Просто я проверял возможность работы с битмапом внутри процедуры принципе )
Zeraim вне форума Ответить с цитированием
Старый 09.12.2012, 21:52   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
есть идеи
Есть. Старая как мир - поставить точку прерывания на эти две строки и посмотреть чему равны bGraph. Уверен что либо он в нуле, либо у него нет таких свойств в наличии в рантайме.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.12.2012, 21:52   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А код показать - объявление и обращение к переменным и процедурам можно?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.12.2012, 23:55   #10
Zeraim
Ra-Ra ?
Форумчанин
 
Аватар для Zeraim
 
Регистрация: 06.03.2008
Сообщений: 286
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А код показать - объявление и обращение к переменным и процедурам можно?
Конечно, правда всётаки пределал грабли с ещё одним имг.

Код:
Var
bGraph : TBitMap;

***

procedure TForm2.FormCreate(Sender: TObject);
begin
  bGraph := TBitmap.Create;
  bGraph.Width := 100;
  bGraph.Height := 100; //Ошибок нету.
  SetGraph;
end;

***

procedure TForm2.SetGraph;
begin
  with img1 do
  begin
    ***
  end;
  bGraph.Width := img1.Width;
  bGraph.Height := img1.Height;
  //или
  bGraph.Width := 100;
  bGraph.Height := 100;//В обоих случаях выдаёт ошибку
Zeraim вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Access Violation при работе с объектом в процедуре Spymen Общие вопросы Delphi 2 11.06.2012 22:30
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 при Form1.ListView.Clear Hottabych Общие вопросы Delphi 7 11.08.2009 17:13
access violation при создании обьекта goog Общие вопросы Delphi 12 11.01.2009 20:33