13.01.2015 Views

Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

FileClose (f);<br />

}<br />

}<br />

70<br />

Следующий пример посвящен изменению содержимого файла. В<strong>на</strong>чале<br />

текст файла считывается в массив, который преобразуется в строку. В этой<br />

строке отыскивается заданное слово и заменяется фразой «[Удалено]», а<br />

файл заполняется пробелами. После этого изменен<strong>на</strong>я строка возвращается в<br />

файл.<br />

void Files3 () {<br />

AnsiString word = MyForm–>Edit1–>Text,<br />

file = MyForm–>Edit2–>Text,<br />

bText ="";<br />

try {<br />

int bFile = FileOpen (file, fmOpenReadWrite);<br />

int bLen = FileSeek (bFile, 0, 2);<br />

char *b = new char [bLen];<br />

FileSeek (bFile, 0, 0);<br />

FileRead (bFile, b, bLen);<br />

bText =AnsiString (b, bLen);<br />

delete [] b;<br />

int index = bText.AnsiPos (word.c_str());<br />

if (!index) {<br />

ShowMessage ("В файле нет такого слова");<br />

FileClose (bFile); return;<br />

}<br />

bText.Delete (index, word.Length ());<br />

bText.Insert ("[Удалено]", index);<br />

FileSeek (bFile, 0, 0);<br />

AnsiString c = AnsiString::StringOfChar (' ', bLen);<br />

FileWrite (bFile, c.c_str (), bLen);<br />

FileSeek (bFile, 0, 0);<br />

FileWrite (bFile, bText.c_str (), bText.Length ());<br />

FileClose (bFile);<br />

} catch (...) { ShowMessage ("Ошибка файловой операции"); }<br />

ShowMessage (bText);<br />

}<br />

Пример удаления фрагмента, заданного в Edit1, из файла, в котором содержится<br />

указан<strong>на</strong>я в Label1 фраза:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!