HELP Помогите чайнику вызвать дочернюю форму !!!!!!!!!!!!!!!!!!!!
Архангельского можеш найти здесь:as-01-1.narod.ruЖарковато здесь у вас ;) но в общем-то интересно
Да уж не то слово :). Еще вопрос нащет указателей. Видишь ли примеры как работают понимаю, а для чего не написано. Не понимаю, почему в некоторых ситуациях без них не обойтись. Может приведешь маленький примерчик?:!!!:
И еще, пока не забыл, в событии формы онексит, у меня добавлен код
if (Memo1->Lines->Count>0)
{
if (MessageBox(0,"Сохранить содержимое окна редактирования? ",
"Подтвердите сохранение",MB_YESNO)==IDYES)
{
SpeedButton5Click(Sender);
}
};
Memo1->Clear();
StatusBar1->Panels->Items[0]->Text="Без имени";
Когда жмешь Х ,то через 2 секунды вылетает сообщение с ошибкой, что то там со стеком, точно не помню, причем этот же код добавлен на кнопке выхода, но при нажатии на нее все нормально работает. ????????
Да и там книжка, хорошая(посодержанию )но линки кривые:devil: :devil: :devil:
Да уж не то слово :). Еще вопрос нащет указателей. Видишь ли примеры как работают понимаю, а для чего не написано. Не понимаю, почему в некоторых ситуациях без них не обойтись. Может приведешь маленький примерчик?:!!!:
И еще, пока не забыл, в событии формы онексит, у меня добавлен код
if (Memo1->Lines->Count>0)
{
if (MessageBox(0,"Сохранить содержимое окна редактирования? ",
"Подтвердите сохранение",MB_YESNO)==IDYES)
{
SpeedButton5Click(Sender);
}
};
Memo1->Clear();
StatusBar1->Panels->Items[0]->Text="Без имени";
Когда жмешь Х ,то через 2 секунды вылетает сообщение с ошибкой, что то там со стеком, точно не помню, причем этот же код добавлен на кнопке выхода, но при нажатии на нее все нормально работает. ????????
Да и там книжка, хорошая(посодержанию )но линки кривые:devil: :devil: :devil:
Без указателей обходится можно - но только вряд ли твоя программа будет стабильной :) При передаче объекта класса в функцию происходит КОПИРОВАНИЕ объекта, и функция работает с копией. Даже если не принимать во внимание все прочие проблемы, возьми выполни ShowMessage(sizeof(*Form2)) и сравни с ShowMessage(sizeof(Form2)). Указатель содержит адрес объекта - а сам объект создается один раз и находится в памяти по этому адресу. Соответственно в функции копируется всего-навсего указатель - не теряется память, не происходит потери объекта и т.д. Почему собственно программа Kadeta, которую он так любезно выложил в пример..:devil: , глючит. Указатель на объект удаляется после того как сам объект уже разрушен.
delete Form2;
}
И вдруг откуда не возьмись при закрытии первой формы опять:
Увлекся малчик. Для объектов которые в качестве полей класса содержат указатели на другие классы безграмотное использование delete в лучшем случае не приносит ожидаемого эффекта.
В твоем случае тебе во первых вызывать надо не
а так
во вторых не понятно - в каком событии ты вызываешь этот код - у формы нет событий onEnter и onExit. Ети события могут возникать если компонент соответственно получает или теряет фокус. Форма может быть соответственно видимой или не видимой, быть активной или не активной и есть событие onClose и onDestrow. В событии onClose все отрабатывается нормально и без ошибок. Может быть проблема находится в том месте где ты сохраняешь код. И имей неплохую привычку запоминать сообщения об ошибках. И по вопросам указателей - почитай хотя бы Архангельского, форум не то место где нужно задавать вопросы, ответ на которые занимет как минимум 4 печатных листа. То же касается и компонентов - есть справка билдера - ее и читай для начала.
Соответственно в функции копируется всего-навсего указатель - не теряется память, не происходит потери объекта и т.д.
Чтото новенькое, а поподробнее? Что за утечка памяти, и что за обьекты теряются()? Надеюсь ты неправильно выразился.
По моему, если аргумент - указатель, ты работаешь (в функции) с самим обьектом. В противном случае с его копией,а существует копия только в самой функции.
Почему собственно программа Kadeta, которую он так любезно выложил в пример..:devil: , глючит. Указатель на объект удаляется после того как сам объект уже разрушен.
delete Form2;
}
Так, я думал тема закрыта.
Полное незнание предмета разговора.
Пробуй:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2=new TForm2(Application);
Form2->Visible=true;
}
void __fastcall TForm2::FormCreate(TObject *Sender)
{
ShowMessage("Create Form2");
}
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
ShowMessage("Close Form2");
}
void __fastcall TForm2::FormDestroy(TObject *Sender)
{
ShowMessage("Destroy Form2");
}
Запускаем. Если перед открытием Form1 выскочит сообщение Create Form2, то и создавать и удалять форму 2 ненадо. Просто работаешь и всё.
Но мы говорили про Available form.
Я специально при закрытии (Close) Form2 убрал delete Form2.
Итак:
Cообщение Create Form2 откроется при нажатии на кнопку Button1.
При закрытии формы появится сообщение Close Form2
Сообщение Destroy Form2 так и не появится вообще (если конечно без delete Form2 в Form2->OnClose).
Зато при повторном открытии формы создастся ещё одна, и ещё, и ещё. И никогда не удаляются.
И вдруг откуда не возьмись при закрытии первой формы опять:
Ну извени, промахнулся, недоглядел. Насколько я помню это я второй раз описался. А вот в ТЕОРИИ НИРАЗУ. А у тебя было столько ошибок в теории, и не одного довода.
Увлекся малчик. Для объектов которые в качестве полей класса содержат указатели на другие классы безграмотное использование delete в лучшем случае не приносит ожидаемого эффекта.
Я тебе 2 раза обьяснял. Не вериш мне, то заглянь в соседнюю тему. "разрушение объектов, оно надо? и если да, то как" - http://forum.codenet.ru/showthread.php?s=&threadid=16694
И впредь - никаких наездов в мой адрес. Ато выглядишь глупо.
Событие onClose не зря получает два параметра. Один из них как раз и предназначен для того, что бы можно было явно управлять поведением объекта - очистить память или нет, как это может быть сделано я показывал раньше. Нравится тебе явно вызывать delete - на здоровье. Но не надо это выдавать за высший пилотаж программирования или лучшее решение - это далеко не так, особенно если ты работаешь с достаточно сложной библиотекой классов.
:???: ;)
kot_ , так где скачать книжку Архангельсого. Я бы судовольствием почитал. Линки, которые ты дал кривые, точнее сайт есль , а книг нэма
:???: ;)
:D :D :D Я вроде как ссылок не выкладывал. И книги есть по ссылке которую дал elderb.
Посмотри внимательно, вот например: Здесь . Другое дело что у ребят там какие то бока, ну так на то есть майл, есть гостевая, общайся с ними.
:D :D :D Я вроде как ссылок не выкладывал. И книги есть по ссылке которую дал elderb.
Посмотри внимательно, вот например: Здесь . Другое дело что у ребят там какие то бока, ну так на то есть майл, есть гостевая, общайся с ними.
Ой точно, не ты же дал. Да там линки на книжки кривые.:devil:
Слушай , я дневник забабашил8) . Хочешь, скину исходник, посмотишь все ли корректно сделано. Ну если не хочешь, считай, что я просто похвастался.:P
Ой точно, не ты же дал. Да там линки на книжки кривые.:devil:
Слушай , я дневник забабашил8) . Хочешь, скину исходник, посмотишь все ли корректно сделано. Ну если не хочешь, считай, что я просто похвастался.:P
Ну скинь :D :D :D Адрес смотри в привате.
Ну скинь :D :D :D Адрес смотри в привате.
Код слишком длинный для форума. По почте пошлю ок?А как проверку на изменение сделать в Мемо?
Код слишком длинный для форума. По почте пошлю ок?А как проверку на изменение сделать в Мемо?
По событию onChange.
По событию onChange.
Точно же
kot_, что то buider глючит. Открываю проект, делаю изменения, например добавляю кнопочки например, а после компиляции запускается старый проект . АААААА Что делать. Мне еще доделать надо кое че , а изменения в слу не вступают.
это не билдер глючит. Посмотри настройки проекта. Скорее всего проблемы гдето в них. Что конкретно - можешь сказать только ты сам. Возможно форма которую ты меняешь, и форма которая компилируется - разные :). Посмотри внимательно какие формы влючены в проект, а в какие ты вносишь изменения.
Кстати тебе пришло письмо ???
Пришло. Тебе должен ответ прийти.
Да, и мне надо сделать, чтобы при дапуске программы появлялось сначала окошко с запросом на пароль, а потом, при правельно вводе главное окно. И еще ? : можно ли из мемо записывать данные в файл.?? Шучу, это не весь ?, : так, чтобы обычным текстовым редактором из невозможно было открыть, а только моей прогой, ну чтобы при открытии редактором некорректное отображение было , например. Спасибо за помощь в море информации :))
Все это можно сделать, но тебе тогда надо хранить гдето пароль который правильный - и в связи с этим решать кучу проблем. Пароль желательно хранить в зашифрованном виде, методика простейшего шифрования уже рассматривалась на форуме. Методики хранения паролей, достоинства и недостатки - на это есть отдельные ресурсы в сети - задай в поисковике хотя бы SoftIce - получишь кучу ссылок.
Практически любой файл может быть открыт в текстовом редакторе :) Если тебе нужен свой формат файла - тогда тебе нужно создать свой формат записи и считывания данных и записывать данные в двоичном виде. Но имей ввиду - у тебя должены быть определены параметры по которым ты будешь определять начало фрагмента данных и его окончание и где будет хранится эта информация. Вобщем то ничего сложного - если четко знаешь что хочешь сделать. У мемо есть свойство Text позволяющее работать с со всем содержимым как с текстовой строкой - можешь воспользоваться этим. Можешь создать свой класс для работы с данными. Вариантов много. Удачи.
Так вот, я предлогаю такой способ: вначале запуска программы появляется окно с запросом на пароль. А нет пароля- нет списка файлов. Нет файлов -нет возможности отыскать на компе их. Следовательно, эти файлы можно запихнуть в любую директорию, в которую обычный юзверь даже зайти боится :). Вот это и было моим решением насчет защиты :) Зацени :)
Насчет softice - я понимаю, что просто хранить пароль в программе -это то же , что пароля не иметь, но я делаю программу не для хакеров :), а для подруги, у которой есть любопытный муж, который далеко не хакер, хотя...(все может быть):)). Так вот сама прога выглядит так: Справа окошко с файлами. Слева элемент мемо, ну там сверху календарь, возможность вставить текущее время и т.д. А , и еще нажимаешь "записать" и появляется файл с определенным расширением и в качестве имени- текущая дата.(пока не забыл - файл то появляется, но уже после повторного запуска проги. Там должно быть что то вроде update() или refresh(), чтобы он сразу появился после нажатия на запись ?) Вот и возникла у нее пожелание, чтобы так просто файлы было бы не просмотреть. Я хочу переделать, и вижу , что на форме изменений нет, т.е. на форме есть, а в откомпиленнойц проге уже нет. :((
Так вот, я предлогаю такой способ: вначале запуска программы появляется окно с запросом на пароль. А нет пароля- нет списка файлов. Нет файлов -нет возможности отыскать на компе их. Следовательно, эти файлы можно запихнуть в любую директорию, в которую обычный юзверь даже зайти боится :). Вот это и было моим решением насчет защиты :) Зацени :)
Храни записи в базе данных - будет проще :)IMHO идея не очень хороша.
Храни записи в базе данных - будет проще :)IMHO идея не очень хороша.
Ладно понял я. Слушай, а я проверил насчет проблемой с формой- форма та( т.к. у меня только главная форма и о программе - все. Что делать то???:devil: Заново все переделывать что -ли. А если бы я че то здоровое делал??? и также заглючило. ТО все что-ли ???
Ладно понял я. Слушай, а я проверил насчет проблемой с формой- форма та( т.к. у меня только главная форма и о программе - все. Что делать то???:devil: Заново все переделывать что -ли. А если бы я че то здоровое делал??? и также заглючило. ТО все что-ли ???
Возми выдели все файлы в своем проекте с расширением *.h,*.cpp,*.res,*.dfm,*.bpr и кинь мне в мыло в архиве. Но для начала все же не поленись и ВНИМАТЕЛЬНО проверь что ты меняешь, а что компилишь.
:D :D :D Я вроде как ссылок не выкладывал. И книги есть по ссылке которую дал elderb.
Посмотри внимательно, вот например: Здесь . Другое дело что у ребят там какие то бока, ну так на то есть майл, есть гостевая, общайся с ними.
Уважаемый! Здесь все ссылки битые. Не огли бы вы дать не битые ссылки или выслать мне на [email=vova@is.pl.ua]мыло[/email] эту книгу? Очень нужно!
Заранее благодарю.