А вот с массивом Well будет немного посложнее. Дело в том, что массив Well — это не тип, а набор элементов типа TCard. Таких элементов в Well, очевидно, 5*5*PACK_TOTAL Тогда размер всего массива в байтах составит:

sizeof(TCard)*5*5*PACK_TOTAL

Адрес начала массива тоже определяется по-другому. Можно выяснить адрес его самого первого элемента (с индексами (0, 0, 0)) — &Well[0][0][0], но это несколько громоздко. В Си++ принято, что адресом любого массива будет просто упоминание этого массива — Well. Тогда соответствующий оператор записи в файл будет выглядеть следующим образом:

FileWrite(iFile, Well, sizeof(TCard)* 5 * 5 *PACK_TOTAL) ;

В качестве второго параметра (адреса начала блока байтов) указан адрес массива — Well.

h02331.jpg

is Чтобы получить адрес любого массива с произвольным числом измере-¦ ни и, «достаточно использовать в программе его имя. .

Контроль за ошибками

Каждую операцию вывода в файл, так же, как и его открытие, надо проверять — не возникла ли по каким-то причинам ошибка, например, если на диске нет свободного места. Функция FileWrite() в случае ошибки возвращает число (-1) — это и надо контролировать сразу за каждым вызовом соответствующей функции. Для этого в начале метода надо определить временную переменную:

int err;

Контролироваться корректность вывода будем так:

err = FileRead(iFile, Well,

sizeof(TCard)* 5 * 5 *PACK_TOTAL) ;

if( err == -1 )

{

ShowMessageC'Well" + BAD_OUTPUT_STR) ;

FileClose(iFile) ;

return ;

) В файле Text.h надо описать текстовую константу:

const AnsiString BAD_OUTPUT_STR = " не выводится";'

233