Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1364934603
Юрий
2013-04-03 00:30
2013.09.08
С днем рождения ! 3 апреля 2013 среда


15-1364755856
Писатель
2013-03-31 22:50
2013.09.08
Траблы с VBox, установка NC5


2-1356116402
Гест
2012-12-21 23:00
2013.09.08
Как сделать исчезающее Popup меню


15-1364675403
Юрий
2013-03-31 00:30
2013.09.08
С днем рождения ! 31 марта 2013 воскресенье


15-1365095139
Аббат Пиккола
2013-04-04 21:05
2013.09.08
Введение единого обязательного языка программирования





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский