FPD 2.6, есть таблица первое поле-код, второе имя текстового файла в который
занесён этот код, по клавише F3, открывается этот файл(он очень большой по
размеру..) для просмотра (modify program имя файла), но в этом открываемом
файле очень много кодов и их описание, нельзя ли сделать так, чтоб курсор
после открытия файла, вставал сразу же на этот код..,
29 Янв 2007г. (Понедельник) S_Stepanov писал All:
> ...
SS> FPD 2.6, есть таблица первое поле-код, второе имя текстового файла в
SS> который занесён этот код, по клавише F3, открывается этот файл(он очень
SS> большой по размеру..) для просмотра (modify program имя файла), но в этом
SS> открываемом файле очень много кодов и их описание, нельзя ли сделать так,
SS> чтоб курсор после открытия файла, вставал сразу же на этот код..,
> ...
Хех, давно это было, но попробую напрячь мозговую мышцу...
В команде modify file\program есть опция range, позволяющая открыть текстовый
файл, выделив кусок текста от символа в позиции <expN2>, до символа в позиции
<expN3>. Если <expN2> = <expN3>, текст не выделяется, и курсор помещается в
позицию <expN2>.
RANGE <expN2>, <expN3>
RANGE lets you open a text editing window with a range of
characters selected. Characters are selected starting at
the position specified with <expN2> up to (but not
including) the <expN3>rd character. If <expN2> is equal
to <expN3>, no characters are selected, and the cursor is
placed at the position specified with <expN2>.
По-моему, это то, что тебе нужно. Дело за немногим - вычислить значения этих
<expN2>, <expN3>
WBR&W, Igor Shanuk
IS> Hi, S_Stepanov!
IS> 29 Янв 2007г. (Понедельник) S_Stepanov писал All:
>> ...
SS>> FPD 2.6, есть таблица первое поле-код, второе имя текстового файла в
SS>> который занесён этот код, по клавише F3, открывается этот файл(он очень
SS>> большой по размеру..) для просмотра (modify program имя файла), но в
SS>> этом открываемом файле очень много кодов и их описание, нельзя ли
SS>> сделать так, чтоб курсор после открытия файла, вставал сразу же на этот
SS>> код..,
>> ...
IS> Хех, давно это было, но попробую напрячь мозговую мышцу...
IS> В команде modify file\program есть опция range, позволяющая открыть
IS> текстовый файл, выделив кусок текста от символа в позиции <expN2>, до
IS> символа в позиции
<expN3>> . Если <expN2> = <expN3>, текст не выделяется, и курсор помещается в
IS> позицию <expN2>.
IS> RANGE <expN2>, <expN3>
IS> RANGE lets you open a text editing window with a range of
IS> characters selected. Characters are selected starting at
IS> the position specified with <expN2> up to (but not
IS> including) the <expN3>rd character. If <expN2> is equal
IS> to <expN3>, no characters are selected, and the cursor is
IS> placed at the position specified with <expN2>.
IS> По-моему, это то, что тебе нужно. Дело за немногим - вычислить значения
IS> этих
<expN2>> , <expN3>
Да, вот это и немногое, вызывает много трудностей, если я и открою этот файл
fopen(), но есть ли такая же низкоуровневая функция поиска... и самое главное,
что передавать в этот ранг для modify command...
01 Feb 2007 05:13, S_Stepanov wrote to Igor Shanuk:
SS> если я и открою этот файл fopen(), но есть ли такая же низкоуровневая
SS> функция поиска...
1. в цикле до feof() читаешь через fread() или fgets()
2. через at() анализируешь считанное
_len=0
do while .not. feof(_file)
_line = fgets(_file)
_poz = at('что_надо',_line)
if _poz = 0
_len = _len+len(_line)
else
_len = _len+_poz
exit
endif
enddo
Alexandr
SS> From: "S_Stepanov" <mi...@kraspost.ru>
SS> Hi All,
SS> FPD 2.6, есть таблица первое поле-код, второе имя текстового файла в
SS> который занесён этот код, по клавише F3, открывается этот файл(он очень
SS> большой по размеру..) для просмотра (modify program имя файла), но в этом
SS> открываемом файле очень много кодов и их описание, нельзя ли сделать так,
SS> чтоб курсор после открытия файла, вставал сразу же на этот код..,
================
Как вариант
CREATE CURSOR Contents (Content M)
APPEND BLANK
APPEND MEMO Contents.Content FROM MyFile.txt
Содержимое мемо-поля, с точки зрения FoxPro, это обычная символьная строка.
Правда, очень большая. Т.е. в ней можно выполнять поиск обычными командами
строкового поиска AT().
Далее так же как и с Modify Program
MODIFY MEMO Contents.Content RANGE <expN1>, <expN2>
При желании, можно сбросить внесенные изменения обратно в файл командой
COPY MEMO Contents.Content TO MyFile.txt
В принципе, можно использовать и Modify Program. Просто через Memo-поля
выполняя поиск нужных позиций в текстовом файле. Это удобнее чем построчное
чтение через FOPEN(), FGETS().
01 Фев 2007г. (Четверг) S_Stepanov писал Igor Shanuk:
> ...
>>> ...
SS>>> FPD 2.6, есть таблица первое поле-код, второе имя текстового файла в
SS>>> который занесён этот код, по клавише F3, открывается этот файл(он очень
SS>>> большой по размеру..) для просмотра (modify program имя файла), но в
SS>>> этом открываемом файле очень много кодов и их описание, нельзя ли
SS>>> сделать так, чтоб курсор после открытия файла, вставал сразу же на этот
SS>>> код..,
>>> ...
IS>> По-моему, это то, что тебе нужно. Дело за немногим - вычислить значения
IS>> этих <expN2>> , <expN3>
SS> Да, вот это и немногое, вызывает много трудностей, если я и открою этот
SS> файл fopen(),
Хм... Если ты не сможешь открыть файл функцией fopen(), то и команда modify
file скорее всего тоже не сможет его открыть.
SS> но есть ли такая же низкоуровневая функция поиска...
На то она и низкоуровневая работа с файлом, что оперируя довольно ограниченым
набором соответствующих функций можно делать все, что захочешь. Например,
написать свою функцию поиска нужного значения в ASCII-файле. Скажем так
- читаешь файл построчно функцией fgets() пока файл не кончится
- в каждой строке ищешь нужное тебе значение
- если нашел - пересчитываешь номер первого символа в строке в значение <expN2>
которое является так же и значением <expN3> и поиск заканчиваешь.
SS> и самое
SS> главное, что передавать в этот ранг для modify command...
Позицию начала и конца выделенного блока текста. В конце-концов, открой
какой-нибудь файл из командного окна, да поэкспериментируй пару раз.
WBR&W, Igor Shanuk