Необходимо направление (желательно правильное)
Участников: 5
Страница 1 из 1
Необходимо направление (желательно правильное)
Значится так.. Я уже упоминал в прошлых сообщениях, что являюсь суперновичком, так что сразу прошу быть терпеливей немножко. Решил программу написать а не знаю с чего даже начать. Помогите остов так сказть создать. Куда рыть мне.
Программа моя должна из некого текстого документа (на который ей надо будет указать путь и который обновляется через некоторое время но по разному всегда - скажем минута другая) добывать данные текстовые и числовые(найти их там и обсчитать потом по формулам разным). Причем надо делать это как только файл обновился в тот же момент ( то есть она должна следить за ним) или же имеет смысл скажем каждую секунду его опрашивать (но эт наверно тормозить будет прога - нежелательно) Отсюда вопросов парочка:
1 как с файла импортировать данные или в файле провести поиск нужного?
2 как сделать так что бы новый импорт был после обновления файла?
3 вкратце пару команд чем вообще можно искать там.
Заранее брагодарен всем кто проявит участие... Это мой типа первый проект будет.
Программа моя должна из некого текстого документа (на который ей надо будет указать путь и который обновляется через некоторое время но по разному всегда - скажем минута другая) добывать данные текстовые и числовые(найти их там и обсчитать потом по формулам разным). Причем надо делать это как только файл обновился в тот же момент ( то есть она должна следить за ним) или же имеет смысл скажем каждую секунду его опрашивать (но эт наверно тормозить будет прога - нежелательно) Отсюда вопросов парочка:
1 как с файла импортировать данные или в файле провести поиск нужного?
2 как сделать так что бы новый импорт был после обновления файла?
3 вкратце пару команд чем вообще можно искать там.
Заранее брагодарен всем кто проявит участие... Это мой типа первый проект будет.
Ron- Сообщения : 11
Дата регистрации : 2009-01-05
Re: Необходимо направление (желательно правильное)
Ну тут первый вопрос. А что за файл?
Примерную структуру покажи?
И во-вторых. Как мгновенно, должна быть проверка?
Примерную структуру покажи?
И во-вторых. Как мгновенно, должна быть проверка?
Re: Необходимо направление (желательно правильное)
Про файлы почитай здесь:
https://freebasic.forum2x2.ru/forum-f10/tema-t40.htm
Алгоритм примерно такой
Что файл был обновлён, можно узнать например получив дату его модификации. А потом сравнив её с предпоследней.
Я раньше не юзал, но вроде делает это функция FileDateTime ()
Примерно так
https://freebasic.forum2x2.ru/forum-f10/tema-t40.htm
Алгоритм примерно такой
- Код:
do
if (файл был обновлён) then
(обработка файла)
end if
sleep 1000
loop while inkey <> chr(27)
Что файл был обновлён, можно узнать например получив дату его модификации. А потом сравнив её с предпоследней.
Я раньше не юзал, но вроде делает это функция FileDateTime ()
Примерно так
- Код:
newdate = FileDateTime ("test.txt")
if newdate <> olddate then
print "file is modified!"
olddate = newdate
end if
Re: Необходимо направление (желательно правильное)
Задача вполне решабельна.Я могу помочь.
Только не знаю как устроить " как только файл обновился в тот же момент "
Я написал программу, которая ищет формулу перемещения во время ускорения.(она пока не окончена, но скелет есть)
Только не знаю как устроить " как только файл обновился в тот же момент "
Я написал программу, которая ищет формулу перемещения во время ускорения.(она пока не окончена, но скелет есть)
- Код:
Declare Function SearchForSth (stroka As string, obj As String) As String
Dim As Double vremya0
Dim As String knopka,stroka,file,Result
file = "test.txt"
vremya0=Timer
Print " -= Searching for the formula. =- "
Print "Expectation..."
Do
knopka=InKey
If Timer - vremya0>= 5 Then
Print "Execution... ("+Time+")"
Print " {"
vremya0=Timer
Print " Opening the """;file ;"""..."
Open file for Input As #1
Print " Treatment lines..."
Do
Line Input #1,stroka
Result=SearchForSth(Stroka, "S = ")
If Result<>"" Then Print Result: Exit Do
Loop While Not Eof(1)
If result="" Then Print " Formula not found"
Close #1
Print " }"
Print "Expectation..."
EndIf
Sleep 1
Loop While knopka<>Chr(27)
Function SearchForSth (stroka As string, obj As String) As String
Dim perechisl As Integer
For perechisl = 1 To Len(stroka)
If Mid(stroka,perechisl,1) = Mid(obj,1,1) Then
' ......
' ......
EndIf
Next
Return ""
End Function
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Re: Необходимо направление (желательно правильное)
Все что было написано в этом сообщении до этого редактирования было полной утопией на поверку. Поэтому удалил что бы не не парить умных людей всякой ботвой. Спасибо за внимание.
Последний раз редактировалось: Ron (Чт Янв 08, 2009 9:57 pm), всего редактировалось 3 раз(а)
Ron- Сообщения : 11
Дата регистрации : 2009-01-05
Re: Необходимо направление (желательно правильное)
У-у-у! Это да. Всё это конечно можно сделать. Немного муторно.
Но как подсказывает мой опыт, обычно решение не бывает таким неуклюжим.
Вероятно можно ещё где-то в другом месте подцепиться или сделать всё совсем по другому.
И так, о разборе.
Можно конечно переместиться на нужное место файла используя функцию seek.
Но я думаю будет надёжнее пересканировать построчно этот файл.
Теперь об анализе строки.
можно ведь из строки взять подстроку.
И в таком роде. Почитай про строки, эта глава тоже написана.
Перевести число которое в строке, в числовую переменную, поможет val()
но так на прямую строку разбирай, когда знаешь где в ней что. А если не уверен, то лучше проанализируй. Поищи начало и конец.
Например перед числом " #", а после него ": "
Есть и другие методы анализа строк. Не буду в них углубляться, тема сложная. Для каждого типа строки нужно искать свой алгоритм.
Но как подсказывает мой опыт, обычно решение не бывает таким неуклюжим.
Вероятно можно ещё где-то в другом месте подцепиться или сделать всё совсем по другому.
И так, о разборе.
Можно конечно переместиться на нужное место файла используя функцию seek.
Но я думаю будет надёжнее пересканировать построчно этот файл.
- Код:
' открываем для чтения текстовый файл
open "file.log" for input as #1
do while eof(1)
' считываем строку
line input #1, getline
' а потом её анализируем
loop
close #1
Теперь об анализе строки.
можно ведь из строки взять подстроку.
- Код:
getline = "Game #9871716817: Table 1 - 15:43:38 ET - 2009/01/05"
' смотрим что наша строка начинается с "Game"
if left( getline, 5) = "Game " then
print "начинаеться с Game"
else
print "другая строка"
end if
И в таком роде. Почитай про строки, эта глава тоже написана.
Перевести число которое в строке, в числовую переменную, поможет val()
- Код:
getline = "Game #9871716817: Table 1 - 15:43:38 ET - 2009/01/05"
print val( mid( getline, 7, 10))
но так на прямую строку разбирай, когда знаешь где в ней что. А если не уверен, то лучше проанализируй. Поищи начало и конец.
Например перед числом " #", а после него ": "
- Код:
print InStr(1, getline, " #")
print InStr(1, getline, ": ")
Есть и другие методы анализа строк. Не буду в них углубляться, тема сложная. Для каждого типа строки нужно искать свой алгоритм.
Re: Необходимо направление (желательно правильное)
Сложно это всё очень, точнее сложно всё это разобрать.
Немного муторно считаю для "первого проекта"?
Самый оптимальный первый проект (имхо)
а) если игра текстовая, то наподобии "Кто хочет стать пенсионером"
б) если игра графическая, то РГБ какая-нить с видом сверху (вот в этом могу подсобить, ещё как)
А насчёт строк - я посоветую почитать наш форум (если всё ещё надо).
Немного муторно считаю для "первого проекта"?
Самый оптимальный первый проект (имхо)
а) если игра текстовая, то наподобии "Кто хочет стать пенсионером"
б) если игра графическая, то РГБ какая-нить с видом сверху (вот в этом могу подсобить, ещё как)
А насчёт строк - я посоветую почитать наш форум (если всё ещё надо).
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Re: Необходимо направление (желательно правильное)
Спасибо за помощь и наставлния. Буду разбираться пока по тихому. У меня один вопрос на сегодня остался.
А мне надо самое начальное что бы скан шел с конца файла до первого слова Game к началу, потому как во всем файле этих гейм будет может и штук 500, а мне нужен только последний блок который начинается с гейм. Это как сделать не пойму никак.
- Код:
' открываем для чтения текстовый файл
open "file.log" for input as #1
do while eof(1) !!!!тут надо добавить =0 ? вроде в теме про обработку файлов так!!!!!!
' считываем строку
line input #1, getline
' а потом её анализируем
loop
close #1
А мне надо самое начальное что бы скан шел с конца файла до первого слова Game к началу, потому как во всем файле этих гейм будет может и штук 500, а мне нужен только последний блок который начинается с гейм. Это как сделать не пойму никак.
Ron- Сообщения : 11
Дата регистрации : 2009-01-05
Re: Необходимо направление (желательно правильное)
Ну можно ноль или можноRon пишет:
' открываем для чтения текстовый файл
open "file.log" for input as #1
do while eof(1) !!!!тут надо добавить =0 ? вроде в теме про обработку файлов так!!!!!!
do while not eof(1)
Угу. Вот именно. Построчно, от первой строки к последней.Ron пишет:
' считываем строку
line input #1, getline
' а потом её анализируем
loop
close #1
Эт код сканирует весь файл с начала до конца - я правильно понимаю.
Ron пишет:
А мне надо самое начальное что бы скан шел с конца файла до первого слова Game к началу, потому как во всем файле этих гейм будет может и штук 500, а мне нужен только последний блок который начинается с гейм. Это как сделать не пойму никак.
Легче всего тупо просматривать файл от самого начала, анализируя каждый блок. В смысле скидывая нужные данные в соответствующие переменные.
В итоге, когда файл закончиться и петля разорвёться, то в твоих переменных окажуться данные из самого последнего блока.
После чего ты их обсчитывай.
Есть ещё вариант. Но он уже сложнее.
Запоминаешь размер файла.
А когда новый файл, он естественно будет больше.
Ты можешь в бинарном режиме взять только нужный кусок и распарсить его.
Но тут советую просто поиграться с бинарным режимом. Да и с разбором. На более простых примерах. Иначе кроме большого разочарования и мысли что ты наверное самый тупой, не получишь.
Хотя там ведь всё элементарно. Просто нужно привыкнуть. А может это мне так кажеться.
Re: Необходимо направление (желательно правильное)
В общем разобрался немного. Что то получается, но дело оказалось трудней для меня чем выглядело на первый взгляд.
Раз проще будет с самого начала все сканить то пусть так и будет, но для работы мне обязательно нужен только последний блок.
Поэтому пусть так будет у меня. Я с начала сканю файл нахожу game много раз каждый раз сравниваю номер игры, больший номер и будет началом последнего блока. определяю номер строки и с этого места начинаю работать до конца файла.
Отсюда:
1 надо как то выяснить номер строки ( в учебнике про строки нет )
2 из учебника "При вызове функции Line Input #, информация будет считыватся построчно начиная спревой строки (если только не используются функции смены позиции начала считывания)."
какая функция используется для смены позиции начала считывания?
Раз проще будет с самого начала все сканить то пусть так и будет, но для работы мне обязательно нужен только последний блок.
Поэтому пусть так будет у меня. Я с начала сканю файл нахожу game много раз каждый раз сравниваю номер игры, больший номер и будет началом последнего блока. определяю номер строки и с этого места начинаю работать до конца файла.
Отсюда:
1 надо как то выяснить номер строки ( в учебнике про строки нет )
2 из учебника "При вызове функции Line Input #, информация будет считыватся построчно начиная спревой строки (если только не используются функции смены позиции начала считывания)."
какая функция используется для смены позиции начала считывания?
Ron- Сообщения : 11
Дата регистрации : 2009-01-05
Re: Необходимо направление (желательно правильное)
Для смены позиции функция seek.
Номер строки... Ха, а посчитать трудно? Раз, два, три, четыре, пять...
А зачем считать строки?
Опять же, сохрани номер последнего блока.
А следующий, будет новым, который как раз и нужен.
Вот и всё!
Номер строки... Ха, а посчитать трудно? Раз, два, три, четыре, пять...
- Код:
do
numberline += 1
print "читаем строку номер: "; numberline
line input #1, getline
loop
А зачем считать строки?
Опять же, сохрани номер последнего блока.
А следующий, будет новым, который как раз и нужен.
Вот и всё!
Re: Необходимо направление (желательно правильное)
Продолжаю буйствовать так сказать. Благодаря помощи товарищей форумян разобрался с текстовым файлом. После мытарств выцепил с него все что хотел. Тем самым сделал шаг вперед к программируемому будущему. Дальше буду разбираться с получеными значениями.
И тут сразу же тупик почти. Ситуация такая.
у меня есть 9 переменных со значениями S1....S9. значения разные везде но скажем две переменные - 3я и 9я равны нулю.
Также я имею некое число N, например равное 5 в данном случае.
Мне надо собрать новый список Переменных P1...P9 со старого списка, начиная c SN, то есть S5 тут. Но нулевые должны значения SN не должны попасть в этот список.
Таким образом должно получиться здесь S5=P1 S6=P2 S7=P3 S8=P4 S9(ноль поэтому выпадает) дальше к началу S1=P5 S2=P6 S3(ноль, выпадает) S4=P7. Получиться должно тут 7 штук P.
После нескольких часов раздумий не смог ничего придумать кроме тупого перечисления еслитогдаиначе, но чую что такая громоздская конструкция не совсем верный путь будущего программиста, т.к. должно быть более изящное решение. Будте добры подтолкните.
И тут сразу же тупик почти. Ситуация такая.
у меня есть 9 переменных со значениями S1....S9. значения разные везде но скажем две переменные - 3я и 9я равны нулю.
Также я имею некое число N, например равное 5 в данном случае.
Мне надо собрать новый список Переменных P1...P9 со старого списка, начиная c SN, то есть S5 тут. Но нулевые должны значения SN не должны попасть в этот список.
Таким образом должно получиться здесь S5=P1 S6=P2 S7=P3 S8=P4 S9(ноль поэтому выпадает) дальше к началу S1=P5 S2=P6 S3(ноль, выпадает) S4=P7. Получиться должно тут 7 штук P.
После нескольких часов раздумий не смог ничего придумать кроме тупого перечисления еслитогдаиначе, но чую что такая громоздская конструкция не совсем верный путь будущего программиста, т.к. должно быть более изящное решение. Будте добры подтолкните.
Ron- Сообщения : 11
Дата регистрации : 2009-01-05
Re: Необходимо направление (желательно правильное)
Есть такая чудесная вещь как массив.
- Код:
' Вот создаём массив s
redim s(1 to 9) as integer
' точно также массив p
redim p(1 to 9) as integer
' тут вы заполняете массив s своими значениями
' и вообще ваш код, который пишите сами
' теперь в цикле сканируем массив
dim i as integer ' переменная для массива (номер обрабатываемого элемента)
dim n as integer ' номер элемента с которого надо начинать
for i = n to 9
' если я правильно понял, то переписывать нужно значения отличные от нуля
' проверяем значение элемента s с номером i
if s(i) <> 0 then
' и если не 0, то копируем в p с такимже номером
p(i) = s(i)
end if
next
Re: Необходимо направление (желательно правильное)
в очередной раз спасибо. проблемы потихоньку разрешаются.
- к вопросу о чудесной вещи массивах. простой вопрос наверно. как организовать квадратный массив?, скажем 10х10. (в учебнике про массивы совсем ничего нету)
- возвращаюсь к началу темы. об открытии текстового файла. можно ли организовать кнопочку "open" что бы нажать на нее и выбрать как в виндоус нужный файл?
- или еще трудней - кнопкой выбрать нужную папку где программа сама найдет нужный файл по дате и имени? (эт для меня вообще космос)
- к вопросу о чудесной вещи массивах. простой вопрос наверно. как организовать квадратный массив?, скажем 10х10. (в учебнике про массивы совсем ничего нету)
- возвращаюсь к началу темы. об открытии текстового файла. можно ли организовать кнопочку "open" что бы нажать на нее и выбрать как в виндоус нужный файл?
- или еще трудней - кнопкой выбрать нужную папку где программа сама найдет нужный файл по дате и имени? (эт для меня вообще космос)
Ron- Сообщения : 11
Дата регистрации : 2009-01-05
Re: Необходимо направление (желательно правильное)
Да. К сожалению, до того, чтобы написать главу про массивы у нас просто не дошли руки. Все занятые. Хотя собирались-собирались. А собрались официальный мануал переводить. Но тоже переводим еле-еле.
И так. Если коротко. То у массивов может быть несколько измерений. Тут уже не помню, больше 2 не пользую. Хотя их можно толи 10. А может ещё больше создать.
Просто при создании массива, через запятую перечисляем.
redim matrica(0 to 9, 1 to 2) as integer
И теперь есть два измерения.
В вашем случае
redim array(1 to 10, 1 to 10) as integer
И получаете ровно 100 ячеек. 10*10. От array(1,1) до array(10,10).
Окно с выбором файла сделать можно.
Смотрите
"C:\Program Files\FreeBASIC\examples\Windows\gui\fileopen.bas"
а дальше вопросы уже не ко мне. Так как я с этим не баловался.
И так. Если коротко. То у массивов может быть несколько измерений. Тут уже не помню, больше 2 не пользую. Хотя их можно толи 10. А может ещё больше создать.
Просто при создании массива, через запятую перечисляем.
redim matrica(0 to 9, 1 to 2) as integer
И теперь есть два измерения.
В вашем случае
redim array(1 to 10, 1 to 10) as integer
И получаете ровно 100 ячеек. 10*10. От array(1,1) до array(10,10).
Окно с выбором файла сделать можно.
Смотрите
"C:\Program Files\FreeBASIC\examples\Windows\gui\fileopen.bas"
а дальше вопросы уже не ко мне. Так как я с этим не баловался.
массивы
Ребята, я конечно сильно не читал чем вы в этой теме занимаетесь, но услышал слово массивы и вспомнил, что посвятил этому обширную тему у себя на сайте. Я работал вот в таких направлениях:
-Сортировка массива в порядке возростания эллементов;
-Сортировка массива в порядке уменьшения эллементов;
-Подсчет повторений эллементов в массиве;
-Удаление одинаковых эллементов массива. Сжатие массива.;
-Сортировка по алфавиту эллементов массива;
Всё это на странице: http://freebasic.ru/029.php
Все примеры работают отлично и проверены.
-Сортировка массива в порядке возростания эллементов;
-Сортировка массива в порядке уменьшения эллементов;
-Подсчет повторений эллементов в массиве;
-Удаление одинаковых эллементов массива. Сжатие массива.;
-Сортировка по алфавиту эллементов массива;
Всё это на странице: http://freebasic.ru/029.php
Все примеры работают отлично и проверены.
Re: Необходимо направление (желательно правильное)
Спасибо. Простенько. Но всё же тоже есть интересное. Хотя про многомерные масивы, кажеться, не упоминаеться.
Да и сортировка... В прочем для этого нужно конечно же читать что-нибудь серьёзное из классиков , например
Дональд Кнут - "Искусство программирования, том 3. Сортировка и поиск"
Что-то есть в книгах:
"Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн" - "Алгоритмы: построение и анализ"
Роберт Седжвик - "Фундаментальные алгоритмы на C. Анализ/Структуры данных/Сортировка/Поиск"
Или хотябы
Томас Ниман- "Сортировка и поиск: Рецептурный справочник".
Впрочем я уверен, что человек может сам придумать, то что ему нужно. Когда-то я был младше, а инета у меня небыло. За 20 минут написал програмку для сортировки строк. Как я узнал гораздо позже этот метод назывался "пузырьковым". Ну и нафиг мне эти книжки? Разве что для всяких заумностей. А можно заюзать просто чужые библиотеки, где всё уже отлажено.
Да и сортировка... В прочем для этого нужно конечно же читать что-нибудь серьёзное из классиков , например
Дональд Кнут - "Искусство программирования, том 3. Сортировка и поиск"
Что-то есть в книгах:
"Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн" - "Алгоритмы: построение и анализ"
Роберт Седжвик - "Фундаментальные алгоритмы на C. Анализ/Структуры данных/Сортировка/Поиск"
Или хотябы
Томас Ниман- "Сортировка и поиск: Рецептурный справочник".
Впрочем я уверен, что человек может сам придумать, то что ему нужно. Когда-то я был младше, а инета у меня небыло. За 20 минут написал програмку для сортировки строк. Как я узнал гораздо позже этот метод назывался "пузырьковым". Ну и нафиг мне эти книжки? Разве что для всяких заумностей. А можно заюзать просто чужые библиотеки, где всё уже отлажено.
Re: Необходимо направление (желательно правильное)
ну если кому интересно про сортировки могу дать полистать методичку свою по САОД-у (чевотатам обработки данных), тама по идее должны были нам весь семестр про разные сортировки рассказывать, а мне их еще сдавать... но там все их понять мона за пол дня, некоторые, типа высокопроизводительные...
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|