Строки из текстового файла в переменные

Обсуждение программ nnCron и nnCron LITE

Re: Строки из текстового файла в переменные

Postby ascerdfg1 » Wed, 13 Jun 2012, 05:30

ридбайлайн не нужен.
nncron.exe v 1.93b10 Build 1141
tm.exe v 1.93b10 Build 569
Windows XP (5.1.2600) SP3
Комп без nnCron - груда металла!
User avatar
ascerdfg1
 
Posts: 541
Joined: Thu, 29 Nov 2007, 02:45
Location: г. Алексин

Re: Строки из текстового файла в переменные

Postby VoidVolker » Wed, 13 Jun 2012, 07:41

Code: Select all
#( Задача_084213062012
NoActive
SingleInstance
Action:
S" C:\flag_1.txt" FILE S>NUM
CASE
 1 OF <...> ENDOF
 2 OF <...> ENDOF
 3 OF <...> ENDOF
 DUP OF <...ни один из вариантов...> ENDOF
ENDCASE
)#
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Строки из текстового файла в переменные

Postby dimmer123 » Wed, 13 Jun 2012, 10:15

Code: Select all
#( Задача_084213062012
NoActive
SingleInstance
Action:
"E:\Tes\1.txt" FILE S>NUM
CASE
 70 OF MSG: "70" ENDOF
 60 OF MSG: "60" ENDOF
 50 OF MSG: "50" ENDOF
 DUP OF MSG: "0" ENDOF
ENDCASE
)#

Выдает "Внутрення ошибка. Error # - 1073741819"
dimmer123
 
Posts: 13
Joined: Tue, 12 Jun 2012, 19:19

Re: Строки из текстового файла в переменные

Postby Morituruz » Wed, 13 Jun 2012, 11:43

Code: Select all
#( Задача_084213062012
NoActive
SingleInstance
Action:
S" E:\Tes\1.txt" FILE S>NUM
CASE
 70 OF MSG: "70" ENDOF
 60 OF MSG: "60" ENDOF
 50 OF MSG: "50" ENDOF
 DUP OF MSG: "0" ENDOF
ENDCASE
)#
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Строки из текстового файла в переменные

Postby dimmer123 » Wed, 13 Jun 2012, 12:47

Moriturus, большое спасибо. Работает.
dimmer123
 
Posts: 13
Joined: Tue, 12 Jun 2012, 19:19

Re: Строки из текстового файла в переменные

Postby dimmer123 » Wed, 13 Jun 2012, 23:22

Еще одна задача. Теперь в файле не только цифры, но и буквы, примерно такие:
# ImageMagick pixel enumeration: 711,1,255,srgba
0,0: ( 0, 0, 0,255) #000000 black
1,0: ( 6, 6, 6,255) #060606 srgba(6,6,6,1)
2,0: ( 4, 6, 14,255) #04060E srgba(4,6,14,1)
3,0: ( 9, 9, 9,255) #090909 srgba(9,9,9,1)
4,0: ( 10, 10, 10,255) #0A0A0A grey4
5,0: ( 10, 15, 9,255) #0A0F09 srgba(10,15,9,1)
6,0: ( 13, 13, 13,255) #0D0D0D grey5

Нужно узнать, есть ли определенные цвета в файле. Достаточно искать до первого найденного.
Code: Select all
#( find_color
NoActive
SingleInstance
Action:
S" E:\Im\output.txt" FILE S>NUM
CASE
 FF9811 OF MSG: "FF9811" ENDOF
 C20511 OF MSG: "C20511" ENDOF
  DUP OF MSG: "ничего не найдено" ENDOF
ENDCASE
)#

Предыдущий пример не подходит, Cron ругается на буквы.
dimmer123
 
Posts: 13
Joined: Tue, 12 Jun 2012, 19:19

Re: Строки из текстового файла в переменные

Postby Morituruz » Wed, 13 Jun 2012, 23:46

Если нужно просто узнать, есть ли строка #010203 в файле, то достаточно
Code: Select all
#( Задача_084213062012
NoActive
SingleInstance
: StringGetPos { a1 u1 a2 u2 -- pos}
a1 u1 a2 u2 SEARCH IF DROP a1 - 1+ ELSE 2DROP 0 THEN ;
Action:
S" E:\Tes\1.txt" FILE S" #010203" StringGetPos
IF
 MSG: "есть такой цвет"
ELSE
 MSG: "не нашлось"
THEN
)#
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Строки из текстового файла в переменные

Postby dimmer123 » Thu, 14 Jun 2012, 00:11

Moriturus wrote:Если нужно просто узнать, есть ли строка #010203 в файле, то достаточно

Да, это подходит. Только нужно проверить по порядку не один, а несколько цветов.
dimmer123
 
Posts: 13
Joined: Tue, 12 Jun 2012, 19:19

Re: Строки из текстового файла в переменные

Postby Morituruz » Thu, 14 Jun 2012, 09:11

dimmer123 wrote:
Moriturus wrote:Если нужно просто узнать, есть ли строка #010203 в файле, то достаточно

Да, это подходит. Только нужно проверить по порядку не один, а несколько цветов.

Тогда нужно знакомиться со списками.
И делать как-то так:
Code: Select all
#( Задача_084213062012
NoActive
SingleInstance
STRING-LIST: colors
: StringGetPos { a1 u1 a2 u2 -- pos}
a1 u1 a2 u2 SEARCH IF DROP a1 - 1+ ELSE 2DROP 0 THEN ;
Action:
colors[
" #123456"
" #654321"
]colors
colors(
S" E:\Tes\1.txt" FILE NODE@ StringGetPos
IF
 MSG: "есть такой цвет"
ELSE
 MSG: "не нашлось"
THEN
)colors
)#
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Строки из текстового файла в переменные

Postby dimmer123 » Thu, 14 Jun 2012, 10:51

В таком случае я не узнаю, какой цвет нашелся. А мне надо в зависимости от найденного цвета выполнять действия. Посмотрел про списки, но с ними я не разберусь.

Нашел в теме пример:
Code: Select all
READ-BY-LINE: "filename"
  FOUND-LINE S" Иванов" SEARCH
  IF
    FOUND-LINE MsgBox
  THEN
  2DROP
;READ-BY-LINE


Переделал его:
Code: Select all
#( Задача_red_by_line
NoActive
Action:
READ-BY-LINE: "E:\Im\output.txt"
 FOUND-LINE S" FF9811" SEARCH
  IF
    MSG: "нашел FF9811"
  THEN
  2DROP
  FOUND-LINE S" FFEA0A" SEARCH
  IF
    MSG: "нашел FFEA0A"
  THEN
  2DROP
  FOUND-LINE S" C20511" SEARCH
  IF
    MSG: "нашел C20511"
  THEN
  2DROP
;READ-BY-LINE
)#

Наверно коряво написано, но работает.
dimmer123
 
Posts: 13
Joined: Tue, 12 Jun 2012, 19:19

Re: Строки из текстового файла в переменные

Postby VoidVolker » Thu, 14 Jun 2012, 17:46

Если надо просто выяснить наличие строки в файле, то достаточно его целиком прочитать и искать сразу по всему файлу:
Code: Select all
S" E:\Im\output.txt" FILE
S" FF9811" SEARCH IF
  MSG: "нашел FF9811"     
ELSE
S" FFEA0A" SEARCH IF
  MSG: "нашел FFEA0A"
ELSE
S" C20511" SEARCH IF
  MSG: "нашел C20511"
THEN THEN THEN 2DROP
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Строки из текстового файла в переменные

Postby dimmer123 » Thu, 14 Jun 2012, 19:45

VoidVolker, спасибо.
dimmer123
 
Posts: 13
Joined: Tue, 12 Jun 2012, 19:19

Re: Строки из текстового файла в переменные

Postby ascerdfg1 » Thu, 16 Aug 2012, 11:15

ascerdfg1 wrote:
Code: Select all
#( test_read_n_string
NoActive
VARIABLE my_va
Action:
     S" C:\flag_1.txt" FILE S>NUM my_va !
 MSG: "%my_va @%"
)#

А если содержимое файла: 110 26 33 56 и надо занести в переменные два последних числа, что использовать?
nncron.exe v 1.93b10 Build 1141
tm.exe v 1.93b10 Build 569
Windows XP (5.1.2600) SP3
Комп без nnCron - груда металла!
User avatar
ascerdfg1
 
Posts: 541
Joined: Thu, 29 Nov 2007, 02:45
Location: г. Алексин

Re: Строки из текстового файла в переменные

Postby Morituruz » Thu, 16 Aug 2012, 11:52

ascerdfg1 wrote:А если содержимое файла: 110 26 33 56 и надо занести в переменные два последних числа, что использовать?

Регулярные выражения, примерно так:
Code: Select all
#( test_read_n_string
NoActive
VARIABLE my_va1
VARIABLE my_va2
Action:
S" C:\flag_1.txt" FILE S" /\d+\s\d+\s(\d+)\s(\d+)/i" RE-MATCH
IF
    $1 S>NUM my_va1 !
    $2 S>NUM my_va2 !
    MSG: "%$my_va1 @ N>S% and %$my_va2 @ N>S%"
THEN
)#
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Строки из текстового файла в переменные

Postby ascerdfg1 » Thu, 16 Aug 2012, 11:56

Code: Select all
#( test_read_n_string
NoActive
VARIABLE my_va
 CREATE buf_ex 256 ALLOT \ создаём массив
Action:
S" C:\flag_1.txt" FILE  buf_ex PLACE \ помещаем в него строку
 buf_ex COUNT 3 - 0 MAX \ откидываем последние 3 символов
S>NUM my_va !
MSG: "%my_va @%"
)#
Вот так почему-то пишет в сообщении "0", хотя содержимое файла "100 10 ". Может опять подводные камни?
nncron.exe v 1.93b10 Build 1141
tm.exe v 1.93b10 Build 569
Windows XP (5.1.2600) SP3
Комп без nnCron - груда металла!
User avatar
ascerdfg1
 
Posts: 541
Joined: Thu, 29 Nov 2007, 02:45
Location: г. Алексин

PreviousNext

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 1 guest

cron