powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Memo
25 сообщений из 50, страница 2 из 2
Memo
    #38427196
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Согласен, полностью согласен! Я читаю попутно матчасть, какие-то старые книженции есть под рукой да инет на трубке...А задача такая:
1. Поступаемый материал в текстовом виде закинуть в таблицу (содержимое текстовых файлов четкой структуры не имеет)
2. Содержимое необходимо раскидать по полям
3. Вести накопление этого материала
4. Вероятно появится необходимость поиска

Это то, что необходимо сделать в первую очередь, дальше по мере необходимости...
...
Рейтинг: 0 / 0
Memo
    #38427204
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так читай интенсивней или в форум работа и там тебе все сделают за умеренное вознаграждение.
...
Рейтинг: 0 / 0
Memo
    #38427206
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это понятно, просто интересно самому сделать...
...
Рейтинг: 0 / 0
Memo
    #38427494
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот этоgrommilitaryсодержимое текстовых файлов четкой структуры не имеетвот с этим
grommilitaryСодержимое необходимо раскидать по полямкак стыкуется? чёткий алгоритм "раскидывания" (в зависимости от содержимого) есть?
...
Рейтинг: 0 / 0
Memo
    #38427671
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirвот этоgrommilitaryсодержимое текстовых файлов четкой структуры не имеетвот с этим
grommilitaryСодержимое необходимо раскидать по полямкак стыкуется? чёткий алгоритм "раскидывания" (в зависимости от содержимого) есть?

chr(13) + chr(10) :)
...
Рейтинг: 0 / 0
Memo
    #38427721
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да действительно, единственный признак это окончание строки,т.е. целиком эти строки я помещаю в таблицу,а дальше необходимо уже определенные подстроки из этих строк раскидать по полям другой таблицы...
...
Рейтинг: 0 / 0
Memo
    #38428018
otorva1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grommilitary,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
PRIVATE I, N

* открываем таблицу со списком файлов
USE ftmp IN 0

* создаем таблицу для текстовых файлов в построчном представлении
SELECT 0
CREATE TABLE ltmp (fnum N(5), lnum N(5), fline C(254))

* заносим содержимое первого файла из таблицы файлов
* в таблицу с построчным представлением
* fnum-номер файла, lnum-номер строки в файле
N = memlines(ftmp.fcontent)
FOR I = 1 TO N
  APPEND BLANK
  REPLACE fnum WITH 1, ;
          lnum WITH I, ;
          fline WITH mline(ftmp.fcontent,I)
ENDFOR

* закрываем таблицы
USE IN ftmp
USE IN ltmp
...
Рейтинг: 0 / 0
Memo
    #38428070
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасиб тебе!у меня затык вот в чем.в таблице мемополе в нем записи.я заношу в массив по alines() строки из содержимого мемополя,далее подсчитываю кол-во строк в этом массиве по alen() и по циклу эти строки вношу в таблицу.не могу сообразить каким образом закинуть в массив все строки из всех записей мемополя.советовали через scan, не вшарю куда его здесь воткнуть?хелп
...
Рейтинг: 0 / 0
Memo
    #38428098
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grommilitaryв таблице мемополе в нем записинаоборот
в таблице записи, в каждой записи - мемо-поле
grommilitaryя заношу в массив по alines() строки из содержимого мемополяиз одной записи, значит...
grommilitaryне могу сообразить каким образом закинуть в массив все строки из всех записей мемополя.советовали через scan, не вшарю куда его здесь воткнуть?"здесь" - это где? показывайте свой код для одного поля, поможем.
...
Рейтинг: 0 / 0
Memo
    #38428100
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirдля одного полятьфу, для одной записи
...
Рейтинг: 0 / 0
Memo
    #38428147
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
create ftmp (fname c(30), fcontent M, ftemp c(254))
sele ftmp
=alines (aMemoArray, fcontent)
for i=1 to alen (aMemoArray,1)
insert into ftmp(ftemp) values (aMemoArray(i))
endfor
use in ftmp
...
Рейтинг: 0 / 0
Memo
    #38428157
otorva1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grommilitaryспасиб тебе!у меня затык вот в чем.в таблице мемополе в нем записи.я заношу в массив по alines() строки из содержимого мемополя,далее подсчитываю кол-во строк в этом массиве по alen() и по циклу эти строки вношу в таблицу.не могу сообразить каким образом закинуть в массив все строки из всех записей мемополя.советовали через scan, не вшарю куда его здесь воткнуть?хелп

В моем коде показано, как обработать ОДНО мемо-поле, для этого никакие SCAN не нужны. Если тебе нужно заполнить таблицу с построчным представлением файлов содержимых ВСЕХ мемо-полей, нужно проделать SCAN по таблице файлов, поместив вышеупомянутый код внутрь SCAN .. ENDSCAN и соответствующим образом его изменить для правильной нумерации файлов
...
Рейтинг: 0 / 0
Memo
    #38428186
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я и ставил скан на вышеприведенный код,только чет нет нужного результата.без скана в работу берется последняя запись,со скан-первая...
...
Рейтинг: 0 / 0
Memo
    #38428264
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
otorva1,

у меня код работает также только я в первоначальную таблицу результат сунул, а как для всех теперь сделать?
...
Рейтинг: 0 / 0
Memo
    #38428274
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я выше свой код привел,подскажите как для него скан верно сделать..
...
Рейтинг: 0 / 0
Memo
    #38428323
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grommilitaryя выше свой код привел,подскажите как для него скан верно сделать..тот код читает запись из массива и пишет данные в таблицу, а вы говорили о коде, делающем прямо противоположное - читающем запись из таблицы и раскидывающем её построчно в массив
приводите свой код, делающий это - поможем, а пока лично у меня создаётся впечатление, что вы вообще не понимаете что выложенный вами код делает...
...
Рейтинг: 0 / 0
Memo
    #38428480
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grommilitarycreate ftmp (fname c(30), fcontent M, ftemp c(254))
sele ftmp
=alines (aMemoArray, fcontent)
for i=1 to alen (aMemoArray,1)
insert into ftmp(ftemp) values (aMemoArray(i))
endfor
use in ftmp

это и есть мой код, он выполняет то, что нужно,только для одного мемо,а необходимо сделать для всех мемо,находящихся в таблице и записать в другое поле или таблицу,в данном случае строки мемополя заносятся в массив, а оттуда в поле ftemp
...
Рейтинг: 0 / 0
Memo
    #38428491
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grommilitarygrommilitarycreate ftmp (fname c(30), fcontent M, ftemp c(254))
sele ftmp
=alines (aMemoArray, fcontent)
for i=1 to alen (aMemoArray,1)
insert into ftmp(ftemp) values (aMemoArray(i))
endfor
use in ftmp

это и есть мой код, он выполняет то, что нужно,только для одного мемо,а необходимо сделать для всех мемо,находящихся в таблице и записать в другое поле или таблицу,в данном случае строки мемополя заносятся в массив, а оттуда в поле ftemp

Ну да, создаешь пустую таблицу, читаешь якобы memo_поле и в эту же таблицу куча инсертов и все это в цикле scan.
...
Рейтинг: 0 / 0
Memo
    #38428495
otorva1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grommilitary, вот код, который собирает содержимое текстовых файлов данной папки в мемо-поле одной таблицы, а затем переписывает текст построчно в другую таблицу
Код: vbnet
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.
PRIVATE N, I, dflt_dir, fnm

dflt_dir = 'C:\AAA\'

* заносим инф. о тестовых файлах заданной папки в массив
DIMENSION dir_arr[1]
N = adir(dir_arr, dflt_dir + '*.TXT')
IF N = 0
  RETURN
ENDIF

* создаем таблицу для имен и содержимого файлов
SELECT 0
CREATE TABLE ftmp (fnum N(5), fname C(254), fcontent M)

* заносим инф. о файлах из массива в таблицу
FOR I = 1 TO N
  fnm = m.dflt_dir + dir_arr[I,1]
  APPEND BLANK
  REPLACE fname WITH m.fnm, ;
          fnum WITH I
  APPEND MEMO fcontent FROM (m.fnm) OVERWRITE
ENDFOR

* создаем таблицу для текстовых файлов в построчном представлении
SELECT 0
CREATE TABLE ltmp (fnum N(5), lnum N(5), fline C(254))

* заносим содержимое первого файла из таблицы файлов
* в таблицу с построчным представлением
* fnum-номер файла, lnum-номер строки в файле
SELECT ftmp
GO TOP
SCAN
  SELECT ltmp
  N = memlines(ftmp.fcontent)
  FOR I = 1 TO N
    APPEND BLANK
    REPLACE fnum WITH ftmp.fnum, ;
            lnum WITH I, ;
            fline WITH mline(ftmp.fcontent,I)
  ENDFOR
ENDSCAN

* закрываем таблицы
USE IN ftmp
USE IN ltmp


...
Рейтинг: 0 / 0
Memo
    #38428513
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо! у меня все также почти в коде,только единственное,что по mline() из мемополя будут выдергиваться строки как я понимаю без возможности указать разделитель,а по aline() у меня получается раскидать построчно в таблицу по признаку конца строки и переходу на след. или может в вашем примере это возможно?
...
Рейтинг: 0 / 0
Memo
    #38428553
otorva1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grommilitaryспасибо! у меня все также почти в коде,только единственное,что по mline() из мемополя будут выдергиваться строки как я понимаю без возможности указать разделитель,а по aline() у меня получается раскидать построчно в таблицу по признаку конца строки и переходу на след. или может в вашем примере это возможно?
Может, и возможно, только зачем? Для извлечения строк из мемо-поля лучше пользоваться функцией, специально для этого предназначенной. Еще лучше извлекать строки для обработки прямо из текстового файла
...
Рейтинг: 0 / 0
Memo
    #38428573
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и кстати по memlines() существенно дольше думает прога...получается если делать по alines() не удасться засунуть в scan..endscan?
...
Рейтинг: 0 / 0
Memo
    #38428602
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grommilitaryпо mline() из мемополя будут выдергиваться строки как я понимаю без возможности указать разделитель,а по aline() у меня получается раскидать построчно в таблицу по признаку конца строки и переходу на след.
решилось через set memowidth to
...
Рейтинг: 0 / 0
Memo
    #38428922
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если исходно речь идет о некоем текстовом файле, то "раскидать" его по записям таблицы можно одной единственной командой вообще без циклов

Код: sql
1.
2.
3.
4.
5.
6.
7.
create cursor Test (f1 C(254))
APPEND FROM MyFile.txt TYPE SDF

* Смотрим, что получилось
select test
go top
browse nowait



Опция SDF говорит о том, что файл надо рассматривать как файл в котором записаны "поля" фиксированной ширины. Т.е. одна строка файла - это одна запись таблицы, а одно "поле" - это столько символов, сколько символов указано в типе поля принимающей таблицы.

Если длина одной строки в текстовом файле может быть больше 254 символов, то достаточно просто создать нужное количество полей в принимающем курсоре

Код: sql
1.
2.
create cursor Test (f1 C(254), f2 c(254), f3 c(254), f4 c(254))
APPEND FROM MyFile.txt TYPE SDF




Если все-таки хочется использовать массив, то есть специальные команды групповой вставки APPEND FROM ARRAY и INSERT INTO ... FROM ARRAY. Единственное условие для вставки именно многих записей заключается в том, что массив должен быть определен как двумерный. А команда ALINES() создает одномерный массив. Но это препятствие легко можно преодолеть просто переопределив массив после его создания

Код: sql
1.
2.
3.
4.
5.
6.
7.
=Alines(aTest, MyTable.MyMemo)
* Делаю массив двумерным, но содержащим только 1 столбец
Dimension aTest(alen(aTest),1)

* Закачка в курсор
create cursor test (f1 C(254))
append from array aTest
...
Рейтинг: 0 / 0
Memo
    #38429254
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо!буду знать
...
Рейтинг: 0 / 0
25 сообщений из 50, страница 2 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Memo
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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