Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Можно ли создать массив в вызываемой процедуре,  [new]
glamis
Member

Откуда:
Сообщений: 642
Очень хочется сделать вот так:
ss=tt()
DISPLAY MEMORY LIKE ss

PROCEDURE tt
DIMENSION gg(5,3)
gg=''
RETURN @gg


Но не разрешает.
Тема навеяна http://forum.foxclub.ru/read.php?29,167116
и
http://forum.foxclub.ru/read.php?32,177198,234888#msg-234888

Размерность массива заранее не определена, создается по Copy to array.
Курсор создается в процедуре и нужен только для создания этого массива. Наиболее логично создать массив в процедуре и закрыть этот курсор.
3 фев 21, 15:52    [22274043]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли создать массив в вызываемой процедуре,  [new]
bguo_reminder
Member

Откуда:
Сообщений: 32
Напишите вопрос нормально/подробно, а то ss,tt,gg
3 фев 21, 16:18    [22274082]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли создать массив в вызываемой процедуре,  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1595
glamis,
массив можно создать в вызывающем процедуру коде. Что все и делают.

DIMENSION gg(1)
ss=tt()
DISPLAY MEMORY LIKE ss

PROCEDURE tt
DIMENSION gg(5,3)
gg=''
RETURN @gg
3 фев 21, 16:56    [22274132]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли создать массив в вызываемой процедуре,  [new]
glamis
Member

Откуда:
Сообщений: 642
Sergey Sizov,
Проблема в том, что Copy to если массив определен, то копирует столько строк сколько определено. Она не расширяет массив.
CLOSE DATABASES 
USE \\servdos\Temp\debugstxt\R002774226_000001.dbf
DIMENSION gg(1,1)
ss=tt()
?ALEN(gg,1), ALEN(gg,2)

PROCEDURE tt
COPY TO ARRAY gg
gg=''
RETURN @gg


возвращает 1 1

Хотя...
PROCEDURE tt
COPY TO ARRAY ss
ACOPY(ss,gg)
RETURN @gg


возвращает номально: 22004 20

Вопрос снят))
Спасибо
3 фев 21, 17:13    [22274150]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли создать массив в вызываемой процедуре,  [new]
glamis
Member

Откуда:
Сообщений: 642
При таком решении и Return не нужен.
3 фев 21, 17:21    [22274165]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли создать массив в вызываемой процедуре,  [new]
AK-Shah
Member

Откуда:
Сообщений: 155
Можно передавать не массив, а коллекцию. По ней есть поиск (кажется метод GetKey() ), вставка и удаление проще/понятнее. Но смотря для чего...
5 июн 21, 09:46    [22331704]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить