Группа: Silver Member
Сообщений: 704
Регистрация: 15.01.07 Авторитет: 1
Вне форума
Предупреждения: (0%)
Суть: есть файл с набором цифр(цифры записаны каждое с новой строки). Есть программка, которая выбирает из определенного диапазона рандомное число и, если его нет в файле, то записывать его туда, а если есть - то выдавать окно с сообщением. Программка есть, проблема с проверкой на наличие числа в файле. Бьюсь 2-ой день.
Код
procedure TForm1.Button1Click(Sender: TObject); const n = 999999; var r1 : integer; r2 : integer; r3 : integer; f : TextFile; s : string; begin Randomize; r1:=StrToInt(Edit3.Text); - нижнее значение r2:=StrToInt(Edit4.Text); - верхнее значение
if ((r1 < 0) or (r2 > n)) then ShowMessage('Бла-бла-бла'); else begin r3:= RandomRange(r1,r2); Edit2.Text:=IntToStr(r3); - отображение числа end;
s:=Edit2.Text; AssignFile(f,'file.txt');
While not (EoF(f)) do begin Readln(f,s); if Pos(f,s)>0 then begin ShowMessage('Record Find'); Edit2.Clear; end else begin Append(f); Writeln(f,s); end; end; CloseFile(f);
Группа: Silver Member
Сообщений: 704
Регистрация: 15.01.07 Авторитет: 1
Вне форума
Предупреждения: (0%)
все... решилось... Пэтро, спасибо за советы)))
вот код, если кому надо, может он не очень хороший, но рабочий:
Код
procedure TForm1.Button1Click(Sender: TObject); const n = 999999; var r1 : integer; r2 : integer; r3 : integer; f : TextFile; s, s1 : string; IsFound : Boolean; begin Randomize; r1:=StrToInt(Edit3.Text); r2:=StrToInt(Edit4.Text);
if ((r1 < 0) or (r2 > n)) then ShowMessage('Бла-Бла-Бла'); else begin r3:= RandomRange(r1,r2); Edit2.Text:=IntToStr(r3); end;
s1 := Edit2.Text;
AssignFile(f, 'ungame.txt'); Reset(f); IsFound := False; while not Eof(f) do begin Readln(f, s); if Pos(s1, s) > 0 then begin ShowMessage('Record Find'); IsFound := True; Edit2.Clear; Break; end; end;
if not IsFound then begin Append(f); Writeln(f); Write(f, s1); end;
Группа: Silver Member
Сообщений: 850
Регистрация: 02.07.06 Авторитет: 3
Вне форума
Предупреждения: (0%)
Denni, только есть в твоей проге один глюк. Если в файле будет число 1234, а ты ищешь 23, то твоя прога ответит что такое число есть, хотя на самом деле его нет.
Все таки я не пойму как ты читаешь файл без ReadFile(f); ассоциировать файл с переменной недостаточно, надо его еще открыть. или нынче AssignFile выполняет 2 функции?
Все таки я не пойму как ты читаешь файл без ReadFile(f); ассоциировать файл с переменной недостаточно, надо его еще открыть. или нынче AssignFile выполняет 2 функции?
У него есть Reset( f ) и Append( f ) - этого вполне достаточно. Первое - открывает уже существующий файл для чтения, второе - открывает существующий файл для дописывания.
А само чтение осуществляется через Readln( f, s ).
Так что здесь все так, как и должно быть.
P.S. Вы, наверное, путаете с набором функций: FileOpen, FileRead.