powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / from memo to array
14 сообщений из 14, страница 1 из 1
from memo to array
    #33402931
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хачу усавершенствовать код загрузки значений с мемо полей. Как быстро можно загнать из 2-х мемо полей одной таблы в 2-ый массив?
...
Рейтинг: 0 / 0
from memo to array
    #33402965
karly™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А тебе не приходило в голову, что если копирование мемо-полей в массив в стандарнтых функциях типа Scatter и Copy to Array по умолчанию отключено, то это неспроста? Такая операция может потребовать слишком много памяти. Может лучше пересмотреть алгоритм? Можешь объяснить, зачем ты используешь массивы?
...
Рейтинг: 0 / 0
from memo to array
    #33402973
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
массив я не использую пока. но думал. чтоб в массив загнать значения из 2-х мемо полей и вставить в курсор.
...
Рейтинг: 0 / 0
from memo to array
    #33403101
karly™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А почему сразу в курсор нельзя? Есть же Select SQL, Copy to..., Append from... Масса вариантов.
...
Рейтинг: 0 / 0
from memo to array
    #33403119
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как быстро с мемо вставить в курсор? через aline у меня прописано. может есть что-то еще уникальнее?
...
Рейтинг: 0 / 0
from memo to array
    #33403360
karly™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Опиши задачу (без привязки к командам. Т.е. например "сохраняю пользовательские настройки", или "анализирую текстовый файл")

2. Приведи код, который работает сейчас.
...
Рейтинг: 0 / 0
from memo to array
    #33403390
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
задача такова. нужно загрузить данные из 2-х мемо полей в курсор. как можно более эффективным способом.
в моем коде названия полей и таблиц находяться в массиве и поочередно исполняються:

for rep_memo_zagr = 3 to 4
rep_znach1 = rep_load_array(1,rep_memo_zagr) && название мемо-поля
rep_znach2 = rep_load_array(2,rep_memo_zagr) && название курсора
rep_znach4 = rep_load_array(4,rep_memo_zagr) && название поля курсора

rep_lnRow = ALINES(laLines,&rep_znach1,.t.)
*set step on
if empty(&rep_znach1)
rep_lnRow = 0
endif
if mod(rep_memo_zagr,2) = 0
Go Top In &rep_znach2
endif

FOR rep_lnI=1 TO rep_lnRow

select &rep_znach2
if mod(rep_memo_zagr,2) = 1
append blank
else
if eof() = .t.
append blank
endif
endif

ValLine1 = alltrim(laLines[rep_lnI])

select &rep_znach2
REPLACE &rep_znach4 with ValLine1

if mod(rep_memo_zagr,2) = 0
skip
endif
ENDFOR
endfor
...
Рейтинг: 0 / 0
from memo to array
    #33404234
karly™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. "Загрузить данные из мемо-полей в курсор" - это не задача, а выбранный тобой метод решения. Может быть, задача вообще не требует участия мемо-полей и курсора.

2. Как данные попадают в мемо-поля? Ты их сам туда предварительно заносишь? Если так, то может быть проще сразу сохранять их в более удобном формате? Например, в отдельных полях.

3. Какие значения могут принимать переменные rep_znach1, rep_znach2, rep_znach3 ? Если это всего два поля и два курсора, может быть проще сделать отдельную обработку для каждого из них, а не наворачивать суперуниверсальное решение для любых полей в любых курсорах?

3. Применение макроподстановки ничем не оправдано. Используй выражения имени. Работать будет быстрее и читать станет удобнее. Потому что Select &rep_znach2 может означать что угодно, например команду Select SQL.

4. У тебя в цикле два раза встречается команда select &rep_znach2, и нигде нет переключения на другую рабочую область. Может быть делать установку рабочей области один раз перед циклом?

5. Вложенные if вполне можно заменить одним if mod(rep_memo_zagr,2) = 1 or EOF()

Думаю, если подсократить код, наконец удасться понять логику работы. Сейчас, честно говоря, ничего не понятно, что имеено ты делаешь.
...
Рейтинг: 0 / 0
from memo to array
    #33404353
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
задача требует. В мемо храняться список значений которые используються для фильтра. и мне нужно из мемо в курсор забросить.
В мемо я их програмно закидываю записывая каждое значение с новой строки chr(13)
rep_znach1, rep_znach2, rep_znach3 - принимают только символьные, эти значения загружаються из массива который объявлен public. и в нем храняться названия полей и таблиц. этот массив я использую для сохранения значений в мемо.

по-поводу переменной я согласен. но факт в том что циклы у меня для разных полей одинаковы и повторно копировать код .... нето. так за счет for автоматом считываеться нужные значения из массива

поповоду переключения на другую область нету я согласен

поповоду if спасибо. даже не подумал вот так.
...
Рейтинг: 0 / 0
from memo to array
    #33404684
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Недоходящий!

- Как проехать в Киев?
- Надо поехать поездом в Ленинград, оттуда на пароходе в Нью-Йорк. Ну а из
Нью-Йорка есть прямой самолёт на Киев.

Тебе не кажется, что вместо того чтобы по простому хранить каждый элемент
фильтра в отдельной записи, ввести также дополнительные поля для группировки
и упорядочения этих "элементов фильтров" ты летишь в Киев через Нью-Йорк?
Мне лично именно так и кажется :)

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
from memo to array
    #33405137
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Igor Korolyov
Это ж какая тогда таблица получиться. В моем случае юзер должен иметь возможность добовлять сколько угодно фильтров для каждого поля которые я пропишу. и как же их в строки заносить. Ведь в мемо заноси - нихачу, любое кол-во строк. а код считывания я изменил. вот новый


**загрузка из мемо
create cursor sav_rep_curs (for_list1 C(40),list1_nomer C(10), for_list2 C(40), list2_nomer C(10))
create cursor rep_vibor_filtr (filtr_user C(200), filtr_admin C(200))
local rep_load_name, c_srv, rep_lnRow , rep_lnI, laLines(1),laLines2(1)

store '' to rep_load_name,rep_znach1 , rep_znach2 , rep_znach3
c_srv = 0
select urep_saves_spis
go top
for rep_nCnt = 1 to THISform.list1.ListCount
IF THISform.list1.Selected(rep_nCnt)
rep_load_name = alltrim(THISform.list1.List(rep_nCnt))
ENDIF
endfor

**поиск и загрузка в курсор
LOCATE FOR ALLTRIM(urep_saves_spis.name_user) = rep_name_user .and. ALLTRIM(urep_saves_spis.name_rep) = rep_load_name
DO WHILE FOUND()
c_srv=RECNO()
if !Found()
exit
else
go c_srv
endif
CONTINUE
ENDDO
*******************
if c_srv > 0
select urep_saves_spis
go c_srv

rep_lnRow = ALINES(laLines,urep_saves_spis.name_list1,.t.)
FOR rep_lnI=1 TO rep_lnRow
ValLine1 = laLines[rep_lnI]
ValLine2=val(ValLine1)
select naimen from urep_filter where nrec=ValLine2 into cursor rep_ttemp
select sav_rep_curs
append blank
REPLACE for_list1 with alltrim(rep_ttemp.naimen), list1_nomer with alltrim(ValLine1)
endfor

go top in sav_rep_curs

rep_lnRow = ALINES(laLines,urep_saves_spis.name_list2,.t.)
FOR rep_lnI=1 TO rep_lnRow
if eof() = .t.
append blank
endif
ValLine1 = laLines[rep_lnI]
ValLine2=val(ValLine1)
select naimen from urep_filter where nrec=ValLine2 into cursor rep_ttemp
select sav_rep_curs
REPLACE for_list2 with alltrim(rep_ttemp.naimen), list2_nomer with alltrim(ValLine1)
skip
endfor

rep_lnRow = ALINES(laLines,urep_saves_spis.filtr_user,.t.)
rep_lnRow2 = ALINES(laLines2,urep_saves_spis.filtr_adm,.t.)
if empty(alltrim(urep_saves_spis.filtr_user))
rep_lnRow= 0
endif
FOR rep_lnI=1 TO rep_lnRow
ValLine1 = alltrim(laLines[rep_lnI])
ValLine2 = alltrim(laLines2[rep_lnI])
select rep_vibor_filtr
append blank
REPLACE filtr_user with ValLine1 , filtr_admin with ValLine2
endfor

endif

thisform.release


может посоветуете внести еще какие нить изменения? меня еще интересует вопрос по locate. Можете предложить что-то еще лучше для поиска записей или этот алгоритм вполне нормальный?
...
Рейтинг: 0 / 0
from memo to array
    #33407266
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Недоходящий!

> Это ж какая тогда таблица получиться.

Нормализованная - а значит с ней гораздо проще и приятнее работать.

> В моем случае юзер должен иметь возможность добовлять сколько угодно
> фильтров для каждого поля которые я пропишу

И что тебе мешает добавить нужное число записей?

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
from memo to array
    #33407645
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Igor Korolyov
просто в одной строчке в мемо все можно занести и не разводить кучу строк. я так думаю
...
Рейтинг: 0 / 0
from memo to array
    #33409942
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Недоходящий!

Конечно, гораздо проще вместо этого писать нехилый код, который из этой
"одной записи" получает в итоге те же самые много строк-записей :)

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / from memo to array
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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