powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вернуть массив из com-сервера
8 сообщений из 8, страница 1 из 1
Вернуть массив из com-сервера
    #34608398
вобщем не сам массив, а объект со свойством типа "массив" конечно же....
закралось у меня сомнение, а такое вообще возможно? а то может я зря мучаюсь?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
PUBLIC ox
ox = CreateObject("prodazi")
LOCAL loObject AS Custom
loObject = ox.sel_values()
* функция VARTYPE(loObject.aArray[ 1 ])  возвращает L, значит всё-таки чего-то возвращается,
* а вот перебор элементов FOR i =  1  TO ALEN(m.loObject.aArray) не возможен: фокс ругается на 
* размерность массива

метод sel_values() на com-сервере
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Local loCustom as Custom 
loCustom = CreateObject('Custom')
loCustom.AddProperty("aArray[1,1]")
SELECT *;
 FROM (m.tcTabName);
 WHERE INTO ARRAY loCustom.aArray
RETURN m.loCustom

вот я никак и не пойму, а чего в результате всех этих фрикций мне возвращает com-сервер :))
...
Рейтинг: 0 / 0
Вернуть массив из com-сервера
    #34608817
i__one
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автора вот перебор элементов FOR i = 1 TO ALEN(m.loObject.aArray) не возможен: фокс ругается на

если масив не одномерный, то ошибка вполне объяснима. Вы выходите за рамки масива. Т.е. ALEN возвращаем общее число элементов. Т.е. если масив двумерный, то нужно:
FOR i = 1 TO ALEN(m.loObject.aArray)/2

и т.д.

может в этом дело :)

P.S. лучше перебздеть чем не добздеть :)
...
Рейтинг: 0 / 0
Вернуть массив из com-сервера
    #34609211
вот хотел опустить конструкцию FOR...ENDFOR, зная, что кто-то придерётся именно к ней, хотя написана она здесь образно и специально закомментирована... всё же думаю, что людям, которые могут посоветовать, что-нибудь дельное по теме "возвращение массива из com-сервера клиенту" и так понятно, как надо перебирать элементы массива.....

а основной вопрос темы не то как перебирать элементы массива, а собсно вообще возможно вернуть массив из com-сервера? (вобщем-то делаю по аналогии возращения массива из функции)
...
Рейтинг: 0 / 0
Вернуть массив из com-сервера
    #34610105
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КонецЦикла
* функция VARTYPE(loObject.aArray[1]) возвращает L, значит всё-таки чего-то возвращается,

L - означает, что переменная логического типа. Применительно к массивам, это происходит, если массив только был создан, но еще не заполнен. Может, по команде Select просто ничего не было выбрано?

КонецЦикла
* а вот перебор элементов FOR i = 1 TO ALEN(m.loObject.aArray) не возможен: фокс ругается на
* размерность массива

Как ругается-то? Каким словами?

КонецЦиклавот я никак и не пойму, а чего в результате всех этих фрикций мне возвращает com-сервер :))
А в принципе, какой-либо объект из Com-сервера можно вернуть? Ну, например, тот же Custom с кучей свойств? Пусть эти свойства НЕ массивы.

В этом же примере можно, например, прочитать

Код: plaintext
?m.loObject.name

Что-то у меня сомнения, что такое возможно в принципе...


Кроме всего прочего, я не понимаю зачем это все надо? Ведь можно обратится напрямую к свойствам Com-сервера и прочитать все что надо:

метод sel_values() на com-сервере

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
* Создать свойство самого Com-сервера
This.AddProperty("aArray[1,1]")

SELECT *;
 FROM (m.tcTabName);
 WHERE INTO ARRAY This.aArray

RETURN _TALLY

Обращение к Com-серверу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
PUBLIC ox
ox = CreateObject("prodazi")
if ox.sel_values()> 0 
	FOR m.lnI =  1  TO ALEN(m.ox.aArray)
		?m.ox.aArray[m.lnI]
	ENDFOR
endif
...
Рейтинг: 0 / 0
Вернуть массив из com-сервера
    #34610221
разобрался, действительно селект просто ничего не отбирал...
но ругается вот на что
alen(loObject.aArray)

Function argument value,type,or count is invalid

не пойму, чем функция alen() не нравиться фоксу (VFP6)

а вот обратиться к элементам по индексам даёт, т.е. loObject.aArray(1,1), loObject.aArray(1,2) заполнены нужными значениями....

ЗЫ. действительно, сделаю-ка напрямую..... Спасибо за наводку.
...
Рейтинг: 0 / 0
Вернуть массив из com-сервера
    #34610289
2 ВладимирМ

сделал так
Код: plaintext
1.
2.
3.
4.
5.
if ox.sel_values()> 0 
    FOR m.lnI =  1  TO ALEN(m.ox.aArray)
        ?m.ox.aArray[m.lnI]
    ENDFOR
endif

опять сначала 6-ой фокс ругается на ALEN(m.ox.aArray)
Function argument value,type,or count is invalid

ставлю FOR m.lnI = 1 TO 10
ругается уже по-другому
OLE error code.....:Неизвестное имя
...
Рейтинг: 0 / 0
Вернуть массив из com-сервера
    #34610337
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КонецЦикларугается уже по-другому
OLE error code.....:Неизвестное имя
Так свойство-то создал? Точнее, существует ли это свойство в момент обращения к нему?

Думаю, здесь проблема в том, что Com-объект - это все-таки внешний объект. А функция ALEN() предполагает работу с некоторой внутренней структурой именно среды FoxPro.

Т.е. FoxPro просто не может "перевести" структуру внешнего объекта под свои потребности. С его точки зрения, это действительно некорректный аргумент функции. Т.е. аргумент, неизвестной структуры. Ведь структура известна только самому объекту, но не среде FoxPro.

Хотя, это только мои предположения. Точно не уверен...
...
Рейтинг: 0 / 0
Вернуть массив из com-сервера
    #34610543
с "Неизвестным именем" похоже вот в чём дело:

при таком создании нового свойства This.AddProperty("aArray[1,1]")
появляется OLE error code.....:Неизвестное имя

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


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