dbf_usr Posted June 17, 2019 Posted June 17, 2019 Как определить создана ли форма? Приведенный ниже код не работает: procedure TMainForm.UniButton3Click(Sender: TObject); var Y: TUniMessenger; begin if not Assigned(Y) then TUniMessenger.Create(UniApplication).Show; if Y=nil then TUniMessenger.Create(UniApplication).Show; if Assigned(Y) then Showmessage(Y.Caption); end; а строка: if Assigned(Y) then Showmessage(Y.Caption); - вызывает ошибку Access violation, что свидетельствует о то что форма таки не создана, но почему не одно из двух условий не соблюдается. Quote
dbf_usr Posted June 17, 2019 Author Posted June 17, 2019 38 minutes ago, Sherzod said: Здравствуйте, А где (и что) присваиваете Y? var Y: TUniMessenger; unit UnitMessenger; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, uniGUITypes, uniGUIAbstractClasses, uniGUIClasses, uniGUIForm, uniMemo, uniSplitter, uniGUIBaseClasses, uniPanel; type TUniMessenger = class(TUniForm) UniPanel1: TUniPanel; UniSplitter1: TUniSplitter; UniPanel2: TUniPanel; UniMemo1: TUniMemo; ... Quote
Tokay Posted June 19, 2019 Posted June 19, 2019 Quote if not Assigned(Y) неинициализированная локальная переменная. более того - скорее всего среда написала хинт по этому поводу. в коде должно быть 0 хинтов и варнингов, количество вопросов и проблем сильно уменьшится. Quote
stas Posted June 19, 2019 Posted June 19, 2019 5 hours ago, Tokay said: неинициализированная локальная переменная. более того - скорее всего среда написала хинт по этому поводу. в коде должно быть 0 хинтов и варнингов, количество вопросов и проблем сильно уменьшится. Ага , это мы умеем {$Warnings Off} {$Hints Off} Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.