|
2D-программирование Вопросы, касающиеся двумерного программирования |
13.11.2010, 18:00
|
#1
|
AnyKey`щик
Регистрация: 10.11.2010
Сообщений: 15
Написано 0 полезных сообщений (для 0 пользователей)
|
Помогите пожалуйста, мне такое пока сложно осилить.
Надо чтобы цыкл открывал файл, читал 1ую строку, проверял совпадает она с текстом в переменной или нет и закрывал файл.
Если совпадает строка то стоп, если нет то читать следующий файл.
Или как-то так:
while not n$=read1
а тут уже надо чтобы файлы открывал по очереди, от 1 до 10
wend
Написал так, ничего не происходит. В одном из файлов есть такая строчка
While Not sd$=read1$
For i=1 To 10
filess=ReadFile("D:\d\"+i+".txt")
read1$=ReadLine(filess)
CloseFile(filess)
Next
Flip
Wend
Вот вроде бы норм все, но он не останавливается.
Graphics 800,600,8,2
SetBuffer BackBuffer()
Global sd$="asd"
Global Read1$
Global I
While Not i=10
For i=1 To 10
filess=ReadFile("D:\d\"+i+".txt")
read1$=ReadLine(filess)
CloseFile(filess)
If sd$=read1$
Print "Eeeeeeee..."
EndIf
Next
Flip
Wend
End
Вот так подправил:
Graphics 800,600,8,2
SetBuffer BackBuffer()
Global sd$="asd"
Global read1$
Global i
Global filess
While Not i=10
For i=1 To 10
filess=OpenFile("D:\d\"+i+".txt")
read1$=ReadLine(filess)
CloseFile(filess)
If sd=read1
filess=OpenFile("D:\d\"+i+".txt")
WriteLine(filess,"строка")
Print "Eeeeeeee..."
EndIf
Next
Flip
Wend
End
Странно что он выводит очень много надписей типа "Eeeeeeee..." и только спустя секунд 10 происходит ошибка "Stream does not exist" и после ошибки перезаписывается файл.
Последний раз редактировалось Randomize, 13.11.2010 в 19:10.
|
(Offline)
|
|
13.11.2010, 19:09
|
#2
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений (для 6,852 пользователей)
|
Ответ: цыкл
Ты запарил плодить сообщения! Для этого есть кнопка "Правка". За сегодня это уже второй раз!
И цикл пишется через И.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
|
|
13.11.2010, 19:11
|
#3
|
AnyKey`щик
Регистрация: 10.11.2010
Сообщений: 15
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: цыкл
Что плодил??? Если уж и написал что-то то лучше бы помог, а то придумал чо-то себе...
|
(Offline)
|
|
13.11.2010, 19:22
|
#4
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений (для 6,852 пользователей)
|
Ответ: цыкл
Твои попытки что-либо написать кодом не соответствуют твоемуже вопросу в начале.
Конструкция While..Wend зачем?
WriteLine зачем?
Опиши нормально что тебе нужно и тогда тебе напишут годный алгоритм.
Из того, что я понял:
Есть 10 txt файлов. Их читаем и проверяем первую строку.
Если нашли, то выводим что-либо, если нет то что?
Закончились 10 файлов и ни в одном нету нужной записи и что тогда?
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
|
|
13.11.2010, 19:30
|
#5
|
AnyKey`щик
Регистрация: 10.11.2010
Сообщений: 15
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: цыкл
Сообщение от Randomize
Из того, что я понял:
Есть 10 txt файлов. Их читаем и проверяем первую строку.
Если нашли, то выводим что-либо, если нет то что?
Закончились 10 файлов и ни в одном нету нужной записи и что тогда?
|
Если не нашли, то ничего. Закончились тоже ничего. Мне только надо чтобы он находил файл с нужной строкой(если такой файл существует) и останавливался.
WriteLine, я сделал, потому что считал, что если он найдет файл и перезапишет его, то остановится, что не вышло.
А While ... Wend тоже для такой же цели, чтобы когда i=10 он останавливался, а цикл проходит раз 50.
|
(Offline)
|
|
13.11.2010, 20:01
|
#6
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений (для 1,962 пользователей)
|
Ответ: цыкл
Если б ты хоть немного учил основы, ты бы знал, что WEND не сработает, пока ты в цикле for, поэтому твоя конструкция совершенно бессмысленна.
|
(Offline)
|
|
14.11.2010, 02:43
|
#7
|
Мастер
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений (для 504 пользователей)
|
Ответ: цыкл
Программа для этой темы:
http://ifolder.ru/20260564
(размер архива 666 б.)
Graphics 800,600,8,2 SetBuffer BackBuffer()
Global sd$="Кто здесь?" Global i Global filess
SeedRnd(MilliSecs()) ; включение неповторения в мозге ЭВМ
For i=1 To 10 filess=OpenFile("D:\d\"+i+".txt") If filess<>0 ; тут точно не знаю.. сначало думал <>Null . Но <>0 ( не равно нулю - помогла). в папке создал только чётные файлы 2.txt 4.txt 6.txt и т.д. read1$=ReadLine(filess) ; короче, если файл есть - значит читаем CloseFile(filess) ; - закроем файл, чтобы потом можно было его переоткрыть If read1$=sd$ Then ; - найдено что надо Color Rand(0,255),Rand(0,255),Rand(0,255) ; - это для наглядности смена цвета нужного текста filess=OpenFile("D:\d\"+i+".txt") WriteLine(filess,"Кто здесь? Тут был Вася!") CloseFile(filess) ; - закроем ещё раз файл, так как открывали до этого во второй раз Text 10,14*i,Str(i)+": "+read1$+" ВАСЯ НАЙДЕН!!!" Else Color 255,255,255 Text 10,14*i,Str(i)+": "+read1$ EndIf EndIf Next
Flip
Программа, файл одноразовый.. Чтобы ещё раз проверить действенность - редактируй в файле текст который нужно искать
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:47.
|