Форум: "Начинающим";
Текущий архив: 2007.03.04;
Скачать: [xml.tar.bz2];
ВнизУважаемые мастера! Как инициализировать указатель? Найти похожие ветки
← →
Евгенич © (2007-02-12 04:10) [0]Уважаемые мастера! Не могу разобраться по самоучителю с тем, как с помощью кнопки вызвать из одной формы другую. (Пытаюсь усовершенствовать пример проги из учебника - добавил к ней новую форму). Вроде все сделал по книжке (подключил к главной, определил обработчик, испробовал методы Show и ShowModal), однако кнопка не реагирует.
Исходя из описания ошибки, решил, что дело в инициализации переменной указателя. Однако как ее инициализировать по книге так и не понял. (Собственно не понимаю - зачем вообще он здесь нужен :-)...
Проект компилируется, но при нажатии на кнопку вызова новой формы выдает ошибку:
Project Project1.exe raised exception class EAccessViolation with message "Access violation at address 0047FC3F in module "Project1.exe". Read of address 00000000". Process stopped. Use Step or Run to continue.
Еще так ругается (о том же, видимо):
Access violation at address 0047FC3F in module "Project1.exe". Read of address 00000000.
Где прописывать указатель, как его правильно и где объявить, как его использовать, что бы открыть форму?
Не знаю, те ли вопросы задаю. Прошу помощи - я еще не умею писать код, уже второй день не могу сам разобраться с этим...
← →
Джо © (2007-02-12 04:20) [1]Приведи код, написанный в обработчике OnClick кнопки. А также уточни, что у тебя в Project/Options в разделе Auto-create forms.
← →
Евгенич © (2007-02-12 04:46) [2]Вот последний (:-)) вариант (уже от безысходности...):
Объявил в разделе implementation (var) так:
P1:PShortString;
А в самом низу кода добавил:
procedure AboutToolButtonClick (Sender: TObject);
begin
GetMem(P1, SizeOf(ShortString));
P1:=AboutForm
AboutForm.Show;
if TAboutForm.Button1Click
then AboutForm.Close and FreeMem(P1);
end;
Что касается Project/Options, то в разделе Auto-create стоит Form1, а AbautForm я занес в Available Forms.
← →
Джо © (2007-02-12 04:55) [3]Я даже боюсь предполагать, под воздействием какого тяжелого наркотика был написан код в [2] 8-(). Это просто "мама миа". Или развод? Ну, рискуя на него нарваться, приведу все-таки типичный код для создания, модального вывода на экран и уничтожения формы:
// обработчик OnClick
var
Dlg: TForm2;
begin
Dlg := TForm2.Create(nil);
try
Dlg.ShowModal;
finally
Dlg.Free
end;
end;
← →
Джо © (2007-02-12 05:00) [4][offtop]
П.С. Нет, ей-богу, сохранил, распечатал и повесил на стенку. Честное слово, это даже лучше исторического IncDay! ;->
[/offtop]
← →
Евгенич © (2007-02-12 05:04) [5]Рад порадовать! :-) Но это не развод - главный наркотик - моя некомпетентность (это у меня первая прога, и та не моя - учусь код читать вводя "усовершенствования").
Мне вместо TForm2 писать AboutForm (так я назвал вторую форму)?
Инициализации указателя не нужно? Я не правильно проинтерпретировал сообщение об ошибке?
Спасибо за ответ! Сейчас попробую переписать обработчик.
← →
Джо © (2007-02-12 05:10) [6]
> Мне вместо TForm2 писать AboutForm (так я назвал вторую
> форму)?
Вместо TForm2 нужно писать название класса второй формы. То есть, если тамtype
TAboutForm = class (TForm)
...
end;
то писать TAboutForm.Create...
А лучше вообще забросить идею писать "наобум" и читать документацию по языку. В частности, о классах и их конструкторах. И о многом другом. Дабы не пугать бессонных программистов такими ужасами, как в [2]. :)
← →
Евгенич © (2007-02-12 05:16) [7]Мне самому страшно... :-)
Прочитал один учебник на 400 стр. - про сам язык программирования только вскользь, читаю второй (уже прошел около 160 стр.) - тоже самое!
Авторы пишут что и для чего применяется, но почему-то не пишут о том КАК это все использовать?! (Следуешь за примерами - получаешь тоже самое, а КАК ПИСАТЬ САМОМУ - загадка)...
Здесь на форуме присоветовали книжек - накачал. Буду изучать. Однако, когда что-то делаешь уже иначе книжки читаешь. Вот для этого и пробую, действительно фактически "наобум".
← →
Евгенич © (2007-02-12 05:26) [8]Уточнение:
...про сам язык программирования ПИШУТ вскользь, ...
← →
Джо © (2007-02-12 05:31) [9]
> [8] Евгенич © (12.02.07 05:26)
> Уточнение:
> ...про сам язык программирования ПИШУТ вскользь, ...
Значит, нужно приобрести книгу, в которой о языке НЕ пишут вскользь, только и всего, не так ли? ;) Например, немало есть книг по языку Borland Turbo Pascal. Есть Language Guide в поставке Делфи. Есть справка, наконец (в которой о языке есть ВСЕ). По крайней мере, даже прочитав 400+160 страниц того, что ты сейчас читаешь, уже вполне можно было усвоить понятие об операторных скобках begin/end и не писать ереси вроде:if TAboutForm.Button1Click
then AboutForm.Close and FreeMem(P1);
← →
Евгенич © (2007-02-12 05:37) [10]Ну...
Тут я действительно ... расфантазировался...
Кстати, не знал, что можно учиться по Borland Turbo Pascal и Language Guide.
Спасибо за наводку и ответы!
Мне стало стыдно, я пошел учить...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.03.04;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.043 c