powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / chr(13) + chr(10) лишние пробелы
8 сообщений из 8, страница 1 из 1
chr(13) + chr(10) лишние пробелы
    #39198006
Валерий_Е
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Помогите разобраться
необходимо сформировать xml файл
есть такой код:

авторselectdir = 'MyModem\Out\pharm\'
CLOSE TABLES all
SET console off
lcEnter = chr(13) + chr(10)
lcText = '<?xml version="1.0" encoding="windows-1251" standalone="yes" ?>' + lcEnter
lcText = lcText + '<PReport xmlns="http://tempuri.org/PReport.xsd">' + lcEnter
lcText = lcText + '<Header>' + lcEnter
lcText = lcText + '<Report_Type>pr001</Report_Type>' + lcEnter
lcText = lcText + '</Header>' + lcEnter

SELECT * FROM ...................................... INTO CURSOR Sales
select Sales
go top
scan
lcText = lcText + '<Sales>' + lcEnter
lcText = lcText + '<Supplier_Code>'+''+'</Supplier_Code>' + lcEnter
lcText = lcText + '<Price_Out>'+alltrim(str(Sales.price,10,2))+'</Price_Out>' + lcEnter
...
lcText = lcText + '</Sales>' + lcEnter
endscan
lcText = lcText + '</PReport>' + lcEnter
selectfile = CHRTRAN("report_123_"+right(dtoc(date()),4)+substr(dtoc(date()),4,2)+left(dtoc(date()),2),".","")+".xml"
outfile = CHRTRAN(selectdir,".","")+selectfile
set printer to &outfile.
set printer on
?? lcText
set printer off
set printer to
SET PRINTER TO DEFAULT

так вот, если запустить программу несколько раз, получаем:
первый раз все нормально а дальше перед всеми строками кроме первой добавляются пробелы, с каждым разом их число увеличивается
1-й раз.
Код: xml
1.
2.
3.
4.
5.
<?xml version="1.0" encoding="windows-1251"
standalone="yes" ?>
<PReport xmlns="http://tempuri.org/PReport.xsd">
<Header>
<Report_Type>pr001</Report_Type>


2-й раз
Код: xml
1.
2.
3.
4.
5.
6.
<?xml version="1.0" encoding="windows-1251"
                                                  standalone="yes" ?>
                                                  <PReport xmlns="http://tempuri.org/PReport.xsd">
                                                  <Header>
                                                  <Report_Type>pr001</Report_Type>
                                                  <Report_Version>1.3</Report_Version>


3-й раз
Код: xml
1.
2.
3.
4.
5.
<?xml version="1.0" encoding="windows-1251"
                                                                                                    standalone="yes" ?>
                                                                                                    <PReport xmlns="http://tempuri.org/PReport.xsd">
                                                                                                    <Header>
                                                                                                    <Report_Type>pr001</Report_Type>


помогло следующее:
добавил две строки

авторCLOSE TABLES all
_CLIPTEXT=''
?_CLIPTEXT

SET console off
lcEnter = chr(13) + chr(10)
...
...


но так и не понимаю в чем проблема.
Подскажите пожалуйста.
...
Рейтинг: 0 / 0
chr(13) + chr(10) лишние пробелы
    #39198047
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Замени это
Код: sql
1.
2.
3.
4.
5.
set printer to &outfile.
set printer on
?? lcText
set printer off
set printer to


на
Код: sql
1.
StrToFile(lcText, outfile)
...
Рейтинг: 0 / 0
chr(13) + chr(10) лишние пробелы
    #39198071
Валерий_Е
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TЗамени это
Код: sql
1.
2.
3.
4.
5.
set printer to &outfile.
set printer on
?? lcText
set printer off
set printer to


на
Код: sql
1.
StrToFile(lcText, outfile)



Благодарю.
Так работает.
Но все же не понимаю, почему добавляются пробелы в моем варианте.и почему если добавить в начале
_CLIPTEXT=''
?_CLIPTEXT


все работает как задумали.
...
Рейтинг: 0 / 0
chr(13) + chr(10) лишние пробелы
    #39198084
Валерий_Е,

посмотри слегка переработанный твой код (ну чтобы у себя было можно что-то запустить):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
selectdir = 'MyModem\Out\pharm\'
CLOSE TABLES all
SET console off
selectfile = "report_123_"+dtos(date())+".xml"
outfile = selectfile 
SET TEXTMERGE on TO (outfile)
\\<?xml version="1.0" encoding="windows-1251" standalone="yes" ?>
\<PReport xmlns="http://tempuri.org/PReport.xsd">
\
\<Header>
\<Report_Type>pr001</Report_Type>
\</Header>

SELECT * FROM ............. INTO CURSOR Sales
scan
	\<Sales>'
	\<Price_Out><<alltrim(str(Sales.price,10,2))>></Price_Out>
	\</Sales>
endscan
\</PReport>
SET TEXTMERGE OFF 
SET TEXTMERGE to
Modify File (outfile)


Не кажется ли тебе, что в нем значительно меньше всяких совершенно ненужных сущностей?
...
Рейтинг: 0 / 0
chr(13) + chr(10) лишние пробелы
    #39198085
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валерий_ЕНо все же не понимаю, почему добавляются пробелы в моем варианте
Не знаю. Может какая-то особенность set printer. Не надо им пользоваться. Это наследие FoxPro for DOS.

SET console off тоже лишнее.
...
Рейтинг: 0 / 0
chr(13) + chr(10) лишние пробелы
    #39198139
Валерий_Е
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
правильный проходящий.Валерий_Е,

посмотри слегка переработанный твой код (ну чтобы у себя было можно что-то запустить):
selectdir = 'MyModem\Out\pharm\'
CLOSE TABLES all
SET console off
selectfile = "report_123_"+dtos(date())+".xml"
outfile = selectfile
SET TEXTMERGE on TO (outfile)
\\<?xml version="1.0" encoding="windows-1251" standalone="yes" ?>
\<PReport xmlns=" http://tempuri.org/PReport.xsd">
\
\<Header>
\<Report_Type>pr001</Report_Type>
\</Header>

SELECT * FROM ............. INTO CURSOR Sales
scan
\<Sales>'
\<Price_Out><<alltrim(str(Sales.price,10,2))>></Price_Out>
\</Sales>
endscan
\</PReport>
SET TEXTMERGE OFF
SET TEXTMERGE to
Modify File (outfile)

Не кажется ли тебе, что в нем значительно меньше всяких совершенно ненужных сущностей?
Так тоже работает. Благодарю.

Dima TНе знаю. Может какая-то особенность set printer. Не надо им пользоваться. Это наследие FoxPro for DOS.

SET console off тоже лишнее.
Может. Странно что этот код уже пол года работает в 18 точках (в начале дня автоматически формируется отчет о продажах и отправляется по почте), а неделю назад возникла такая проблема только в одном месте.

Ладно всем спасибо, воспользуюсь советом Dima T (меньше править).
...
Рейтинг: 0 / 0
chr(13) + chr(10) лишние пробелы
    #39198145
Валерий_ЕЛадно всем спасибо, воспользуюсь советом Dima T (меньше править).Ну хоть выкинешь всю ахинею, связанную с формированием имени файла? Про функцию Dtos() почитать в хелп заглянешь?
...
Рейтинг: 0 / 0
chr(13) + chr(10) лишние пробелы
    #39198153
Валерий_Е
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
правильный проходящий.Ну хоть выкинешь всю ахинею, связанную с формированием имени файла? Про функцию Dtos() почитать в хелп заглянешь?
Уже заглянул и выкинул! Спасибо!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / chr(13) + chr(10) лишние пробелы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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