Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
Нужно сделать что-то вроде DIMENSION array(5,5) DO FORM form1 WITH array TO array Как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2003, 20:43 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
Дык вроде так все и работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 09:31 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
Так не рабатаєт :( В Init form1 пишу Код: plaintext 1. 2. В UNLOAD'е Код: plaintext 1. 2. 3. В форме из которой вызывал form1 Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 12:19 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
Вернее так Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 12:46 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. в форме Код: plaintext myform.Init Код: plaintext 1. myform.Unload Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 12:50 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
Ну ModifiedArray или нет, это в принципе по барабану. PS у меня фокс 8-й ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 12:53 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
А у меня VFP7 Если написать: DO FORM myform WITH myarray TO myarray ? alen(myarray)&& Возвращает длину старого массива, хотя в новой форме я её уже поменял. DO FORM myform WITH myarray TO ModifiedArray ? ModifiedArray(2,2) &&Говорит, что ModifiedArray.prg не существует DO FORM myform WITH myarray TO ModifiedArray Dimension ModifiedArray(10,5) ? ModifiedArray(2,2) &&Возвращает .F. Такие вот приколы. Думаю будет проще сделать PUBLIC myarray а так не хотелось этого делать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 13:12 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
Да, я глянул в 5-м и 7-м, действительно как параметр массив не воспринимается, а вот возвращается из формы нормально. > Думаю будет проще сделать PUBLIC myarray В принципе достаточно PRIVATE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 13:25 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
> а вот возвращается из формы нормально это уже интересно, как? form1.Unload Код: plaintext 1. 2. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 13:48 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
А если RETURN @y? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 13:57 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
Тогда Data type mismatch ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 14:03 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
У меня VFP6 и лично я передавал в форму не сам массив, а имя массива DIMENSION MyArray(2,2) DO FORM MyForm WITH "MyArray" Соответсвенно в форме делается пропертя, которая будет хранить имя массива, например ArrayName. Тогда Init-формы выглядит так: LPARAMETERS tcArrayName ThisForm.ArrayName=m.tcArrayName В пределах формы я это массив вообще не трогаю. А вот в методе UNLOAD (ну или в любом методе непосредственно предшествующем выгрузке) выполняю нужную модификацию массива Код: plaintext 1. 2. 3. 4. Фактически, это то же самое, что работа с PUBLIC или PRIVATE массивом. В данном случае он и должен иметь такую область видимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 14:22 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
В этом массиве у меня список из 3 колонок, который я отображаю в листбоксе. Листбокс я потом редактирую (добавляю/удаляю строки). Надо бы паралельно править и массив. Я шото не понял как использовоть функции ADEL и AINS. Как добавить строчку в массив например, под номером 5 и как удалить например 2? Как быть с перенумерацией строк, надо вручную? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 15:10 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
2lnu > ? alen(array) && возвратит 50, а не 25 (хотя первые 25 будут = 1) Возможно, это я не проверял. > Я шото не понял как использовоть функции ADEL и AINS. Эти функции не изменяют размерность массива. ADEL() удаляет строку, сдвигает строки идущие за ней и помещает в последнюю строку .F.. AINS() добавляет новую строку, заполненную .F., и сдвигает остальные строки, последняя пропадает. Соответственно и со столбцами. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 15:30 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
Главное правило, при работе с функциями типа ADEL, AINS, ACOPY и т.п. Никакие функции по работе с массивом не изменяют размерности массива Единственная функция, изменяющая размерность массива - это DIMENSION (DECLARE). Если массив существует, то эта функция просто изменит его размерность, не изменяя области видимости (LOCAL, PUBLIC, PRIVATE). Если не существует, то он будет создан с областью видимости PRIVATE. ADEL - указынный элемент (или группа элементов) принимают значени .F. и перемещаются в конец массива AINS - в указанное место вставляется элемент (или группа элементов) со значением .F., а из конца массива удаляется столько элементов сколько было вставлено по AINS() Например, есть массив DIMENSION MyArray(10,5) * Удалить строку №2 =ADEL(MyArray,2) * И изменить размерность массива DIMENSION MyArray(9,5) * Прежде чем вставить строку надо изменить размерность массива DIMENSION MyArray(10,5) * Теперь сосбственно вставка строки №5 =AINS(MyArray,5) Что подразумевается под словами "перенумерация строк"? Изменить порядок следования строк? Ну допустим, надо поменять местами строки 2 и 5 в данном массиве: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Со столбцами все значительно сложнее и муторнее. Но тебе это и не надо. При работе с массивом внутри формы, лучше создать пропертю типа массив и с ней и работать. В качестве источника данных для ListBox можно прямо так и указывать RowSource=ThisForm.aMyArray ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 15:44 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
Что же, спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 15:46 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
> Что подразумевается под словами "перенумерация строк"? В листбоксе у меня MoverBar=.T.(и по этому мой массив не может быть как RowSource). А как отследить, что пользователь переместил строку номер 5 на вторую позицию? InteractiveChange что-ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 16:04 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 16:12 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
Нет такого (vfp7) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 16:26 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
Ну тогда.. Тебе именно отследить или достаточно просто просмотреть полученный вариант? В последнем случае используй свойство List. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 16:37 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
Проблемка вот в чем. В листбоксе есть ограничение на длину строки (<255), чтоб обойти это ограничение, я решил держать паралельно массив (где нет таких ограничений). Последовательность строк листбокса и массива должна совпадать. Ну и все, что делается с листбоксом должно произойти с массивом. Перемещение отдельной строки в листбоксе (с помощью moverbar'а), должно вызвать перемещение и в массиве. Как - мне не извесно. Перемещение вызывает событие InteractiveChange, но так же не известно, перемищение ли это, или только клик. Если перемещение, то откуда куда (ведь тоже надо сделать и с массивом)? А при каждом InteractiveChange сравнивать список и массив не наилучшая идея. Как тут поступить - не представляю :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 17:19 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
Убивайте, но я не понимаю зачем нужен массив и тем более для листбокса... Все списки передаю временной таблицей (курсором), а в форму ее имя... Проще не бывает!!!!!!!!! И вообще большое количество параметров так легче передавать и таскать по всей программе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2003, 06:18 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
2lnu А зачем "двигать" массив при каждом перемещении? Может просто проводить всю обработку при закрытии формы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2003, 09:21 |
|
||
|
Передать форме массив...
|
|||
|---|---|---|---|
|
#18+
Кажется решил проблему. Листбокс у меня из 3 колонок, а массив теперь из 4. И в эту четвёртую колонку я записываю ListItemId. Если шото удаляєм из листа, тоже удаляєтся из массива ADEL(ar,ASCAN(ar,thisform.list1.IndexToItemId(thisform.list1.ListIndex))/4). Ну и при закрытии формы "двигаю" массив ;) Да, кстати, массив я читаю из файла типа этого: |1|,|2|,|3| |4|,|5|,|6| ... Я ищу 2, 4, 6 символ "|" (AT), запихиваю туда то что между ними, и обрезаю строчку до первого CHR(13) и т.д. Нормальный ли это алгоритм, или есть есть какой-то более быстрый? На 1500 строк у меня уходит около 15с. (Duron800) Когда не обрезал строчку (искал 1, 2 символ"|", потом 3, 4; 5, 6; 7,8...) на это дело у меня уходило около 5 мин. Возможно-ли сделать это ещё быстрее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2003, 13:31 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32363153&tid=1597359]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
136ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 482ms |

| 0 / 0 |
