Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.17;
Скачать: [xml.tar.bz2];

Вниз

TFont и Exception   Найти похожие ветки 

 
eLVik   (2002-10-07 18:58) [0]

Добрый вечер, МАСТЕРА!!!
Помогите разобраться с проблемой!
Есть такой код (Сразу оговорюсь - Syntax Check не жалуется):

interface
...
var
MyFont: TFont;

implementation
...
procedure TForm1.FormCreate(Sender: TObject);
begin
MyFont := TFont.Create;
...//далее считываю параметры фонта из ini-файла (Color, Size etc.)
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if FontDialog1.Execute then MyFont := FontDialog1.Font;
// здесь задаю новые параметры через диалог (!) ERROR
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
MyFont.Free; // Если убрать эту строку, ошибки НЕТ,но память то не освобждается 8(
...
end;


Теперь собственно зачем я пришёл...
1.Параметры фонта при загрузке формы считываются из ini нормально.
2.Если закрыть форму, не нажимая Button1, тоже всё OK.
3.Но, если нажать кнопку Button1, задать новые параметры, то при закрытии формы вылетает EExternalExeption (код ошибки непредопределён). Вопрос - ПОЧЕМУ!!!

Я выкрутился, объявив

var
MyFont: TFontDialog;

и внеся соответствующие изменения в конструктор Create и прочее. Затем использовал MyFont.Font, но всё-таки мне нужен "чистый" TFont.

ВСЕ, КТО СТАЛКИВАЛСЯ С ПОДОБНОЙ ПРОБЛЕМОЙ, ПОМОГИТЕ ПОЖАЙЛУЙСТА.
СПАСИБО ЗА ВНИМАНИЕ.


 
Best Before 2024   (2002-10-07 19:00) [1]

procedure TForm1.Button1Click(Sender: TObject);
begin
if FontDialog1.Execute then MyFont.Assign(FontDialog1.Font);end;



 
Юрий Зотов   (2002-10-08 01:17) [2]

> Вопрос - ПОЧЕМУ!!!

Потому что в Button1Click Вы переопределяете ссылку, причем неверно. В итоге и память теряется, и MyFont ссылается в никуда - а отсюда и ошибка в FormDestroy. Используйте Assign, как уже было сказано Best Before 2024.


 
eLVik   (2002-10-08 17:09) [3]

ВСЁ ПОНЯЛ!!!
СПАСИБО



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.10.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
1-56174
andrey_pst
2002-10-07 10:01
2002.10.17
Как бороться с


1-56134
Sego
2002-10-08 14:57
2002.10.17
Архивация в консольном приложении


4-56417
Xemax
2002-09-02 17:03
2002.10.17
Blue screen на высоком уровне?


3-55970
denick
2002-09-25 12:42
2002.10.17
Как перенести БД на другой комп.....


14-56333
Fog
2002-09-16 18:09
2002.10.17
Приколы про программистов и программы...





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