powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Разбивка файла DOS
3 сообщений из 3, страница 1 из 1
Разбивка файла DOS
    #36476629
_Chaynik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня! Уважаемые профессионалы, подскажите, пожалуйста такую вещь. Есть файл дос. Нужно разбить его на страницы. Алгоритм следующий: ищем определенный символ, если находим, возвращаемся на строку назад, ставим символ окончания страницы. Если набралось определенное количество строк, а нужный символ не встретился, тоже ставим символ окончания страницы. И так до конца файла.
Может кто подскажет, как это реализовать?
...
Рейтинг: 0 / 0
Разбивка файла DOS
    #36476977
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так сойдет? Вариант разбивки выберите сами (точнее, удалите лишнее)

Код: plaintext
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.
48.
49.
local lcSourceFile,lnFileHandle1,lnFileHandle2,lnStr,lnPageLenght,lcStr,lcGetStr,lcSymbol
lcStr=''
lnPageLenght= 60  && кол-во строк на странице
lcSymbol='~' && используемый в тексте символ-разделитель страниц
lcSourceFile=getfile('TXT')
if empty(lcSourceFile)
 =messagebox('Не выбран файл', 64 ,' Отмена')
 cancel
endif
lnFileHandle1=fopen(lcSourceFile)
if lnFileHandle1< 0 
 =messagebox('Ошибка открытия исходного файла', 16 ,' Ошибка')
 cancel
endif
lnFileHandle2=fcreate('c:\tmp.txt') && файл, куды пишем
if lnFileHandle2< 0 
 =messagebox('Ошибка открытия файла-приемника', 16 ,' Ошибка')
 =fclose(lnFileHandle1)
 cancel
endif
lnStr= 0 
Вариант= 2  && варианты реализации
do while !feof(lnFileHandle1)
 lcGetStr=fget(lnFileHandle1, 600 )
 lcOffset=at(lcSymbol,lcGetStr)
 if lcOffset> 0  && символ найден
  if Вариант= 1 
   *** Если строка должна дробиться символом-разделителем на  2  
   =fputs(lnFileHandle2,left(lcGetStr,lcOffset- 1 )+chr( 12 ))
   lcStr=substr(lcgetStr,lcOffset+ 1 )
   lnStr=IIF(empty(lcStr), 0 , 1 )
   =IIF(!empty(lcStr),fputs(lnFileHandle2,lcStr),.f.) && остаток строки переносится на след страницу отдельной строкой
   else
   *** перед строкой, содержащей разделитель, нужно вставить разрыв страницы
   =fputs(lnFileHandle2,chr( 12 )+lcGetStr)
   lnStr= 1 
  ***
  endif

  else
  lnStr=lnStr+ 1 
  =fputs(lnFileHandle2,lcGetStr+IIF(lnStr>=lnPageLenght,chr( 12 ),''))
  if lnStr>=lnPageLenght
   lnStr= 0 
  endif
 endif
enddo
=fclose(lnFileHandle1)
=fclose(lnFileHandle2)
=messagebox('Копирование завершено', 64 ,' Ok')
...
Рейтинг: 0 / 0
Разбивка файла DOS
    #36477101
_Chaynik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GermanGM,
Огромное спасибо, то, что надо!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Разбивка файла DOS
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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