Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 30.01.2012, 20:47   #1
Okay
Знающий
 
Регистрация: 21.11.2011
Сообщений: 284
Написано 17 полезных сообщений
(для 74 пользователей)
Вопрос Файловые операции

Вообщем читал хелп, но не смог найти функцию поиска текста.
Например мне нужно найти в файле "readme.txt" текст "String". Если программа нашла текст, то будет определенно действие, если же нет, то выключаем программу
(Offline)
 
Ответить с цитированием
Старый 30.01.2012, 21:06   #2
IgorOK
Мастер
 
Аватар для IgorOK
 
Регистрация: 26.10.2009
Сообщений: 1,194
Написано 615 полезных сообщений
(для 2,209 пользователей)
Ответ: Файловые операции

Нужно читать каждую строчку файла через ReadLine() и искать текст с помощью instr(). О них смотри в хелпе.
(Offline)
 
Ответить с цитированием
Старый 30.01.2012, 21:15   #3
Okay
Знающий
 
Регистрация: 21.11.2011
Сообщений: 284
Написано 17 полезных сообщений
(для 74 пользователей)
Ответ: Файловые операции

А пример можно?
В голове не укладывается как это происходит =)

UPD: Строчек в файле "Неизвестно"
(Offline)
 
Ответить с цитированием
Старый 30.01.2012, 21:46   #4
IgorOK
Мастер
 
Аватар для IgorOK
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Okay (30.01.2012)
Старый 30.01.2012, 21:51   #5
Okay
Знающий
 
Регистрация: 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
IgorOK
Мастер
 
Аватар для IgorOK
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Okay (30.01.2012)
Старый 30.01.2012, 22:10   #7
IgorOK
Мастер
 
Аватар для IgorOK
 
Регистрация: 26.10.2009
Сообщений: 1,194
Написано 615 полезных сообщений
(для 2,209 пользователей)
Ответ: Файловые операции

Коротко о синтаксисе:

1. Разделителем слов является пробел или табуляция. Короче пустое пространство.
2. Чтобы пробелы входили в получаемый при разборе текст - текст нужно писать в кавычках.
3. Поддерживаются однострочные комментарии "//". Но только на всю строку целиком.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 11:30.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com