|
30.01.2012, 20:47
|
#1
|
Знающий
Регистрация: 21.11.2011
Сообщений: 284
Написано 17 полезных сообщений (для 74 пользователей)
|
Файловые операции
Вообщем читал хелп, но не смог найти функцию поиска текста.
Например мне нужно найти в файле "readme.txt" текст "String". Если программа нашла текст, то будет определенно действие, если же нет, то выключаем программу
|
(Offline)
|
|
30.01.2012, 21:06
|
#2
|
Мастер
Регистрация: 26.10.2009
Сообщений: 1,194
Написано 615 полезных сообщений (для 2,209 пользователей)
|
Ответ: Файловые операции
Нужно читать каждую строчку файла через ReadLine() и искать текст с помощью instr(). О них смотри в хелпе.
|
(Offline)
|
|
30.01.2012, 21:15
|
#3
|
Знающий
Регистрация: 21.11.2011
Сообщений: 284
Написано 17 полезных сообщений (для 74 пользователей)
|
Ответ: Файловые операции
А пример можно?
В голове не укладывается как это происходит =)
UPD: Строчек в файле "Неизвестно"
|
(Offline)
|
|
30.01.2012, 21:46
|
#4
|
Мастер
Регистрация: 26.10.2009
Сообщений: 1,194
Написано 615 полезных сообщений (для 2,209 пользователей)
|
Ответ: Файловые операции
Local File=ReadFile("твой файл.txt")
Local what_need$="Джигурда"
While Not Eof(File)
Local l$=ReadLine(File)
If Instr(l, what_need$, 1)>0 Then RuntimeError what_need+" was found!"
Wend
Если надо - могу скинуть свой парсер файла.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
30.01.2012, 21:51
|
#5
|
Знающий
Регистрация: 21.11.2011
Сообщений: 284
Написано 17 полезных сообщений (для 74 пользователей)
|
Ответ: Файловые операции
Сообщение от IgorOK
Local File=ReadFile("твой файл.txt")
Local what_need$="Джигурда"
While Not Eof(File)
Local l$=ReadLine(File)
If Instr(l, what_need$, 1)>0 Then RuntimeError what_need+" was found!"
Wend
Если надо - могу скинуть свой парсер файла.
|
Надо конечно. =) Буду благодарен.
|
(Offline)
|
|
30.01.2012, 21:55
|
#6
|
Мастер
Регистрация: 26.10.2009
Сообщений: 1,194
Написано 615 полезных сообщений (для 2,209 пользователей)
|
Ответ: Файловые операции
; PARSER
Global P_LINE_TEXT$
Global P_LINE_LENGTH
Global P_LINE_OFFSET
Function P_ReadLine(FileHandle)
P_LINE_TEXT$=""
P_LINE_LENGTH=0
P_LINE_OFFSET=1
While Not Eof(FileHandle)
P_LINE_TEXT=Trim(ReadLine(FileHandle))
If P_LINE_TEXT<>""
If Left(P_LINE_TEXT, 2)<>"//"
P_LINE_LENGTH=Len(P_LINE_TEXT)
P_LINE_OFFSET=1
Return True
EndIf
EndIf
Wend
Return False
End Function
Function P_Eol()
If P_LINE_OFFSET>P_LINE_LENGTH Then Return True
End Function
Function P_nEol()
Return Not P_Eol()
End Function
Function P_Parse$(ErrorText$="")
If P_LINE_OFFSET>P_LINE_LENGTH
If ErrorText=""
Return ""
Else
RuntimeError ErrorText
EndIf
EndIf
Local Char=Asc(Mid(P_LINE_TEXT, P_LINE_OFFSET, 1))
While (Char<33 Or Char=127)
P_LINE_OFFSET=P_LINE_OFFSET+1
If P_LINE_OFFSET>P_LINE_LENGTH Then Return ""
Char=Asc(Mid(P_LINE_TEXT, P_LINE_OFFSET, 1))
Wend
Local Token$
If Char=34
Local EndOffset=Instr(P_LINE_TEXT, Chr(34), P_LINE_OFFSET+1)
If EndOffset=0
EndOffset=P_LINE_LENGTH
Return ""
EndIf
Token=Mid(P_LINE_TEXT, P_LINE_OFFSET+1, EndOffset-P_LINE_OFFSET-1)
P_LINE_OFFSET=EndOffset+1
Return Token
Else
While (Char>32 And Char<>34 And Char<>127)
Token=Token+Chr(Char)
P_LINE_OFFSET=P_LINE_OFFSET+1
If P_LINE_OFFSET>P_LINE_LENGTH Then Exit
Char=Asc(Mid(P_LINE_TEXT, P_LINE_OFFSET, 1))
Wend
Return Token
EndIf
End Function
Function P_SetLine(LineText$)
P_LINE_TEXT$=LineText
P_LINE_LENGTH=Len(LineText)
P_LINE_OFFSET=1
End Function
; TRANSLATOR
Const P_MAX_TOKENS=30
;Standart translator
Global P_STD_TRANSLATOR.P_Translator=P_CreateTranslator("undefined")
P_AddToken(P_STD_TRANSLATOR, "true", 1)
P_AddToken(P_STD_TRANSLATOR, "false", 0)
P_AddToken(P_STD_TRANSLATOR, "yes", 1)
P_AddToken(P_STD_TRANSLATOR, "no", 0)
Type P_Translator
Field Tokens
Field Token.P_Token[P_MAX_TOKENS]
Field DefaultValue$
End Type
Type P_Token
Field InValue$
Field OutValue$
End Type
Function P_CreateTranslator.P_Translator(DefaultValue$="")
Local Translator.P_Translator=New P_Translator
Translator\DefaultValue=DefaultValue
Return Translator
End Function
Function P_AddToken(Translator.P_Translator, InValue$, OutValue$)
Local Token.P_Token=New P_Token
Token\InValue=InValue
Token\OutValue=OutValue
Translator\Token[Translator\Tokens]=Token
Translator\Tokens=Translator\Tokens+1
End Function
Function P_Translate$(Translator.P_Translator, Value$)
If Translator=Null Then Translator=P_STD_TRANSLATOR
Local LastToken=Translator\Tokens-1
For TokenIndex=0 To LastToken
Local Token.P_Token=Translator\Token[TokenIndex]
If Value=Token\InValue Then Return Token\OutValue
Next
If Translator\DefaultValue<>""
Return Translator\DefaultValue
Else
Return Value
EndIf
End Function
Вот. Будут вопросы - в личку.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
30.01.2012, 22:10
|
#7
|
Мастер
Регистрация: 26.10.2009
Сообщений: 1,194
Написано 615 полезных сообщений (для 2,209 пользователей)
|
Ответ: Файловые операции
Коротко о синтаксисе:
1. Разделителем слов является пробел или табуляция. Короче пустое пространство.
2. Чтобы пробелы входили в получаемый при разборе текст - текст нужно писать в кавычках.
3. Поддерживаются однострочные комментарии "//". Но только на всю строку целиком.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:41.
|