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

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

edrive.narod.ru
from edrive.narod.ru More from this publisher
13.01.2015 Views

FileClose (f); } } 70 Следующий пример посвящен изменению содержимого файла. Вначале текст файла считывается в массив, который преобразуется в строку. В этой строке отыскивается заданное слово и заменяется фразой «[Удалено]», а файл заполняется пробелами. После этого измененная строка возвращается в файл. void Files3 () { AnsiString word = MyForm–>Edit1–>Text, file = MyForm–>Edit2–>Text, bText =""; try { int bFile = FileOpen (file, fmOpenReadWrite); int bLen = FileSeek (bFile, 0, 2); char *b = new char [bLen]; FileSeek (bFile, 0, 0); FileRead (bFile, b, bLen); bText =AnsiString (b, bLen); delete [] b; int index = bText.AnsiPos (word.c_str()); if (!index) { ShowMessage ("В файле нет такого слова"); FileClose (bFile); return; } bText.Delete (index, word.Length ()); bText.Insert ("[Удалено]", index); FileSeek (bFile, 0, 0); AnsiString c = AnsiString::StringOfChar (' ', bLen); FileWrite (bFile, c.c_str (), bLen); FileSeek (bFile, 0, 0); FileWrite (bFile, bText.c_str (), bText.Length ()); FileClose (bFile); } catch (...) { ShowMessage ("Ошибка файловой операции"); } ShowMessage (bText); } Пример удаления фрагмента, заданного в Edit1, из файла, в котором содержится указанная в Label1 фраза:

void _ _fastcall TForm1::DelFromFileClick (TObject *Sender) { AnsiString is = Label1–>Caption, what = Edit1–>Text, was = is; int f = is.AnsiPos (what.c_str ()); ShowMessage (is+ ' ' +IntToStr (is.Length ())); If (f) is.Delete (f, what.Length ()); ShowMessage (is + ' ' + IntToStr (is.Length ())); Label3–>Caption = is; f = FileOpen ("tempFile.txt", fmOpenWrite); if (f != –1) { is += AnsiString::StringOfChar (' ', was.Length ()); FileWrite (f, is.c_str (), is.Length ()); FileClose (f); } } 71 Еще один пример демонстрирует процесс поиска файла, в том числе с символом подстановки *, в текущей папке и в папке Windows: void Files4 () { char buffer[256]; GetWindowsDirectory (buffer, sizeof (buffer)); AnsiString file = FileSearch (MyForm–>Edit1–>Text, GetCurrentDir() + ";" + AnsiString (buffer)); if (file.IsEmpty ()) ShowMessage ("Нет файла " + MyForm–>Edit1–>Text); else ShowMessage ("Есть файл " + file + " !"); } Работа с графическими файлами К графическим компонентам, поддерживающим файловый обмен своими методами SaveToFile и LoadFromFile, относятся TPicture, TOLE- Graphic, TGraphic и производные от них классы. Рассмотрим несколько примеров: Пример использования графических файлов: // Картинки из файлов void __fastcall TForm1::GraphFilesClick (TObject *Sender){ AnsiString fName = "D:\\examples\\scan.bmp"; Image1–>Picture–>LoadFromFile (fName); Form1–>Icon–>LoadFromFile ("scan.ico"); Graphics::TBitmap *gb = new Graphics::TBitmap; gb–>LoadFromFile (fName); PaintBox1–>Canvas–>Draw (0, 0, gb); this–>Canvas–>CopyMode = cmSrcPaint;

void _ _fastcall TForm1::DelFromFileClick (TObject *Sender) {<br />

AnsiString is = Label1–>Caption, what = Edit1–>Text, was = is;<br />

int f = is.AnsiPos (what.c_str ());<br />

ShowMessage (is+ ' ' +IntToStr (is.Length ()));<br />

If (f) is.Delete (f, what.Length ());<br />

ShowMessage (is + ' ' + IntToStr (is.Length ()));<br />

Label3–>Caption = is;<br />

f = FileOpen ("tempFile.txt", fmOpenWrite);<br />

if (f != –1) {<br />

is += AnsiString::StringOfChar (' ', was.Length ());<br />

FileWrite (f, is.c_str (), is.Length ());<br />

FileClose (f);<br />

}<br />

}<br />

71<br />

Еще один пример демонстрирует процесс поиска файла, в том числе с<br />

символом подстановки *, в текущей папке и в папке Windows:<br />

void Files4 () {<br />

char buffer[256];<br />

GetWindowsDirectory (buffer, sizeof (buffer));<br />

AnsiString file = FileSearch (MyForm–>Edit1–>Text, GetCurrentDir() +<br />

";" + AnsiString (buffer));<br />

if (file.IsEmpty ()) ShowMessage ("Нет файла " + MyForm–>Edit1–>Text);<br />

else ShowMessage ("Есть файл " + file + " !");<br />

}<br />

Работа с графическими файлами<br />

К графическим компонентам, поддерживающим файловый обмен<br />

своими методами SaveToFile и LoadFromFile, относятся TPicture, TOLE-<br />

Graphic, TGraphic и производные от них классы. Рассмотрим несколько примеров:<br />

Пример использования графических файлов:<br />

// Картинки из файлов<br />

void __fastcall TForm1::GraphFilesClick (TObject *Sender){<br />

AnsiString fName = "D:\\examples\\scan.bmp";<br />

Image1–>Picture–>LoadFromFile (fName);<br />

Form1–>Icon–>LoadFromFile ("scan.ico");<br />

Graphics::TBitmap *gb = new Graphics::TBitmap;<br />

gb–>LoadFromFile (fName); PaintBox1–>Canvas–>Draw (0, 0, gb);<br />

this–>Canvas–>CopyMode = cmSrcPaint;

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

Saved successfully!

Ooh no, something went wrong!