![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Здравствуйте, уважаемые.
У меня вопрос... Как: 1) Сперва открыть файл на чтение 2) Считать из него некоторые данные 3) Потом изменить эти данные 4) Потом переписать файл с новыми данными ( то есть изменены лишь пара строк из 30, предположим) 5) Потом проверить этот файл на некоторое наличие строк (например на 38) 6) В конце добавить в этот файл какую-нибудь строчку, в зависимости от количества строк. Очень надо, ребят... Пожалуйста, помогите. Уже несколько дней работа стоит... |
#2
|
|||
|
|||
![]() А какой файл-то?
Текстовый или бинарный? И какими средствами можно пользоваться? Любыми? Если текстовый и средства любые - пользуй TStringList. Удобно и просто. |
#3
|
|||
|
|||
![]() Приведите пример пожалуйста...
Да - файл текстовый. Да, можно пользоваться TStringList. Есть одно Но. По идее, следующий код должен работать... Код:
If (Form1.Edit1.Text = '' ) then filename:= 'Блаблабла.txt' else filename:= 'Блаблабла1.txt'; tmp:= TStringList.Create; AssignFile(F, filename); Reset(F); while not eof(F) do begin readln(F, str); tmp.Add(str); end; CloseFile(F); osenka:= tmp[4]; obkoltests:= StrToInt(tmp[5]); obkoltests:= obkoltests + 1; osenka:= 'Отлично'; tmp[4]:= osenka; tmp[5]:= IntToStr(obkoltests); AssignFile(F, filename); Rewrite(F); for k:= 0 to (tmp.Count - 1) do begin writeln(F, tmp[k]); inc(k); end; CloseFile(F); if 38 > tmp.Count then begin AssignFile(F, filename); Append(F); writeln(F, '*******'); CloseFile(F); end else begin AssignFile(F, filename); Append(F); writeln(F, '****'); writeln(F, obkoltests); CloseFile(F); end; Но он не работает. Останавливается на строчке Rewrite(F); Пишет: EInOutFile with message I/O error 32, если файл не скрытый, а ежели он скрыт, то File access denied Помогите! |
#4
|
||||
|
||||
![]() Ошибка такая..."процесс не может получить доступ к файлу, так как этот файл занят другим процессом"...это покажет сообщение ShowMessage(SysErrorMessage(32))...
Код:
begin AssignFile(f , FileName); ReWrite(f); ShowMessage(SysErrorMessage(32)); CloseFile(f); end; В начале был Бит, потом Байт и только потом появилось Слово... |
#5
|
|||
|
|||
![]() Эмм... Ну да. А что это дает? Я не понимаю... Объясни пожалуйста...
|
#6
|
|||
|
|||
![]() Вся проблема в том, что должно ведь выполняться переписывание файла, но оно не происходит из-за этой ошибки... Как ее можно исключить-исправить?
|