powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Довавить данные из одного тестового файла в другой текстовый файл
13 сообщений из 13, страница 1 из 1
Довавить данные из одного тестового файла в другой текстовый файл
    #37677625
izver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

У меня есть два тестовых файла: file1.txt;file2.txt.
file1.txt содержит следующую информацию:
яблоко
помидор
file2.txt содержит следующую информацию:
вишня
виноград

Мне надо в file1.txt добавить информацию из file2.txt. В результате file1.txt содержит следующую информацию:
яблоко
помидор
вишня
виноград

Как это сделать?
Написал
Код: sql
1.
2.
3.
4.
5.
file1= 'file1.txt'
file2= 'file2.txt'
if !empty(file2)
! copy &file1+&file2 &file1 >nul
endif



В результате file1.txt содержит следующую информацию:
вишня
виноград
...
Рейтинг: 0 / 0
Довавить данные из одного тестового файла в другой текстовый файл
    #37677652
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izver,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
file1= 'file1.txt'
file2= 'file2.txt'
file3= 'file3.txt'
if !empty(file2)
! copy &file1+&file2 &file3 >nul
! copy &file3 &file1 >nul
endif
...
Рейтинг: 0 / 0
Довавить данные из одного тестового файла в другой текстовый файл
    #37677665
izver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
file1= 'file1.txt'
file2= 'file2.txt'
file3= 'file3.txt'
copy file (file1) to (file3)
erase (file1)
if !empty(file2)
! copy &file3+&file2 &file1 >nul
endif
erase (file3)


Мне надо в file1.txt добавить информацию из file2.txt. В результате file1.txt содержит следующую информацию:
яблоко
помидор вишня
виноград

Как сделать так, чтобы данные из следующего фала записывались с новой строки?

Есть альтернативный способ решения проблемы?
...
Рейтинг: 0 / 0
Довавить данные из одного тестового файла в другой текстовый файл
    #37677671
izver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКАizver,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
file1= 'file1.txt'
file2= 'file2.txt'
file3= 'file3.txt'
if !empty(file2)
! copy &file1+&file2 &file3 >nul
! copy &file3 &file1 >nul
endif



сделал так, результат не изменился.
...
Рейтинг: 0 / 0
Довавить данные из одного тестового файла в другой текстовый файл
    #37677679
1122112211
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если уж фоксом делаете, так используйте его возможности:
Код: sql
1.
2.
3.
4.
5.
file1= 'file1.txt'
file2= 'file2.txt'
if !empty(file2)
   StrToFile(FileToStr(file2), file1, .T.)
endif
...
Рейтинг: 0 / 0
Довавить данные из одного тестового файла в другой текстовый файл
    #37677685
izver,

Если файлы небольшие по размерам,тогда делаем так
m.text1=FILETOSTR([file1.txt])
m.text2=FILETOSTR([file2.txt])
STRTOFILE(m.text1+CHR(10)+CHR(13)+m.text2,[file3.txt])
...
Рейтинг: 0 / 0
Довавить данные из одного тестового файла в другой текстовый файл
    #37677686
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1122112211, а когда ТСу захочется обработать файлик размером больше 16 мегов, он будет очень удивлён. Сначала. А потом прочитает доку и вспомнит вас тихим недобрым словом...
...
Рейтинг: 0 / 0
Довавить данные из одного тестового файла в другой текстовый файл
    #37677696
1122112211
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir1122112211, а когда ТСу захочется обработать файлик размером больше 16 мегов, он будет очень удивлён. Сначала. А потом прочитает доку и вспомнит вас тихим недобрым словом...
Переспросит если такое понадобится. Пародия на батники, выше предложенная, не менее дырявая.
...
Рейтинг: 0 / 0
Довавить данные из одного тестового файла в другой текстовый файл
    #37677725
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1122112211Пародия на батники, выше предложенная, не менее дырявая.С этим спорить не буду. Она даже более дырявая, т.к. не учитывает, что со времён ДОСа прошло немало лет, и нынче в именах файлов могут встречаться, например, пробелы :)
...
Рейтинг: 0 / 0
Довавить данные из одного тестового файла в другой текстовый файл
    #37677749
1122112211
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если уж делать из фокса эмулятор батников то так:
Код: sql
1.
2.
3.
4.
5.
file1= 'file1.txt'
file2= 'file2.txt'
if !empty(file2)
   !type &file2>>&file1
endif
...
Рейтинг: 0 / 0
Довавить данные из одного тестового файла в другой текстовый файл
    #37702539
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
* можно так:
CREATE TABLE tmp.dbf FREE(F1 M)
SELECT tmp
APPEND MEMO F1 FROM file1.txt OVERWRITE
APPEND MEMO F1 FROM file2.txt
COPY TO file1.txt FIELDS F1
USE
DELETE FILE tmp.dbf
* или так:
x=FOPEN('file1.txt')
y=FOPEN('file2.txt')
IF x>0 AND y>0
=FSEEK(x,0,2)
DO WHILE !FEOF(y)
=FPUTS(y,ALLT(FGETS(x)))
ENDDO
ELSE
* сообщение юзеру, что файл(ы) не открылись
ENDIF
=FCLOSE(x)
=FCLOSE(y)
* вот и все, работает на любой длине файлов
...
Рейтинг: 0 / 0
Довавить данные из одного тестового файла в другой текстовый файл
    #37702599
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonny540* можно так:
CREATE TABLE tmp.dbf FREE(F1 M)
SELECT tmp
APPEND MEMO F1 FROM file1.txt OVERWRITE
APPEND MEMO F1 FROM file2.txt
COPY MEMO F1 TO file1.txt && ПРАВИЛЬНЕЕ БУДЕТ ТАК
USE
DELETE FILE tmp.dbf
* или так:
x=FOPEN('file1.txt')
y=FOPEN('file2.txt')
IF x>0 AND y>0
=FSEEK(x,0,2)
DO WHILE !FEOF(y)
=FPUTS(y,ALLT(FGETS(x)))
ENDDO
ELSE
* сообщение юзеру, что файл(ы) не открылись
ENDIF
=FCLOSE(x)
=FCLOSE(y)
* вот и все, работает на любой длине файлов
...
Рейтинг: 0 / 0
Довавить данные из одного тестового файла в другой текстовый файл
    #37702792
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonny540* вот и все, работает на любой длине файлов
1. Системные ограничения: размер файла не может превышать 2ГБ. В данном случае - размер файла FPT, где хранится содержимое мемо-поля. Т.е. суммарный размер файла при прокачке через мемо-поле не должен превышать 2ГБ

2. У функции FGets() есть второй параметр, определяющий максимальную длину одной строки. По умолчанию, это 254 символа, но не более 8192

Другими словами, ограничения все-таки есть. Если уж Вы хотите писать нечто универсальное именно средствами FoxPro, то придется использовать посимвольное чтение через FREAD() и такую же посимвольную запись через FWRITE()

Другой вопрос, что, как правило, необходимости в универсальных средствах при работе с текстовыми файлами не возникает. Речь идет о вполне конкретных, как правило, очень небольших, файлах. Так что, скорее всего, и FileToStr() вполне подойдет.

PS: Стандартной комбинацией перевода строки в текстовом файле считается последовательность Chr(13)+Chr(10). Именно в такой последовательности. Сначала 13 (перевод строки), потом 10 (возврат каретки). Однако если файлы были сформированы какой-либо внешней системой, то там в качестве перевода строки могут быть использованы самые разные комбинации этих символов.

PPS: для универсальности, все-таки лучше использовать системную команду COPY. Для вставки перевода строки нужно просто создать дополнительный файл содержащий этот самый перевод строки

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
file1 = 'file1.txt'
file2 = 'file2.txt'
fileCLRF = 'fileCLRF.txt'
StrToFile(Chr(13)+Chr(10), fileCLRF)

* Формируем команду
strCommand = 'copy ' + file1 + ' /B +' + fileCLRF + ' /B + ' + file2 + '/B file3.txt /B'

* Исполняем
RUN &strCommand /N
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Довавить данные из одного тестового файла в другой текстовый файл
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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