powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / получение массива из функции
4 сообщений из 4, страница 1 из 1
получение массива из функции
    #33219646
LightWarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Результатом работы функции является массив значений
как изолировать функцию? Я подразумеваю то чтобы функция не зависела от внешних имен переменных. Кто и как решал подобную проблему?
...
Рейтинг: 0 / 0
получение массива из функции
    #33219666
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Передавай в ф-цию ссылку на массив.
...
Рейтинг: 0 / 0
получение массива из функции
    #33219951
LightWarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AleksMedПередавай в ф-цию ссылку на массив.
то есть функция должна знать или определять размер массива и т.д. и вызывая эту функцию придется представлять как она работает. Это неудобно. Но похоже это единственный более-менее вразумительный способ и фоксе
...
Рейтинг: 0 / 0
получение массива из функции
    #33220108
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стандартные массивы не очень удобны, но их можно обернуть в класс и тогда они приобретают все преимущества обычных типов:

Код: 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.
local loArray1
clear 
loArray1 = create_array()
? "после создания"
for lnItem =  1  to loArray1.count
	? loArray1.item[m.lnItem]
endfor

loArray1 = modify_array(loArray1)
? "после модификации"
for lnItem =  1  to loArray1.count
	? loArray1.item[m.lnItem]
endfor
return

function create_array
	local lovector
	lovector = createobject('vector')
	lovector.add( 220 )
	lovector.add( 120 )
	lovector.add( 10 )
	return m.lovector
endfunc
function modify_array
	lparameters lovector
	lovector.remove( 1 )
	return m.lovector
endfunc

define class vector as custom

	*--	число элементов
	count =  0 
	*--	емкость 
	capacity =  0 
	*-- элементы
	dimension item[ 1 ]

	*--	инициализировать вектор размеров tncount и со значением по умолчанию tudefaultvalue
	function init
		lparameters tncount, tudefaultvalue
		if type('m.tncount') == 'N'
			local loldCompatible
			loldCompatible = set('compatible')
			set compatible off
			with this
				store m.tncount to .count, .capacity				
				dimension .item[.capacity]
				.item = m.tudefaultvalue
			endwith
			set compatible &loldCompatible.
		endif
	endfunc
	
	*--	очистить, без освобождения памяти
	procedure clear
		with this
			.count =  0 
		endwith
	endproc

	*--	добавить элемент в конец массива
	procedure add
		lparameters tuElement
		local loldCompatible
		loldCompatible = set('compatible')
		set compatible off
		with this
			if .count >= .capacity
				.capacity =  2  * iif(empty(.capacity),  8 , .capacity)
				dimension .item[.capacity]
			endif
			.item(.count +  1 ) = m.tuElement
			.count = .count +  1 
		endwith
		set compatible &loldCompatible.
	endproc

	*-- удалить элемент
	procedure remove
		lparameters tnindex
		with this
			if between(m.tnindex,  1 , .count)
				adel(.item, m.tnindex)
				.count = .count -  1  
			endif
		endwith
	endproc
enddefine
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / получение массива из функции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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