Форум: "Начинающим";
Текущий архив: 2013.09.08;
Скачать: [xml.tar.bz2];
Внизиспользование 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.003 c