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

Вниз

Странный глюк при работе с двумя формами.   Найти похожие ветки 

 
red_imp ©   (2008-05-21 13:13) [0]

Никак не могу понять в чем проблема. Один старый проект, все работало нормально, надо было немнго его подправить.
После исправлений совершенно другой процедуры, начало выкидывать глюки:
Из главной формы вызываеться форма - для заполнения данных

procedure TForm1.Button5Click(Sender: TObject); //"Выровнять"
begin
/////////////
Application.CreateForm(TForm2 , Form2);
form2.ShowModal;
////////////
end;

после ввода данных, и нажатия одной из кнопок, передаються данные на главную форму

procedure TForm2.Button1Click(Sender: TObject);
begin
if edit1.Text="" then begin showmessage("Введите данные"); edit1.SetFocus; end
else begin
          form1.Label2.Caption:=ComboBox1.Text;
          form1.Label3.Caption:=edit1.text;
          form1.virint(1);
          form2.close;
    end;
end;

После чего оно через раз выкидывает ошибку
"access violation at adress 00490AB4 in module "Project1". Read of address 000004DE"
на строчке "Form1.Label2.Caption:=ComboBox1.Text;"
Мож кто пнет в правильном направлении?


 
Palladin ©   (2008-05-21 13:15) [1]

form1 не существует


 
Ega23 ©   (2008-05-21 13:19) [2]


> form1 не существует


или form1.Label2  или CmboBox1


 
Red_imp ©   (2008-05-21 13:21) [3]

Хм, это как? Я из form1, создаю form2, и form2 делаю модальной, при этом с первой формой ничего не делаю, она просто висит неактивная. Причем все работает но через раз.


 
Red_imp ©   (2008-05-21 13:22) [4]

Ega23 ©
Все существует (( проверял.


 
Palladin ©   (2008-05-21 13:23) [5]

form1 это переменная к которой ты обращаешься, вот в валидности ее значения и есть сомнения


 
Ega23 ©   (2008-05-21 13:25) [6]

Вообще-то как-то через задницу сделано...
Зачем модальной форме знать что-то об объекте, из которого её вызвали?


 
Red_imp ©   (2008-05-21 13:31) [7]


> Вообще-то как-то через задницу сделано...

Согласен ))
Просто через form2 передаю данные в головну форму, сделано для удобства пользователя.


> form1 это переменная к которой ты обращаешься, вот в валидности
> ее значения и есть сомнения


form1 - форма на которой находяться Label2 и Label3, они там есть 100%

Хм непонятно просто почему оно работает через раз, причем очень странно


 
Palladin ©   (2008-05-21 13:32) [8]


> form1 - форма на которой находяться Label2 и Label3, они
> там есть 100%

причем тут label2 и label3
я тебе про переменную form1 говорю
а работает через раз, потому что через задницу сделано


 
Palladin ©   (2008-05-21 13:33) [9]

за обращение к глобальным идентификаторам вообще нужно бить больно по нежным местам


 
Red_imp ©   (2008-05-21 13:34) [10]


> я тебе про переменную form1 говорю

Тоже существует


 
Умище   (2008-05-21 13:36) [11]

procedure TForm1.Button5Click(Sender: TObject); //"Выровнять"
begin
  Application.CreateForm(TForm2 , Form2);
  try  
    if form2.ShowModal=mrOk then
      Form1.Label2.Caption := Form2.ComboBox1.Text;
  finally
    Form2.Release; //Или Form2.Free;
  end;
end;


 
Red_imp ©   (2008-05-21 13:37) [12]


> за обращение к глобальным идентификаторам вообще нужно бить
> больно по нежным местам

Каюсь, есть грех. Но всетаки...


 
Red_imp ©   (2008-05-21 13:42) [13]

Умище

Спасибо попробую ))

Да и еще эта конструкция работала коректно около года.


 
Сергей М. ©   (2008-05-21 13:44) [14]


> эта конструкция работала коректно около года.


Интересно, сколько протянет "конструкция" Умища ?)


 
Anatoly Podgoretsky ©   (2008-05-21 13:46) [15]

Ты так и будешь произносить заклинания, не шаман же.


 
Умище   (2008-05-21 13:57) [16]


> Сергей М. ©   (21.05.08 13:44) [14]
>
> > эта конструкция работала коректно около года.
>
>
> Интересно, сколько протянет "конструкция" Умища ?)


Дык а чего ей сделается-то?-))


 
Сергей М. ©   (2008-05-21 14:06) [17]


> а чего ей сделается-то?


Полагаю, примерно то же, что череp год сделалось с шедевральной "конструкцией" автора)


 
Умище   (2008-05-21 14:07) [18]

Что же он с ней сотворил...


 
ЮЮ ©   (2008-05-22 03:51) [19]

> Дык а чего ей сделается-то?-))


> Form1.Label2.Caption := Form2.ComboBox1.Text;


Не факт, что переменная Form1 указывает на тот экземпляр класса TForm1 у которого выполняется метод Button5Click.

вместо  
 Form1.Label2.Caption := Form2.ComboBox1.Text;
следует писать
 Label2.Caption := Form2.ComboBox1.Text;


 
Anatoly Podgoretsky ©   (2008-05-22 09:04) [20]


> Дык а чего ей сделается-то?-))

А почему не классика?
procedure TForm1.Button5Click(Sender: TObject); //"Выровнять"
begin
  with TForm2.Create(self) do
  try  
    if ShowModal = mrOk then begin
      Self.Label2.Caption := ComboBox1.Text;
    end;
  finally
    Free;
  end;
end;


 
Умище   (2008-05-22 09:18) [21]


> вместо  
>  Form1.Label2.Caption := Form2.ComboBox1.Text;
> следует писать
>  Label2.Caption := Form2.ComboBox1.Text;


> Anatoly Podgoretsky ©   (22.05.08 09:04) [20]


Это лучше, конечно, но автору нужна именно Form1.Label2-)


 
Anatoly Podgoretsky ©   (2008-05-22 09:40) [22]

> Умище  (22.05.2008 09:18:21)  [21]

Точно, именно глобальная переменная?
А может он на это согласится.
В коде не оставлено даже шанса для ошибки.

Кстати к слову, я никогда не стал бы использовать Release в данном контексте, только Free


 
Red_imp ©   (2008-05-22 13:09) [23]

Всем спасибо )) Особенно Anatoly Podgoretskу



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

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

Наверх





Память: 0.5 MB
Время: 0.006 c
2-1211582049
bpegukc
2008-05-24 02:34
2008.06.15
Помогите... множества


2-1211433923
dumka
2008-05-22 09:25
2008.06.15
Даты


15-1206711198
Дмитрий С
2008-03-28 16:33
2008.06.15
vkontakte


2-1211328694
snake-as
2008-05-21 04:11
2008.06.15
Окно подтверждения


2-1211192209
kla$
2008-05-19 14:16
2008.06.15
interbase(проблема ввода данных)





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