Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.09.08;
Скачать: CL | DM;

Вниз

использование TStringList в доп. модуле   Найти похожие ветки 

 
Pcrepair ©   (2012-12-23 21:36) [0]

Добрый день. есть главная форма, при onCreate создается ГлобПерем типа TStringList, при onClose она ликвидируется. все работает
При переносе ГлобПерем в отдельный модуль

unit uGlobalVar;
interface
uses Classes, SysUtils, Forms;

procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
var
gStore: TStringList; (*ГП для хранения строк*)

implementation
uses Unit1;
(*создаем ПЕРЕМ при запуске приложения*)
procedure FormCreate(Sender: TObject);
begin
  gStore:=TStringList.Create;
end;

(*уничтожаем ПЕРЕМ при выходе из приложения*)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
begin
 FreeAndNil(gStore);
end;
end.


при попытке записать строку в gStore выходит исключение. понятно что не создается ГлобПерем
Внимание! Вопрос: что не так в выше приведенном коде. вроде есть ссылка на модуль главной формы. почему не создается gStore при запуске приложения?


 
знайка   (2012-12-23 22:08) [1]

Оригинальная идея переноса. :)


 
Сергей М. ©   (2012-12-23 22:10) [2]


> почему не создается gStore при запуске приложения?


Потому что не вызвана процедура FormCreate.


 
Pcrepair ©   (2012-12-23 22:32) [3]

и как ее вызвать в доп. модуле?


 
Медвежонок Пятачок ©   (2012-12-23 22:39) [4]

Конструктор формы вызвать конечно же.
Раз уж места лучше чем ОнКриэйт не нашел


 
Сергей М. ©   (2012-12-23 22:45) [5]


> как ее вызвать в доп. модуле?


Ты не поверишь - точно так же как и любую процедуру в любом модуле.


 
Юрий Зотов   (2012-12-23 23:21) [6]


> Pcrepair ©   (23.12.12 21:36)  

А можно поинтересоваться - зачем чесать правое ухо левой рукой?


 
Медвежонок Пятачок ©   (2012-12-23 23:28) [7]

Потому что правая уже занята.
Чешет левое ухо.


 
Германн ©   (2012-12-24 01:22) [8]


> зачем чесать правое ухо левой рукой?

Тут скорее "чесать правое ухо левой пяткой" :)


 
Slym ©   (2012-12-24 07:41) [9]

unit uGlobalVar;
interface
uses Classes, SysUtils, Forms;

procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
var
gStore: TStringList=nil; (*ГП для хранения строк*)

implementation

initialization
 gStore:=TStringList.Create;
finalization
 FreeAndNil(gStore);
end.



 
brother ©   (2012-12-24 12:18) [10]

> unit uGlobalVar;

и добавить его первым...


 
Pcrepair ©   (2012-12-24 20:23) [11]

Slym, спасибо за подсказку, но зачем

procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);


и вот это

gStore: TStringList=nil;, в смысле NIL. разве при инициализации оно не пусто и так?
во всяком случае gStore: TStringList; тоже работает без утечки памяти
у меня на главной форме еще есть

initialization
ReportMemoryLeaksOnShutdown := true;


 
Сергей М. ©   (2012-12-24 20:51) [12]


> Slym...зачем
>
> procedure FormCreate(Sender: TObject);
> procedure FormClose(Sender: TObject; var Action: TCloseAction);
> ..?


Как это мило.


 
Дмитрий С ©   (2012-12-25 03:00) [13]


> Pcrepair ©   (24.12.12 20:23) [11]

Если разберешься в этих вопросах сам, ты сильно продвинешься в программировании на delphi.

Но я тебе не дам такого шанса:)

procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
Эти строки Slym просто забыл стереть.

Запусти программу клавишей F7 и посмотри по шагам что зачем выполняется - станет понятен порядок выполнения.


 
Германн ©   (2012-12-25 03:23) [14]


> Запусти программу клавишей F7 и посмотри по шагам что зачем
> выполняется - станет понятен порядок выполнения.
>

Это не барское/царское дело - отлаживать программу для автора, который собирает своего монстра по заповедям доктора Франкенштейна.



Страницы: 1 вся ветка

Текущий архив: 2013.09.08;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.007 c
2-1356350722
ford
2012-12-24 16:05
2013.09.08
indy IdSMTP vs Yandex.ru and Mail.ru


1-1313145196
ForumReader
2011-08-12 14:33
2013.09.08
Передача текста функции как параметра функции. Проблема...


10-1185282081
niko_
2007-07-24 17:01
2013.09.08
Получение свойств COM-объектов расположенных на форме


15-1364966140
O'ShinW
2013-04-03 09:15
2013.09.08
прехват запросов ODBC к БД (oracle)


15-1364326850
TStas
2013-03-26 23:40
2013.09.08
Керку про кладовку