Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с глобальной переменной стат. библиотеки 
:(
    Опции темы
petlyura
Дата 12.8.2008, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 30.1.2008
Где: Харьков

Репутация: 2
Всего: 2



В статической библиотеке есть глобальная переменная
SUBD_CLASS AnsiString CurDir;
В exe-программе, что использует эту статическую библиотеку есть в функциях форм какие-то действия с этой CurDir.
К примеру:
Код

__fastcall TFClient::TFClient(TComponent* Owner)
        : TForm(Owner)
{
 CurDir=GetCurrentDir(); //здесь
}

Код

void __fastcall TPresentChart::FormCreate(TMessage& msg)
{  

  item = new TMenuItem(this);
  item->Caption = "&Печать ч/б";
  item->OnClick = PrintClick;    
  item->ShortCut = ShortCut(Word('P'), TShiftState() << ssCtrl);
  item->Bitmap->LoadFromFile(CurDir+"\\DB_U1\\Image\\printa.bmp"); // здесь
  PopupMenu->Items->Add(item);
}

В статической библитеке тоже есть места использования ее:
Код

void TSecurity::Write()
{
  FILE* file;
  AnsiString FileName=CurDir; //Здесь. Допустим, CurDir = "C:\\Pro";
  FileName+="\\exe\\DFile.bin"; // FileName = "C:\\Pro\\exe\\DFile.bin";
  file = fopen(FileName.c_str(), "wb");
....
}

Потом сделал чуток функциональности в других местах еще. И что происходит? Захожу с помощью отладчика в метод TSecurity::Write(), WatchList показывает, что CurDir = "C:\\Pro"; но после выполнения строчки AnsiString FileName=CurDir; FileName остается равен NULL! А уж потом "\\exe\\DFile.bin"; после выполнения FileName+="\\exe\\DFile.bin";. 
Комментирую свою добавленную функциональность (функция в стат.библиотеке и вызов ее из exe) и получаю  FileName="C:\\Pro\\exe\\DFile.bin"; Разкомментирую и снова NULL. Функция и ее вызов никакого отношения к переменной CurDir не имеют.

Кто-нибудь понимает в этом? 
П.С. код не выкладываю. Комм.тайна, да и пару сотен килострок весит

PM MAIL   Вверх
xvr
Дата 13.8.2008, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



borlndmm.dll (memmgr.lib) в проект добавлена?
Пардон, не заметил, что библиотека статическая

Это сообщение отредактировал(а) xvr - 13.8.2008, 15:22
PM MAIL   Вверх
petlyura
Дата 14.8.2008, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 30.1.2008
Где: Харьков

Репутация: 2
Всего: 2



Я решил эту проблему, перенеся реализацию "своей добавленной функциональности" из *.cpp-файла в *.h-файл стат.библиотеки. И все! Почему так не знаю. Просто колдовал вокруг да около. И получилось.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0485 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.