![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Объектное ориентирование [D7, XP]
kop © (2005-11-23 13:11:00)Создаю в отдельном юните функцию заполнения Edit. Затем хочу вызвать ее на двух различных формах - прога вылетает!!! Неужели мне надо создавать две одинаковые функции для заполнения Edit'ов разных форм??
alex_*** (2005-11-23 18:49:00) [1]
function TMyClass.WriteNewQuestion(Edit1,Edit2,Edit3,Edit4,Edit5,Edit6,Edit7,Edit8: TEdit; CheckBox1,CheckBox2,CheckBox3,CheckBox4,CheckBox5,CheckBox6,CheckBox7: TCheckBox): string;
Ты сделай уж тогда массив записей типа ( ch: TCheckBox; ed: TEdit ), заполни его один раз при старте и пользуй. Я думаю что формы у тебя все равно AutoCreate. Бегаешь по нему и смотришь что надо
Ega23 (2005-11-23 17:00:00) [2]
> kop (23.11.05 16:22) [27]
КАКОЙ УЖАС!!!!
Ты эта... про бабло не зарекайся... Я бы за ТАКУЮ программу не просто не заплатил, я бы убил нахрен.
Digitman (2005-11-23 16:49:00) [3]
> моя программа реально запускается
не спорю.
> прога вылетает
факт, кстати, не мной, а тобой констатируемый)
> бабла отвалят
за ту саму дерьмовую неотесаную-неотлаженую прогу-то !?)
ту которая "реально запускается", а потом "вылетает" !?)
ищи дурака)))) ...LOL
kop (2005-11-23 16:45:00) [4]>Digitman © (23.11.05 16:29) [28]
ты не прав! моя программа реально запускается в одной из местных школ... мне еще и бабла отвалят :)
Digitman (2005-11-23 16:29:00) [5]
> kop (23.11.05 16:22) [27]
не взирая на твое "прога вылетает" на основании [27] можно сказать одно - таким "прогам" место в топке.
kop (2005-11-23 16:22:00) [6]Вы предлагаете вот так функцию прописать?
function TMyClass.WriteNewQuestion(Edit1,Edit2,Edit3,Edit4,Edit5,Edit6,Edit7,Edit8: TEdit; CheckBox1,CheckBox2,CheckBox3,CheckBox4,CheckBox5,CheckBox6,CheckBox7: TCheckBox): string;
begin
loadt:=GetTest(Form4.XMLDocument1);
qlist:=loadt.Get_Question;
q1:=qlist.Add;
q1.Set_QText(Edit1.Text);
alist:=q1.Answer;
if Edit2.Text <> '' then begin
a:=alist.Add;
a.Set_AContent(Edit2.Text);
if checkbox1.Checked=true then a.Set_Right('true') else a.Set_Right('false');
end;
if Edit3.Text <> '' then begin
a:=alist.Add;
a.Set_AContent(Edit3.Text);
if checkbox2.Checked=true then a.Set_Right('true') else a.Set_Right('false');
end;
if Edit4.Text <> '' then begin
a:=alist.Add;
a.Set_AContent(Edit4.Text);
if checkbox3.Checked=true then a.Set_Right('true') else a.Set_Right('false');
end;
if Edit5.Text <> '' then begin
a:=alist.Add;
a.Set_AContent(Edit5.Text);
if checkbox4.Checked=true then a.Set_Right('true') else a.Set_Right('false');
end;
if Edit6.Text <> '' then begin
a:=alist.Add;
a.Set_AContent(Edit6.Text);
if checkbox5.Checked=true then a.Set_Right('true') else a.Set_Right('false');
end;
if Edit7.Text <> '' then begin
a:=alist.Add;
a.Set_AContent(Edit7.Text);
if checkbox6.Checked=true then a.Set_Right('true') else a.Set_Right('false');
end;
if Edit8.Text <> '' then begin
a:=alist.Add;
a.Set_AContent(Edit8.Text);
if checkbox7.Checked=true then a.Set_Right('true') else a.Set_Right('false');
end;
end;
Плохиш (2005-11-23 15:12:00) [7]
> Digitman © (23.11.05 14:39) [23]
Есть подозрение, что у автора процесс компиляции до конца не доходит ;-)
Digitman (2005-11-23 14:43:00) [8]
> Думкин © (23.11.05 14:42) [24]
солидарен на все сто) ..
Думкин (2005-11-23 14:42:00) [9]> Digitman © (23.11.05 14:39) [23]
Так к тому и ведем ведь. :)
Digitman (2005-11-23 14:39:00) [10]
> Думкин © (23.11.05 14:33) [20]
> вдруг я телепатор
ну разве что так)...
но, однако, привести автора к мысли использовать на полную мощь встроенный отладчик, imho, будет гораздо полезней нежели обрести вдруг телепатические потенциалы)
Думкин (2005-11-23 14:37:00) [11]Пытка апельсинами продолжалась второй час.(с) Спортлото-82. :(
alex_*** (2005-11-23 14:35:00) [12]где описание типа Q1
Думкин (2005-11-23 14:33:00) [13]> kop (23.11.05 14:28) [17]
Ну, если они почти дублируют друг друга. То передавай в функцию форму как параметр.
function TMyClass.WriteNewQuestion(Form : TForm): string;
и замени TForm3 на Form. Например. Хотя топкой пахнет. :(
А почему вылетает то? Видимо пишет чего-то перед этим?
> Digitman © (23.11.05 14:20) [16]
Иногда забавно ребусы смотреть. Или попытаться убедить автора - что ему надо не спешить, а подумать. Не всегда получается. :(
Да и вдруг я телепатор. :))
Digitman (2005-11-23 14:31:00) [14]
> kop (23.11.05 14:28) [17]
ты еще долго будешь из пустого в порожнее лить ?
КАКАЯ КОНКРЕТНО строчка твоего кода вызывает то что ты называешь неким "вылетанием проги" ?!
Плохиш (2005-11-23 14:30:00) [15]
> kop (23.11.05 14:28) [17]
Может почитаешь, что про ооп в делфи?
kop (2005-11-23 14:28:00) [16]Будем считать что форм3-это вторая форма для добавления нового вопроса... и вот если убрать "form3" у всех вышепоказанных компонентов,то delphi не поймет, к какой именно форме обращаться - форм3 или форм4 (на которой я тоже вызываю эту функцию) и вылетает
Digitman (2005-11-23 14:20:00) [17]
> Думкин © (23.11.05 14:18) [15]
тебе оно надо ? "телепатировать" ?)
Думкин (2005-11-23 14:18:00) [18]Про типы - догадайся мол сама.
А при чем тут вторая форма и вылет?
Я второй формы в упор не вижу. Хотя и догадался, что Form3 - это первая.
Хотя есть Form4 - но ... не то.
По-поводу вылета. Где и как вылетает? И где ты пытаешься заполнить вторую форму?
Digitman (2005-11-23 14:16:00) [19]так..
теперь показывай, на какой строчке приведенного текста у тебя что-то там куда-то там "вылетает" ..
kop (2005-11-23 14:14:00) [20]>>Digitman: Функция нереально здоровая) и не думаю что от этого будет какой-либо толк, но вот она:
function TMyClass.WriteNewQuestion: string;
begin
loadt:=GetTest(Form4.XMLDocument1);
qlist:=loadt.Get_Question;
q1:=qlist.Add;
q1.Set_QText(Form3.Edit1.Text);
alist:=q1.Answer;
if Form3.Edit2.Text <> '' then begin
a:=alist.Add;
a.Set_AContent(Form3.Edit2.Text);
if Form3.checkbox1.Checked=true then a.Set_Right('true') else a.Set_Right('false');
end;
if Form3.Edit3.Text <> '' then begin
a:=alist.Add;
a.Set_AContent(Form3.Edit3.Text);
if Form3.checkbox2.Checked=true then a.Set_Right('true') else a.Set_Right('false');
end;
if Form3.Edit4.Text <> '' then begin
a:=alist.Add;
a.Set_AContent(Form3.Edit4.Text);
if Form3.checkbox3.Checked=true then a.Set_Right('true') else a.Set_Right('false');
end;
if Form3.Edit5.Text <> '' then begin
a:=alist.Add;
a.Set_AContent(Form3.Edit5.Text);
if Form3.checkbox4.Checked=true then a.Set_Right('true') else a.Set_Right('false');
end;
if Form3.Edit6.Text <> '' then begin
a:=alist.Add;
a.Set_AContent(Form3.Edit6.Text);
if Form3.checkbox5.Checked=true then a.Set_Right('true') else a.Set_Right('false');
end;
if Form3.Edit7.Text <> '' then begin
a:=alist.Add;
a.Set_AContent(Form3.Edit7.Text);
if Form3.checkbox6.Checked=true then a.Set_Right('true') else a.Set_Right('false');
end;
if Form3.Edit8.Text <> '' then begin
a:=alist.Add;
a.Set_AContent(Form3.Edit8.Text);
if Form3.checkbox7.Checked=true then a.Set_Right('true') else a.Set_Right('false');
end;
end;