:: Visual Foxpro, Foxpro for DOS
Re: Объединение строк txt файла
akvvohinc

Сообщений: 4201
Откуда: Москва
Дата регистрации: 11.11.2008
Может, и набросал бы, если бы автор написал, что на Фоксе не программирует, но он не признается.
Ratings: 0 negative/0 positive
Re: Объединение строк txt файла
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
akvvohinc
Может, и набросал бы, если бы автор написал, что на Фоксе не программирует, но он не признается.

А по уровню вопроса не видно?
Лабораторную или курсач сдаст и забудет.
А так третья страница темы ни о чем. И не лень же. ;)
Ratings: 0 negative/0 positive
Re: Объединение строк txt файла
sphinx

Сообщений: 31166
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Ребят, не ссорьтесь по пустякам. ТС поблагодарил Тарана, значит все у него взлетело.
А между собой выяснять отношения по знаниям - к чему? Кому-то на потеху?


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Объединение строк txt файла
akvvohinc

Сообщений: 4201
Откуда: Москва
Дата регистрации: 11.11.2008
sphinx
Ребят, не ссорьтесь по пустякам.

А что здесь тебе показалось похожим на ссору?
Ни я ему в Москве, ни он мне у себя стрелку не забивал.

sphinx
ТС поблагодарил Тарана, значит все у него взлетело.
Если всё - это эти две строки, то да, взлетело.
Ratings: 0 negative/0 positive
Re: Объединение строк txt файла
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
akvvohinc
Ни я ему в Москве, ни он мне у себя стрелку не забивал.

Какие наши годы.
Ещё стрелканемся за здравым столом, да не с пустыми бокалами.
Ratings: 0 negative/0 positive
Re: Объединение строк txt файла
sphinx

Сообщений: 31166
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
akvvohinc
А что здесь тебе показалось похожим на ссору?

Я про споры в программировании. Ну и да, это ссорами назвать сложно. Чаще друг друга не понимаем, а смысл один.

Удачи, брат и коллега!

И Тарану мое.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Объединение строк txt файла
sphinx

Сообщений: 31166
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
akvvohinc
Ни я ему в Москве, ни он мне у себя стрелку не забивал.

Рассказать, чем "стрелки" закончатся? ;)


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Объединение строк txt файла
sonik
Автор

Сообщений: 31
Дата регистрации: 28.06.2016
akvvohinc
sphinx
а не, я вангую, что ему просто повторяющийся разделитель заменить на один.

Нет у него никакого повторяющегося разделителя - ему надо просто склеивать каждую вторую строку с предыдущей.

Цитата:
Ну или, ИК что-то подскажет.
Это вряд ли - не его уровень.

Именно так, и как их склеить? Возможен вариант, когда таких строк в файле будет несколько. Тоесть прийдется склеивать первую со второй, третью с четвертой и т.д.
Ratings: 0 negative/0 positive
Re: Объединение строк txt файла
sonik
Автор

Сообщений: 31
Дата регистрации: 28.06.2016
akvvohinc
sonik
спасибо большое!
Если у вас каждая нечетная строка прерывается именно на знаке '=', то используйте этот вариант.
Если же это не так, то он вам не подойдет.

Но вы очень немногословны, а ваши слова про "одно и то же место" разрыва можно понимать по-разному. И если вам лень прояснить этот момент словами, то приведите пример не одной, а хотя бы десятка первых строк файла.
Да на знаке = прерывается. Сбербанк такого типа файлы присылает.
Ratings: 0 negative/0 positive
Re: Объединение строк txt файла
sonik
Автор

Сообщений: 31
Дата регистрации: 28.06.2016
Taran
strtofile(strtran(filetostr(m.file),'='+chr(13)+chr(10),'='),m.file)
А потом append...
Данный код не работает, возможно потому что не использую временный файл а вот:
strtofile(CHRtran(filetostr(m.file),'='+chr(13)+chr(10),'='),m.file)
Работает!

Но если в фале больше одной строки, разделенной "=" ,то все строки все равно превращаются в одну. Тоесть мне нужно 1+2, 3+4, 5+6 и т.д., а получается 1+2+3+4+5+6 Как быть?



Исправлено 1 раз(а). Последнее : sonik, 06.05.20 14:02
Ratings: 0 negative/0 positive
Re: Объединение строк txt файла
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
sonik
Taran
strtofile(strtran(filetostr(m.file),'='+chr(13)+chr(10),'='),m.file)
А потом append...
Данный код не работает, в нем есть какой то смысл, но он явно не закончен. Я нахожу = в конце первой строки и заменяю на =, но зачем? И где тут склейка двух строк?

Суть приведенного выражения в принципе проста - удалить концы строк, стоящие именно после "=".
Если же не срабатывает - возможно это из-за того, что не всегда для переноса строки используется сочетание CHR(10)+CHR(13). В каких-то случаях может использоваться любой из этих двух символов, т.е. скажем вместо заданного сочетания стоит: "="+CHR(13). В итоге естественно функция не находит "="+CHR(10)+CHR(13) и ничего не делает.
Простейший выход - для начала открыть свой файл в любом Hex-редакторе и посмотреть, какие коды (и сколько символов) стоят после знака "=" в качестве переноса строки.
Обычно я давно уже для подобного использую WinHex, неплохой и удобный редактор. Но можно посмотреть хоть даже и hex-просмотром в FAR-е например.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено 1 раз(а). Последнее : Crispy, 06.05.20 14:01
Ratings: 0 negative/0 positive
Re: Объединение строк txt файла
sonik
Автор

Сообщений: 31
Дата регистрации: 28.06.2016
Crispy
sonik
Taran
strtofile(strtran(filetostr(m.file),'='+chr(13)+chr(10),'='),m.file)
А потом append...
Данный код не работает, в нем есть какой то смысл, но он явно не закончен. Я нахожу = в конце первой строки и заменяю на =, но зачем? И где тут склейка двух строк?

Суть приведенного выражения в принципе проста - удалить концы строк, стоящие именно после "=".
Если же не срабатывает - возможно это из-за того, что не всегда для переноса строки используется сочетание CHR(10)+CHR(13). В каких-то случаях может использоваться любой из этих двух символов, т.е. скажем вместо заданного сочетания стоит: "="+CHR(13). В итоге естественно функция не находит "="+CHR(10)+CHR(13) и ничего не делает.
Простейший выход - для начала открыть свой файл в любом Hex-редакторе и посмотреть, какие коды (и сколько символов) стоят после знака "=" в качестве переноса строки.
Обычно я давно уже для подобного использую WinHex, неплохой и удобный редактор. Но можно посмотреть хоть даже и hex-просмотром в FAR-е например.
Taran

strtofile(strtran(filetostr(m.file),'='+chr(13)+chr(10),'='),m.file)

А потом append...

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

strtofile(CHRtran(filetostr(m.file),'='+chr(13)+chr(10),'='),m.file)

Работает!

Но если в фале больше одной строки, разделенной "=" ,то все строки все равно превращаются в одну. Тоесть мне нужно 1+2, 3+4, 5+6 и т.д., а получается 1+2+3+4+5+6 Как быть?
Ratings: 0 negative/0 positive
Re: Объединение строк txt файла
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
sonik
Taran
strtofile(strtran(filetostr(m.file),'='+chr(13)+chr(10),'='),m.file)

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

strtofile(CHRtran(filetostr(m.file),'='+chr(13)+chr(10),'='),m.file)

Работает!

Но если в фале больше одной строки, разделенной "=" ,то все строки все равно превращаются в одну. Тоесть мне нужно 1+2, 3+4, 5+6 и т.д., а получается 1+2+3+4+5+6 Как быть?

Просто во втором случае используется команда, которая заменяет не сочетание(!) символов, а каждый(!) символ, на соответствующий ему по порядку в следующем параметре (после запятой внутри функции).
Т.е. вместо "=" эта функция ставит "=". Вместо chr(13) - пустой символ (поскольку в следующем параметре для него нет соответствия). Также и для chr(10) - пустота.
В результате - все(!) концы строк и удаляются.
Это неправильно.
Правильный вариант как раз был приведен у Тарана.

Разве что - как раз про это я и написал! - нужно сначала узнать, что используется в данном файле в качестве символа переноса: сочетание chr(13)+chr(10), или же всего лишь один символ, например chr(10).
Для чего его и нужно посмотреть в hex-редакторе!


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено 1 раз(а). Последнее : Crispy, 06.05.20 14:14
Ratings: 0 negative/0 positive
Re: Объединение строк txt файла
sonik
Автор

Сообщений: 31
Дата регистрации: 28.06.2016
Taran
strtofile(strtran(filetostr(m.file),'='+chr(13)+chr(10),'='),m.file)

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

strtofile(CHRtran(filetostr(m.file),'='+chr(13)+chr(10),'='),m.file)

Работает!

Но если в фале больше одной строки, разделенной "=" ,то все строки все равно превращаются в одну. Тоесть мне нужно 1+2, 3+4, 5+6 и т.д., а получается 1+2+3+4+5+6 Как быть?

Просто во втором случае используется команда, которая заменяет не сочетание(!) символов, а каждый(!) символ, на соответствующий ему по порядку в следующем параметре (после запятой внутри функции).
Т.е. вместо "=" эта функция ставит "=". Вместо chr(13) - пустой символ (поскольку в следующем параметре для него нет соответствия). Также и для chr(10) - пустота.
В результате - все(!) концы строк и удаляются.
Это неправильно.
Правильный вариант как раз был приведен у Тарана.

Разве что - как раз про это я и написал! - нужно сначала узнать, что используется в данном файле в качестве символа переноса: сочетание chr(13)+chr(10), или же всего лишь один символ, например chr(10).
Для чего его и нужно посмотреть в hex-редакторе!
Вот так выглядит Hex
Crispy
sonik
Ratings: 0 negative/0 positive
Re: Объединение строк txt файла
sonik
Автор

Сообщений: 31
Дата регистрации: 28.06.2016
sonik
Taran
strtofile(strtran(filetostr(m.file),'='+chr(13)+chr(10),'='),m.file)

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

strtofile(CHRtran(filetostr(m.file),'='+chr(13)+chr(10),'='),m.file)

Работает!

Но если в фале больше одной строки, разделенной "=" ,то все строки все равно превращаются в одну. Тоесть мне нужно 1+2, 3+4, 5+6 и т.д., а получается 1+2+3+4+5+6 Как быть?

Просто во втором случае используется команда, которая заменяет не сочетание(!) символов, а каждый(!) символ, на соответствующий ему по порядку в следующем параметре (после запятой внутри функции).
Т.е. вместо "=" эта функция ставит "=". Вместо chr(13) - пустой символ (поскольку в следующем параметре для него нет соответствия). Также и для chr(10) - пустота.
В результате - все(!) концы строк и удаляются.
Это неправильно.
Правильный вариант как раз был приведен у Тарана.

Разве что - как раз про это я и написал! - нужно сначала узнать, что используется в данном файле в качестве символа переноса: сочетание chr(13)+chr(10), или же всего лишь один символ, например chr(10).
Для чего его и нужно посмотреть в hex-редакторе!

Вот так выглядит Hex
Crispy
sonik

Все разобрался, в моем случае подходит :
strtofile(strtran(filetostr(m.file),chr(10)+'=','='),m.file)

Спасибо Огроменное!



Исправлено 1 раз(а). Последнее : sonik, 06.05.20 15:20
Ratings: 0 negative/0 positive
Re: Объединение строк txt файла
akvvohinc

Сообщений: 4201
Откуда: Москва
Дата регистрации: 11.11.2008
sonik
Все разобрался, в моем случае подходит:

Значит, вы нас постоянно путали - символом "=" у вас не заканчивается нечетная строка, а с него начинается четная.

И вообще при таком формате я бы уточнил у банка, является ли символ "=" частью данных, или нет.
Ratings: 0 negative/0 positive
Re: Объединение строк txt файла
sonik
Автор

Сообщений: 31
Дата регистрации: 28.06.2016
akvvohinc
sonik
Все разобрался, в моем случае подходит:

Значит, вы нас постоянно путали - символом "=" у вас не заканчивается нечетная строка, а с него начинается четная.

И вообще при таком формате я бы уточнил у банка, является ли символ "=" частью данных, или нет.

Тут такую информацию из инструкции нашел:
[attachment 33194 1.jpg]
Ratings: 0 negative/0 positive
Re: Объединение строк txt файла
akvvohinc

Сообщений: 4201
Откуда: Москва
Дата регистрации: 11.11.2008
sonik
Тут такую информацию из инструкции нашел:

Значит, ничего хорошего вы пока не добились, так как цель изначально была поставлена неверно.
Судя по части описания формата, в вашем файле есть строки по меньшей мере двух типов - обычные (строки данных) и контрольные.
И кто решил, что надо склеивать обычные и контрольные строки?
Зачем включать признак контрольной строки в поле с данными?
Зачем объединять в одно поле последнее поле обычной строки, символ "=" и первое поле контрольной строки? (как вы показали в вашем первом сообщении)

В общем, непонятно, что в конце концов (то есть после APPEND FROM) вам нужно получить и как этим будут пользоваться.



Исправлено 1 раз(а). Последнее : akvvohinc, 06.05.20 16:45
Ratings: 0 negative/0 positive
Re: Объединение строк txt файла
sonik
Автор

Сообщений: 31
Дата регистрации: 28.06.2016
akvvohinc
sonik
Тут такую информацию из инструкции нашел:

Значит, ничего хорошего вы пока не добились, так как цель изначально была поставлена неверно.
Судя по части описания формата, в вашем файле есть строки по меньшей мере двух типов - обычные (строки данных) и контрольные.
И кто решил, что надо склеивать обычные и контрольные строки?
Зачем включать признак контрольной строки в поле с данными?
Зачем объединять в одно поле последнее поле обычной строки, символ "=" и первое поле контрольной строки? (как вы показали в вашем первом сообщении)

В общем, непонятно, что в конце концов (то есть после APPEND FROM) вам нужно получить и как этим будут пользоваться.
Все для того чтобы перевести в DBF и построчно обработать. 1.Не все параметры из txt мне нужны для загрузки в DBF.
2. Склеиваю, так как в этих двух строках данные по одной оплате.
Так что пока все работает верно.
Ratings: 0 negative/0 positive
Re: Объединение строк txt файла
akvvohinc

Сообщений: 4201
Откуда: Москва
Дата регистрации: 11.11.2008
sonik
Так что пока все работает верно.

Ну, если вам понятно, что за кентавр, равный "1=5" содержится в поле N6, то и ладно.
Но почему бы не отделить человека от лошади, то есть сделать так, чтобы "1" записывалось в одно поле, а "5" - в другое, выкинув ничего не значащий мусор в виде '='?
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 17 (Гостей: 17)

© 2000-2024 Fox Club 
Яндекс.Метрика