Page 1 of 2

Printing a text file

Posted: Mon Apr 13, 2015 9:46 pm
by Eugene Lutsenko
I want to print the output in the form of a text file DOS-TXT.
The design of the CLIPPER:

SET PRINTER TO ("Res_naz.txt")
SET DEVICE TO PRINTER

why something does not work

Re: Printing a text file

Posted: Tue Apr 14, 2015 1:45 am
by PedroAlex
Eugene.

set device to printer
set printer on
set printer to ("Res_naz.txt")
set console off

...Print commands

Set device to screen
Set printer off
Set printer to
Set console on


This works fine for me..

Pedro

Re: Printing a text file

Posted: Tue Apr 14, 2015 5:25 am
by Eugene Lutsenko
Thank you, Pedro!

A little out of the way before, but it looks like. Will use.

Re: Printing a text file

Posted: Tue Apr 14, 2015 10:39 pm
by Eugene Lutsenko
Hi, Pedro!
I have it does not work:

Code: Select all

FUNCTION Main()

*** Pedro ***************
set device to printer
set printer on
set printer to ("Res_naz.txt")
set console off

@1, 1 SAY "Hello World!"

Set device to screen
Set printer off
Set printer to
Set console on

RETURN nil
It turns an empty file

Re: Printing a text file

Posted: Wed Apr 15, 2015 1:32 am
by PedroAlex
Is Very strange ..
What version of windows?
What version of xbase?

Re: Printing a text file

Posted: Wed Apr 15, 2015 1:42 am
by Eugene Lutsenko
comercial wrote:Is Very strange ..
What version of windows?
What version of xbase?
W7, 1.9

Re: Printing a text file

Posted: Wed Apr 15, 2015 1:56 am
by skiman
Hi,

Instead of
@1, 1 SAY "Hello World!"

try with
? "Hello World!"

Re: Printing a text file

Posted: Wed Apr 15, 2015 2:06 am
by Eugene Lutsenko
skiman wrote:Hi,

Instead of
@1, 1 SAY "Hello World!"

try with
? "Hello World!"
It happened. But you want to display on the position in the string. I have tried dcsay, but also get an empty file

Re: Printing a text file

Posted: Wed Apr 15, 2015 3:06 am
by skiman
HI,

You can't print on a position in a TXT file. It is a stream of characters, it has no 'canvas' or 'space' where you can print and position your text.

You can print characters and spaces. if you want a new line you must add it yourself with a CRLF.

Re: Printing a text file

Posted: Wed Apr 15, 2015 4:19 am
by Eugene Lutsenko
Now I understand what to do to get what you need. Replace "SAY" on "?" аnd all.
But here is an example of the old program on CLIIPPER. Line and formed without position entirely.
Everything worked perfectly:

Code: Select all

N_Klass   = RECCOUNT()
N_Field   = FCOUNT()
PRIVATE Ar_field[N_Field]   // Значения строки: "Сумма по классам:"
AFILL(Ar_field,0)           // Сначала 0, чтобы посчитать сумму, а потом делим на N_Klass

DBGOTOP()
DO WHILE .NOT. EOF()
   SELECT Klas_res
   FOR j=3 TO N_Field
       Ar_field[j] = Ar_field[j] + FIELDGET(j)
   NEXT
   DBSKIP(1)
ENDDO
APPEND BLANK
REPLACE Name WITH "Сумма по классам:"
FOR j=3 TO N_Field
    FIELDPUT(j, Ar_field[j])
NEXT
APPEND BLANK
REPLACE Name WITH "Среднее на класс:"
FOR j=3 TO N_Field
    FIELDPUT(j, Ar_field[j]/N_Klass)
NEXT

SELECT Rasp_naz
SET ORDER TO 1
DBGOTOP()

M_KodKl_Old = -9999

SET PRINTER TO ("Res_naz.txt")
SET DEVICE TO PRINTER

Str = 0
@Str++, 0 SAY "РЕЗУЛЬТАТЫ НАЗНАЧЕНИЙ ОБЪЕКТОВ РАСПОЗНАВАЕМОЙ ВЫБОРКИ НА КЛАССЫ"
@Str  , 0 SAY DATE()
@Str  ,10 SAY TIME()
@Str++,63 SAY "г.Краснодар"
Ln = 74

@Str++, 0 SAY REPLICATE("=",Ln)
@Str  , 0 SAY "|ХАРАКТЕРИСТИКИ ЭФФЕКТИВНОСТИ НАЗНАЧЕНИЯ:";@Str++,Ln-1 SAY "|"
@Str  , 0 SAY "|СУММА ПО ВСЕМ КЛАССАМ:";@Str++,Ln-1 SAY "|"
@Str  , 0 SAY "|Начальный ресурс: "+ALLTRIM(STR(Ar_field[3],17))+;
              ", остаток: "+ALLTRIM(STR(Ar_field[4],17));@Str++,Ln-1 SAY "|"
@Str  , 0 SAY "|Суммарное сходство:................................"+ALLTRIM(STR(Ar_field[6],17,7));@Str++,Ln-1 SAY "|"
@Str  , 0 SAY "|Фактические суммарные затраты:....................."+ALLTRIM(STR(Ar_field[7],17))  ;@Str++,Ln-1 SAY "|"
@Str  , 0 SAY "|Средневзвешенное удельное сходство:................"+ALLTRIM(STR(Ar_field[8],17,7));@Str++,Ln-1 SAY "|"
@Str  , 0 SAY "|Среднее на объект суммарное сходство:.............."+ALLTRIM(STR(Ar_field[9],17,7));@Str++,Ln-1 SAY "|"
@Str  , 0 SAY "|Средние на объект фактические суммарные затраты:..."+ALLTRIM(STR(Ar_field[10],17)) ;@Str++,Ln-1 SAY "|"
@Str  , 0 SAY "|Всего назначено:..................................."+ALLTRIM(STR(Ar_field[5],17))+" объекта(ов)";@Str++,Ln-1 SAY "|"
@Str++, 0 SAY REPLICATE("~",Ln)
@Str  , 0 SAY "|СРЕДНЕЕ НА КЛАСС:";@Str++,Ln-1 SAY "|"
@Str  , 0 SAY "|Начальный ресурс: "+ALLTRIM(STR(Ar_field[3]/N_Klass,17,3))+;
              ", остаток: "+ALLTRIM(STR(Ar_field[4]/N_Klass,17,3));@Str++,Ln-1 SAY "|"
@Str  , 0 SAY "|Суммарное сходство:................................"+ALLTRIM(STR(Ar_field[6] /N_Klass,17,7));@Str++,Ln-1 SAY "|"
@Str  , 0 SAY "|Фактические суммарные затраты:....................."+ALLTRIM(STR(Ar_field[7] /N_Klass,17,3));@Str++,Ln-1 SAY "|"
@Str  , 0 SAY "|Средневзвешенное удельное сходство:................"+ALLTRIM(STR(Ar_field[8] /N_Klass,17,7));@Str++,Ln-1 SAY "|"
@Str  , 0 SAY "|Среднее на объект суммарное сходство:.............."+ALLTRIM(STR(Ar_field[9] /N_Klass,17,7));@Str++,Ln-1 SAY "|"
@Str  , 0 SAY "|Средние на объект фактические суммарные затраты:..."+ALLTRIM(STR(Ar_field[10]/N_Klass,17,3));@Str++,Ln-1 SAY "|"
@Str  , 0 SAY "|В среднем на класс назначено:......................"+ALLTRIM(STR(Ar_field[5] /N_Klass,17,3))+" объекта(ов)";@Str++,Ln-1 SAY "|"

Num_pp = 0
DO WHILE .NOT. EOF()

   M_KodObj = Kod_RObj
   M_KodKlf = Kod_klas
   M_UrSxod = Ur_Sxod
   M_Zatr   = Zatrati
   M_UdSxod = Ud_Sxod
   M_KodKln = Klas_naz

   ** Печать информации по новому классу из БД Klas_res.dbf
   IF M_KodKl_Old <> M_KodKln
      Num_pp = 0
      M_KodKl_Old = Klas_naz
      SELECT Klas_res;SET ORDER TO 1;T=DBSEEK(STR(M_KodKln,4))
      IF T
         M_NameKln = Name
         @Str++, 0 SAY REPLICATE("=",Ln)
         @Str  , 0 SAY "|КЛАСС НАЗНАЧЕНИЯ:";@Str++,Ln-1 SAY "|"
         @Str  , 0 SAY "|Код: "+ALLTRIM(STR(M_KodKln,4))+;
                       ", наименование: "+ALLTRIM(M_NameKln)+;
                       ", начальный ресурс: "+ALLTRIM(STR(Resource,13))+;
                       ", остаток: "+ALLTRIM(STR(Ostatok_res,13));@Str++,Ln-1 SAY "|"
         @Str  , 0 SAY "|Суммарное сходство:................................"+ALLTRIM(STR(Sum_UrSxod,17,7));@Str++,Ln-1 SAY "|"
         @Str  , 0 SAY "|Фактические суммарные затраты:....................."+ALLTRIM(STR(Sum_Zatrat,17))  ;@Str++,Ln-1 SAY "|"
         @Str  , 0 SAY "|Средневзвешенное удельное сходство:................"+ALLTRIM(STR(Svz_UdSxod,17,7));@Str++,Ln-1 SAY "|"
         @Str  , 0 SAY "|Среднее на объект суммарное сходство:.............."+ALLTRIM(STR(Avr_UrSxod,17,7));@Str++,Ln-1 SAY "|"
         @Str  , 0 SAY "|Средние на объект фактические суммарные затраты:..."+ALLTRIM(STR(Avr_Zatrat,17,3));@Str++,Ln-1 SAY "|"
         @Str  , 0 SAY "|Всего на данный класс назначено:..................."+ALLTRIM(STR(Kol_obj,17))+" объекта(ов):";@Str++,Ln-1 SAY "|"
         @Str++, 0 SAY REPLICATE("~",Ln)
         @Str++, 0 SAY "| Номер |  Код  | Наименование  |Ур-нь сходст| Затраты на  |Удельное сход|"
         @Str++, 0 SAY "|по пор.|объекта|   объекта     |об.с классом|назн. объекта|об. с классом|"
*                       | 12345 | 12345 |123456789012345|1234.6789012|1234567890123|12345.7890123|
         @Str++, 0 SAY REPLICATE("~",Ln)
      ENDIF
   ENDIF
   SELECT RObj_zat;SET ORDER TO 1;T=DBSEEK(STR(M_KodObj,5))
   IF T
      M_NameObj = Name
      @Str++, 0 SAY "|"+" "+STR(++Num_pp,5)+" "+;
                    "|"+" "+STR(M_KodObj,5)+" "+;
                    "|"+SUBSTR(M_NameObj,1,15)+;
                    "|"+STR(M_UrSxod,12,7)+;
                    "|"+STR(M_Zatr,13)+;
                    "|"+STR(M_UdSxod,13,7)+"|"
   ENDIF
   SELECT Rasp_naz
   DBSKIP(1)
ENDDO
@Str++, 0 SAY REPLICATE("=",Ln)

CLOSE ALL
USE RObj_zat INDEX Kodzrobj EXCLUSIVE NEW
USE RObj_naz INDEX Kodnrobj EXCLUSIVE NEW
Ln = 47
@Str++, 0 SAY REPLICATE("=",Ln)
@Str  , 0 SAY "|СПИСОК НЕНАЗНАЧЕННЫХ ОБЪЕКТОВ:";@Str++,Ln-1 SAY "|"
@Str++, 0 SAY REPLICATE("~",Ln)
@Str++, 0 SAY "| Номер |  Код  | Наименование  | Затраты на  |"
@Str++, 0 SAY "|по пор.|объекта|   объекта     |назн. объекта|"
*              | 12345 | 12345 |123456789012345|1234567890123|
@Str++, 0 SAY REPLICATE("~",Ln)
Num_pp = 0
SELECT RObj_zat
SET ORDER TO 1
DBGOTOP()
DO WHILE .NOT. EOF()
   M_Kod  = Kod
   M_Name = Name
   M_Zatr = Zatrati
   SELECT RObj_naz;SET ORDER TO 1;T=DBSEEK(STR(M_Kod,5))
   IF T
   ELSE
      @Str++, 0 SAY "|"+" "+STR(++Num_pp,5)+" "+;
                    "|"+" "+STR(M_Kod,5)+" "+;
                    "|"+SUBSTR(M_Name,1,15)+;
                    "|"+STR(M_Zatr,13)+"|"
   ENDIF
   SELECT RObj_zat
   DBSKIP(1)
ENDDO
@Str++, 0 SAY REPLICATE("=",Ln)
@Str++, 0 SAY "Универсальная когнитивная аналитическая система"
@Str++, 0 SAY "НПП *ЭЙДОС*"
CLOSE ALL
SET PRINTER TO
SET DEVICE TO SCREEN

@22,0 SAY REPLICATE("█",80) COLOR "gb+/N"
@23,0 SAY REPLICATE("█",80) COLOR "gb+/N"
@24,0 SAY REPLICATE("█",80) COLOR "gb+/N"
Mess = " ПРОЦЕСС ЗАВЕРШЕН УСПЕШНО !!!"
@22,40-LEN(Mess)/2 SAY Mess COLOR "rg+/rb"
Mess = "Результаты назначений в файле: Res_naz.txt и БД: Rasp_naz.dbf и Klas_res.dbf"
@24,40-LEN(Mess)/2 SAY Mess COLOR "rg+/rb"
INKEY(0)
INKEY(0)

SHOWTIME()
RESTSCREEN(0,0,24,79,scr23)
[/size]