Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как переопределить класс / 11 сообщений из 11, страница 1 из 1
27.03.2011, 20:09
    #37184774
twenty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переопределить класс
Доброе времени ночи. проблема такого характера

1. Есть табличка в ней находятся имена почтовых адресов
2. Есть prg в котором пишу

select table1
go top
scan
LsAdress=table1.email

сдесь создаю класс
ox=Creat("Email")

endscan


ниже пишу

define class email as custom
ну и описываю параметры подключения, пользователь +пароль+сервер+порт


Вопрос в том, что всегда берется 1 запись в таблички и только одна, но равная количеству записей в табличке

Каким образом можно переопределить класс или заставить его отрабатывать каждый раз сначала ?

Всем заранее спасибо 1!!! Ломаю голову уже 7-ой час
...
Рейтинг: 0 / 0
27.03.2011, 20:19
    #37184783
Как переопределить класс
twenty,
а где тут необходимость "переопределить класс"? Или Вы вкладываете в этот какой-то совершенно свой, отличный от общепринятого, смысл? Ибо создание объекта какого-то класса отнюдь не переопределение класса.
...
Рейтинг: 0 / 0
27.03.2011, 20:26
    #37184789
twenty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переопределить класс
Может не совсем понятно изъяснился...

вот смотрите

читаю table1

1 - запись


данные вносятся в класс
как
username
passwod

читаю почту все замечательно

НО далее по циклу спускается вторая запись
а в класс попадают данные их первой записи
такого не должно быть, может класс переопределить нужно или пересоздать... нее могу понять в чем дело..
...
Рейтинг: 0 / 0
27.03.2011, 20:33
    #37184796
Как переопределить класс
twentyМожет не совсем понятно изъяснился...

вот смотрите

читаю table1

1 - запись


данные вносятся в класс
как
username
passwod

читаю почту все замечательно

НО далее по циклу спускается вторая запись
а в класс попадают данные их первой записи
такого не должно быть, может класс переопределить нужно или пересоздать... нее могу понять в чем дело..У Вас неправильное понимание ООП. Класс определяется один раз. Командой define class. Функция CreateObject(), в соответствии с ее именем, создает объект. Указанного класса. И работа идет с объектом. И для каждой записи Вы хотите создавать подключение? Может покажите код, а не его описание?
...
Рейтинг: 0 / 0
27.03.2011, 20:38
    #37184803
twenty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переопределить класс
Вот код так сказать


PUBLIC LcStringPassword, LcStringEmailpk
LcStringPassword=""
LcStringEmailpk=""

Local LCEMAIL
Public ox

SET DELETED ON

SELECT pk
GO top
SCAN ALL
LcStringPassword=""
LcStringEmailpk=""

LcStringPassword=LOWER(ALLTRIM(pk.emailpass))
LcStringEmailpk=LOWER(ALLTRIM(vipkorp.emailpk))

MESSAGEBOX(LcStringEmailpk)

ox=Create("popemail")
ON ERROR wait window "Error" timeout 5
TRY
If Not ox.Connect()
Else
If ox.STATISTICS()
If ox.NUMBEROFEMAILS>0
Wait Window 'First Email:' Nowait
For LNI = 1 To ox.NUMBEROFEMAILS
Wait Window ox.RETRIEVE(LNI) Nowait

LCEMAIL = ox.MSGCONTENTS

objStream = Createobject("ADODB.Stream")
objStream.Open
objStream.LoadFromFile(filerec)
vvv=Createobject("CDO.Message")
vvv.Datasource
vvv.Datasource.OpenObject(objStream, "_Stream")
Erase (filerec)
WAIT WINDOW "Email "+ALLTRIM(STR(LNI )) TIMEOUT 1
Endfor
Else
Endif
Else
Endif
ox.DISCONNECT()
Endif
ox=Null
ENDTRY
ON ERROR
Wait Window "OK" Timeout 1


SELECT vipkorp
ENDSCAN


*/////////////////////////////////////////////////////////////////////////////
Define Class POPEMAIL As Custom
ErrorMessage = ""

Password =LcStringEmailpk Вот здесь данные не обновляются и как то нужно заново переопределить класс ??
User =LcStringPassword

SERVERPORT = 110
ServerName = ""

****************************
*************
*****************
Procedure Destroy
DoDefault()
If This.CONNECTED
This.DISCONNECT()
Endif

Endproc
Enddefine
...
Рейтинг: 0 / 0
28.03.2011, 10:52
    #37185314
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переопределить класс
Например так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
Public LcStringPassword, LcStringEmailpk
LcStringPassword=""
LcStringEmailpk=""

Local LCEMAIL
Public ox
ox=Create("popemail")

Set Deleted On

Select pk
Go Top
Scan All
*  LcStringPassword=""
*  LcStringEmailpk=""

*  LcStringPassword=Lower(Alltrim(pk.emailpass))
*  LcStringEmailpk=Lower(Alltrim(vipkorp.emailpk))

 With ox As POPEMAIL
  .Password = Lower(Alltrim(pk.emailpass))
  .User     = Lower(Alltrim(vipkorp.emailpk))
 Endwith
* Messagebox(LcStringEmailpk)

 On Error Wait Window "Error" Timeout  5 
 Try
  If Not ox.Connect()
  Else
   If ox.STATISTICS()
    If ox.NUMBEROFEMAILS> 0 
     Wait Window 'First Email:' Nowait
     For LNI =  1  To ox.NUMBEROFEMAILS
      Wait Window ox.RETRIEVE(LNI) Nowait

      LCEMAIL = ox.MSGCONTENTS

      objStream = Createobject("ADODB.Stream")
      objStream.Open
      objStream.LoadFromFile(filerec)
      vvv=Createobject("CDO.Message")
      vvv.Datasource
      vvv.Datasource.OpenObject(objStream, "_Stream")
      Erase (filerec)
      Wait Window "Email "+Alltrim(Str(LNI )) Timeout  1 
     Endfor
    Else
    Endif
   Else
   Endif
   ox.DISCONNECT()
  Endif
  ox=Null
 Endtry
 On Error
 Wait Window "OK" Timeout  1 


 Select vipkorp
Endscan


*/////////////////////////////////////////////////////////////////////////////
Define Class POPEMAIL As Custom
 ErrorMessage = ""
* Объявляешь свойства как недоступные снаружи
 Hidden Password && = LcStringEmailpk &&Вот здесь данные не обновляются и как то нужно заново переопределить класс ??
 Hidden User     && = LcStringPassword

 SERVERPORT =  110 
 ServerName = ""

* в Init инициализируешь их чем хочешь
 Procedure Init
 This.Password = ""
 This.User     = ""
 Endproc

* Создаешь два свойства для установки новых значений этих скрытых свойств:
 Procedure Password_assign
 Lparameters vNewVal
 This.Password = vNewVal
 Endproc

 Procedure User_assign
 Lparameters vNewVal
 This.User = vNewVal
 Endproc

****************************
*************
*****************
 Procedure Destroy
 DoDefault()
 If This.CONNECTED
  This.DISCONNECT()
 Endif

 Endproc
Enddefine


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
28.03.2011, 15:37
    #37185994
twenty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переопределить класс
Спасибо огромное буду пробовать
...
Рейтинг: 0 / 0
29.03.2011, 03:40
    #37186942
twenty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переопределить класс
Прошу прощения, но вот здесь
With ox As POPEMAIL
.Password = Lower(Alltrim(pk.emailpass))
.User = Lower(Alltrim(vipkorp.emailpk))


выдает, что Property .Password not found

??
...
Рейтинг: 0 / 0
29.03.2011, 04:38
    #37186948
twenty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переопределить класс
я так понял чтобы свойства

.Password
.User

заработали, необходимо определить переменную чтоб она попала сюда
Procedure Password_assign
Lparameters vNewVal
This.Password = vNewVal
Endproc


каким образом и в каком месте нужно это сделать .....
...
Рейтинг: 0 / 0
29.03.2011, 15:22
    #37188069
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переопределить класс
> Автор: twenty
> каким образом и в каком месте нужно это сделать .....


Сори, я протупил. Квалификотор доступа при объявлении переменных не нужен
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
o = Createobject("POPEMAIL")
o.Password = "Пароль"
o.User     = "Пользователь"

Define Class POPEMAIL As Custom
* Объявляешь свойства как недоступные снаружи
 Password = "" && = LcStringEmailpk &&Вот здесь данные не обновляются и как то нужно заново переопределить класс ??
 User     = ""     && = LcStringPassword

* в Init инициализируешь их чем хочешь
 Procedure Init
 This.Password = ""
 This.User     = ""
 Endproc

* Создаешь два свойства для установки новых значений этих скрытых свойств:
 Procedure Password_assign
 Lparameters vNewVal
 This.Password = vNewVal
 Messagebox(This.Password)
 Endproc

 Procedure User_assign
 Lparameters vNewVal
 This.User = vNewVal
 Messagebox(This.User)
 Endproc

Enddefine


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
03.04.2011, 14:14
    #37196521
englishege
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переопределить класс
Да, интересно. Буду пробовать тоже.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как переопределить класс / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]