powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / peredaca massiva iz funkzii
22 сообщений из 22, страница 1 из 1
peredaca massiva iz funkzii
    #32129207
azz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vozmogno li peredat iz programmi sozdannij v mej massiv naruju esli do vhoda v programmu razmer massiva bil ne izvesten????? Kak???
...
Рейтинг: 0 / 0
peredaca massiva iz funkzii
    #32129245
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сведению.

Команда DIMENSION (DECLARE) создает новый массив, если к моменту подачи данной команды массив с указанным именем не существовал. Если же к моменту подачи команды DIMENSION массив с указанным именем существовал, то происходит не создание нового массива, а лишь изменение размерности существующего.

procedure P1
DIMENSION test(2)
test='1'
test='2'
LOCAL lnI
FOR lnI=1 TO ALEN(test)
?test[m.lnI]
ENDFOR

do P2

FOR lnI=1 TO ALEN(test)
?test[m.lnI]
ENDFOR

RETURN


PROCEDURE P2
DIMENSION test(2,2)
RETURN
...
Рейтинг: 0 / 0
peredaca massiva iz funkzii
    #32129259
azz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OK Ja OCEN novecok v FP. Kak sdelat tak ctobi izmenenija sdelannie v programme ne ostalis lokalnimi a povlijali na osnovnoj massiv.?

P.S. Ja kstati pischu vam iz Munchena.
U mena tut praktika v firme zanimajuschejsa logistikoj. Oni tut tolko na fox rabotajut.Tak cto esli nikto ne protiv dostovat vas budu mnogo i casto(poka s praktiki ne vigonat)
...
Рейтинг: 0 / 0
peredaca massiva iz funkzii
    #32129274
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ааа ... Понятно.В Германии говорят фокс популярен. Массив все равно передается только по ссылке (то есть @array) , так что они не останутся локальными
...
Рейтинг: 0 / 0
peredaca massiva iz funkzii
    #32129275
azz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JA NACENAJUSCHIJ(CAJNIK!!!!!!!) Kak massiv peredajoatsa po ssilke? Doslovno! Esli konecno est nastroenie.
...
Рейтинг: 0 / 0
peredaca massiva iz funkzii
    #32129304
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда. Если отвечать подробно, то это займет слишком много места. Вкратце, без объяснений. Сделай такой тестовый примерчик:

PROCEDURE Proc1
LOCAL MyArray(1)
?Alen(MyArray)
DO Proc2 WITH @MyArray
?Alen(MyArray)
RETURN

PROCEDURE Proc2
LPARAMETERS taArray
EXTERNAL ARRAY taArray
DIMENSION taArray(2,2)
taArray=1
taArray=2
taArray=3
taArray=4
RETURN

Если есть возможность, то почитай про область видимости переменных (массив - это особый вид переменной) и чем отличается передача параметров по ссылке и по значению.
...
Рейтинг: 0 / 0
peredaca massiva iz funkzii
    #32129307
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот ..., а кто-то еще хвалит данный сайт :) Оказывается здесь не понимают квадратных скобок. Еще раз приведу код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
PROCEDURE Proc1 
LOCAL MyArray( 1 ) 
?Alen(MyArray) 
DO Proc2 WITH @MyArray 
?Alen(MyArray) 
RETURN 

PROCEDURE Proc2 
LPARAMETERS taArray 
EXTERNAL ARRAY taArray 
DIMENSION taArray( 2 , 2 ) 
taArray[ 1 ]= 1  
taArray[ 2 ]= 2  
taArray[ 3 ]= 3  
taArray[ 4 ]= 4  
RETURN 
...
Рейтинг: 0 / 0
peredaca massiva iz funkzii
    #32129315
azz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Spasibo dorogoj drug!
Ja pitajus razobratsa.
Ozodocil nemetskogo kolegu.
On bil straschno gord tem cto peredaval massiv naruju kak stroku komandi o sozdanii massiva i potom vmeste s & vipolnal ee. o external on vrode daje i ne slischal

p.s. a kak s moimi ostalnimi voprosami? Idej net?
...
Рейтинг: 0 / 0
peredaca massiva iz funkzii
    #32129447
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2azz

А ты не мог бы установить поддержку кириллицы, я смутно начинаю понимать твой транслит только после третьего чтения и то не всегда :(
...
Рейтинг: 0 / 0
peredaca massiva iz funkzii
    #32129449
Фотография maloi_alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему, проще будет, если он английский выучит, и научиться HELP'ы буржуйские читать.
...
Рейтинг: 0 / 0
peredaca massiva iz funkzii
    #32129451
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2maloi_alex

Найди в хелпе как получить из строки массив - соглашусь :)
...
Рейтинг: 0 / 0
peredaca massiva iz funkzii
    #32130274
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Найди в хелпе как получить из строки массив

ALINES()

Хотя, по большому счету согласен. Найти что-то в Help если точно не значешь что искать довольно затруднительно.
...
Рейтинг: 0 / 0
peredaca massiva iz funkzii
    #32130284
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ВладимирМ

Спасибо, не знал..
Ну а если из переменной любого типа?

Код: plaintext
1.
2.
3.
local x
x= 0 
..
?x[ 1 ]
...
Рейтинг: 0 / 0
peredaca massiva iz funkzii
    #32130320
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем понял вопрос.

Чтобы разбить нечто на элементы необходимо знать границы элементов. Для символьной строки - это какой-либо символ (например запятая или пробел). А для других типов данных - это что? И как вообще можно не в символьной строке одновременно отобразить несколько элементов?

Т.е. для не символьных строк я не вижу предмета разбиения.

Если речь идет о перекачке данных из таблицы в массив, то есть нексолько команд на эту тему:

SELECT ... FROM ... INTO ARRAY MyArray
COPY TO ARRAY ...
SCATTER TO ...
...
Рейтинг: 0 / 0
peredaca massiva iz funkzii
    #32130340
azz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rec idet o perevedenii svojctva klassa tcFields gde cerez zapatuju ukazani pola tablici v array elementi kotorogo - eti pola. Ja uje napisal. Polzujas sovetom iz etogo foruma i programmami napisannimi do mena sdes.
vot programma:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
*str2arr.prd
* Autor: azz

LPARAMETER laArray, lcFields
EXTERNAL ARRAY laArray
lnFields=occurs( "," , lcFields)+ 1 
DIMENSION laArray(lnFields)

* Die einzelnen Fields in einen Array speichern
for lnI= 1  to lnFields
  if(lnI=lnFields)
    store lcFields to laArray(lnI)
   else
    store substr(lcFields, 1 ,at( "," ,lcFields)- 1 ) to laArray(lnI)
    lcFields=substr(lcFields,at( "," ,lcFields)+ 1 ,len(lcFields))
  endif
endfor


return laArray


A vot cem ja ee testiroval
Код: plaintext
1.
2.
3.
4.
5.
6.
LOCAL MyArray( 1 )
tcFields =  "Field1,Field2,Field3,Field4,Field5" 
do str2arr with MyArray, tcFields
? Alen(MyArray)
FOR EACH cMyVar IN MyArray
? cMyVar 
ENDFOR 


v teste vse rabotaet a v klasse - net
Scheise
...
Рейтинг: 0 / 0
peredaca massiva iz funkzii
    #32130348
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ВладимирМ

Вопрос немного далекий от жизни и сейчас не помню зачем я так мучался. Но вопрос заключался именно в том, чтобы переменную в зависимости от обстоятельств можно было использовать и как скалярную переменную, и как массив. Короче вышло что-то вроде этого:
Код: 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.
LOCAL x
x= 1 
IF !IsArray(@x)
 =ToArray(@x)
ENDIF
?x[ 1 , 1 ]

FUNCTION IsArray
 LPARAMETERS y
 LOCAL Flag
 LOCAL lcOnError
 lcOnError=ON('error')
 ON ERROR Flag=.T.
 =ALEN(y)
 on ERROR &lcOnError
 RETURN !Flag
ENDFUNC 

FUNCTION ToArray
 LPARAMETERS y
 LOCAL Buffer
 Buffer=y
 DIMENSION y[ 1 , 1 ]
 y[ 1 , 1 ]=Buffer
ENDFUNC 
...
Рейтинг: 0 / 0
peredaca massiva iz funkzii
    #32130361
azz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S ujasom osoznaju glavnoe: mne esche ucitsa, ucitsa i ucitsa. Ne pomnu kto skazal.
Diadenki, ne vigonajte mena pojalusta. A ja vas budu sensejami nazivat.

P.S. Vopros o horoschih DOC'ax esche oktualen.

P.P.S. Utrom prosipajus i ponemaju cto v gorode nemci
...
Рейтинг: 0 / 0
peredaca massiva iz funkzii
    #32130425
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NNN

1) Проверка факта существования массив
Код: plaintext
1.
2.
3.
4.
5.
IF TYPE( "x[1 ]")= "U" 
* Массива с имененем x - нет в области видимости или не существует
ELSE
* Есть массив с именем x
ENDIF

2) Если указать имя массива без индекса, то по-умолчанию предполагается, что речь идет о первом элементе массива:
Код: plaintext
1.
2.
3.
4.
DIMENSION x( 2 )
x[ 1 ]= 1 
x[ 2 ]= 2 
?x

Т.е. в данном случае в качестве скаляра может фигурировать первый элемент массива.


azz

Ваша задача решается в одну команду

В синтаксисе VFP6

Код: plaintext
1.
2.
tcFields =  "Field1,Field2,Field3,Field4,Field5" 
?ALINES(MyArray,ChrTran(m.tcFields,  "," , chr( 13 ), .T.))


В более старших версиях VFP в функции ALINES() можно уже явно указать символ разделитель, а в VFP6 в качестве символа разделителя могут выступать только символы Chr(13) и Chr(10) в любых комбинациях, вот и приходится использовать ChrTran() для замены разделителя.

В более ранних версиях функции ALINES() вообще не было.

По поводу документации.

Насколько я знаю, существует только переведенная документация к VFP3 (на русском языке). Полно ссылок в Interenet. Для более поздних версий перевода не было :(
...
Рейтинг: 0 / 0
peredaca massiva iz funkzii
    #32130444
azz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ВладимирМ
Mi visokooplacivaemie v € nemezkie kolegi nahodat tvoj sovet COOL i bilogodorat.
Budisch v Munchene - s mena pivo.
...
Рейтинг: 0 / 0
peredaca massiva iz funkzii
    #32130552
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ВладимирМ

> 1) Проверка факта существования массив

Век живи - век учтись, просто как все гениальное :)

> 2) Если указать имя массива без индекса, то по-умолчанию предполагается, что речь идет о первом элементе массива

Нет, мне нужно было получить именно массив, а первый элемент приведен просто для примера.
...
Рейтинг: 0 / 0
peredaca massiva iz funkzii
    #32130856
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я имел в виду, что если у Вас стоит выбор - в зависимости от некоторого условия определять переменную как массив или как скаляр, то всегда определяете эту переменную как массив.

В этом случае обращение к массиву просто по имени, без указания номера элемента не вызовет ошибки.

В операциях чтения, будет использован первый элемент массива, а в операциях присвоения, присвоение будет осуществлено во всех элементах массива.
...
Рейтинг: 0 / 0
peredaca massiva iz funkzii
    #32131839
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ВладимирМ

> Я имел в виду, что если у Вас стоит выбор - в зависимости от некоторого условия определять переменную как массив или как скаляр, то всегда определяете эту переменную как массив.

В том-то и дело, что передать мне могли что угодно, вот и пришлось выкручиваться.

ЗЫ Еще раз спасибо за советы.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / peredaca massiva iz funkzii
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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