Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.48 MB
Время: 0.04 c
2-1171391195
Lamer_5
2007-02-13 21:26
2007.03.04
Как считать значения ListView


15-1170650293
Ssilent
2007-02-05 07:38
2007.03.04
Может кто знает?


1-1168789959
TStas
2007-01-14 18:52
2007.03.04
Как получить список возможных значений Size для шрифта FontName?


3-1165165267
Rav
2006-12-03 20:01
2007.03.04
TDbComboBox "наоборот"... (или правильнее TLookupDbComboBox )


11-1150277462
Don
2006-06-14 13:31
2007.03.04
Ошибка в OpenSaveDialog





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский