powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Почему может не передаваться значение массиву?
9 сообщений из 9, страница 1 из 1
Почему может не передаваться значение массиву?
    #34015868
Sibirjak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот код из моего старого топика (автомэйшн сервер):

авторDEFINE CLASS A2FORM AS Session OLEPUBLIC
nForm_Cnt = 0

PROCEDURE Export_Data(toForm AS Object) LOCAL lnFields, lni PRIVATE lcValue AS Variant

This.nForm_Cnt = This.nFORM_CNT+1
lnFields = toForm.GetFldCnt()
IF lnFields >0
LOCAL ARRAY laFields[lnFields] as Variant
COMARRAY(toForm,10)
laFields = 'None'
toForm.GetFldsNms(@laFields) && не инициализируется массив laFields

FOR lni = 1 TO lnFields
lcValue = .F.
toForm.GetFldByInd(lni,@lcValue) && не инициализируетсяl cValue
ENDFOR
ENDIF
ENDPROC
ENDDEFINE

метод toForm.GetFldsNms и toForm.GetFldByInd рабочие (из основного приложения). Но не инициализируют в данном случае то что нужно (проверял значения массива и переменной выводом в MESSAGEBOX)
А вот toForm.GetFldCnt() замечательно работает.
Может как-то неправильно передаются значения?
...
Рейтинг: 0 / 0
Почему может не передаваться значение массиву?
    #34016249
Sibirjak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну может как-то можно оттрассировать код, чтобы понять в чем дело?
...
Рейтинг: 0 / 0
Почему может не передаваться значение массиву?
    #34017030
Cyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
PROCEDURE Export_Data(toForm AS Object) LOCAL lnFields, lni PRIVATE lcValue AS Variant
У тебя тут и вправду всё в одну строчку? :)

Правильно будет так:
Код: plaintext
1.
2.
PROCEDURE Export_Data(toForm AS Object)
LOCAL lnFields, lni
PRIVATE lcValue AS Variant
...
Рейтинг: 0 / 0
Почему может не передаваться значение массиву?
    #34018170
Sibirjak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, коечно же все с переносами, не в это дело, увы...
В VB кстати помимо основного кода в заголовке еще прописано вот что:

авторVERSION 1.0 CLASS

BEGIN

MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject

END

Attribute VB_Name = "ExportClass"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True

И сам проект VB создавался, как ActiveX EXE.

Возможно, в фоксе тож есть каие-то тонкости на этот случай?

И еще, кто-нибудь может пояснить, что это:

авторnForm_Cnt = 0
...
This.nForm_Cnt = This.nFORM_CNT+1

без этого программа вообще не выполняется...
...
Рейтинг: 0 / 0
Почему может не передаваться значение массиву?
    #34021429
Sibirjak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В частности,метод внешней программы без аргументв:

авторlnFields = toForm.GetFldCnt()

возвращает то, что надо, а вот:

авторtoForm.GetFldsNms(@laFields)
...
toForm.GetFldByInd(lni,@lcValue)

че то нифига не возвращают, т.е. первый F, а второй Т
...
Рейтинг: 0 / 0
Почему может не передаваться значение массиву?
    #34021466
Проходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из всего того, что удалось вытянуть, понятно только то, что в функции массив передается и принимается в функциях правильно. Обратная передача туманна.
...
Рейтинг: 0 / 0
Почему может не передаваться значение массиву?
    #34021614
Sibirjak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор
toForm.GetFldsNms(@laFields)

вот эта вот конструкция по замыслу должна возвращать массив имен laFields из внешнего приложения. Так вот судя по сообщениям MESSAGEBOX - массив этот не инициализируется. Или я как-то не так MESSAGEBOX пользуюсь и поэтому ничего не вижу кроме T и F ?
...
Рейтинг: 0 / 0
Почему может не передаваться значение массиву?
    #34021678
Проходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где боксы? В каком месте? Что у них параметром? Ну не телепаты мы, не знаем мы, что ты там у себя видишь. И кода нет, и данных нет. На основании каких исходных данных решать задачу. Прямо таки "подземный стук"...
...
Рейтинг: 0 / 0
Почему может не передаваться значение массиву?
    #34022042
Sibirjak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если бы у меня был код, я бы тогда и не спрашивал :) Эти методы объявлены, как допустимые при написании автомэйшн сервера приложения. В других языках (C, java, delphi, VB) все замечательно работает. А вот с фоксом загвоздка вышла... Видимо косяк приложения.
Я надеялся, что спецы смогут определить како-то явный промах, видимую ошибку может в синтаксисе, либо в специфике написания сом сервера на фоксе. Исходников приложения нет, есть только описание методов (для VB), типа:

описаниеGetFldsNms – вызывается с одним аргументом типа Variant, в котором возвращается массив имен блоков, доступных для проверки.

в блоках - обычные строковые значения
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Почему может не передаваться значение массиву?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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