forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   цыкл (http://forum.boolean.name/showthread.php?t=13714)

АгниКай 13.11.2010 18:00

Помогите пожалуйста, мне такое пока сложно осилить.
Надо чтобы цыкл открывал файл, читал 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:09

Ответ: цыкл
 
Ты запарил плодить сообщения! Для этого есть кнопка "Правка". За сегодня это уже второй раз!
И цикл пишется через И.

АгниКай 13.11.2010 19:11

Ответ: цыкл
 
Что плодил??? Если уж и написал что-то то лучше бы помог, а то придумал чо-то себе...

Randomize 13.11.2010 19:22

Ответ: цыкл
 
Твои попытки что-либо написать кодом не соответствуют твоемуже вопросу в начале.
Конструкция While..Wend зачем?
WriteLine зачем?
Опиши нормально что тебе нужно и тогда тебе напишут годный алгоритм.

Из того, что я понял:
Есть 10 txt файлов. Их читаем и проверяем первую строку.
Если нашли, то выводим что-либо, если нет то что?
Закончились 10 файлов и ни в одном нету нужной записи и что тогда?

АгниКай 13.11.2010 19:30

Ответ: цыкл
 
Цитата:

Сообщение от Randomize (Сообщение 168527)
Из того, что я понял:
Есть 10 txt файлов. Их читаем и проверяем первую строку.
Если нашли, то выводим что-либо, если нет то что?
Закончились 10 файлов и ни в одном нету нужной записи и что тогда?

Если не нашли, то ничего. Закончились тоже ничего. Мне только надо чтобы он находил файл с нужной строкой(если такой файл существует) и останавливался.
WriteLine, я сделал, потому что считал, что если он найдет файл и перезапишет его, то остановится, что не вышло.
А While ... Wend тоже для такой же цели, чтобы когда i=10 он останавливался, а цикл проходит раз 50.

baton4ik 13.11.2010 20:01

Ответ: цыкл
 
Если б ты хоть немного учил основы, ты бы знал, что WEND не сработает, пока ты в цикле for, поэтому твоя конструкция совершенно бессмысленна.

LLI.T.A.L.K.E.R. 14.11.2010 02:43

Ответ: цыкл
 
Программа для этой темы:
http://ifolder.ru/20260564
(размер архива 666 б.)

PHP код:

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 

Программа, файл одноразовый.. Чтобы ещё раз проверить действенность - редактируй в файле текст который нужно искать


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot