Roman Scherbina
3/7/2005 10:58:00 PM
S> ìÀÄÉ, ÞÅÇÏ ÏÎÏ ÏÔ ÍÅÎÑ ÈÏÞÅÔ?
S> ...
S> type
S> filetype = array [1..9,0..9] of array [1..9,0..9] of string;
S> var
S> dll : file of filetype;
S> ...
S> -------------------------------------------------------
S> [Error] : Unsupported Language feature: ''typed or untyped file''
Á ËÁËÁÑ ÄÅÌØÆÑ? 7-ÁÑ ÓÒÕÇÁÌÁÓØ ÎÅÍÎÏÇÏ ÐÏÄÒÕÇÏÍÕ:
[Error] : Type ''filetype'' needs finalization - not allowed in file
type
×ÏÔ ÏÐÉÓÁÎÉÅ ÏÛÉÂËÉ ÉÚ ÈÅÌÐÁ, ÍÏÖÅÔ ÐÏÍÏÖÅÔ ?
Certain types are treated specially by the compiler on an internal
basis
in that they must be correctly finalized to release any resources that
they might currently own. Because the compiler cannot determine
what type is actually stored in a record''s variant section at runtime,
it is not possible to guarantee that these special data types are
correctly finalized.
program Produce;
type
Data = record
name : string;
end;
var
inFile : file of Data;
begin
end.
String is one of those data types which need finalization, and as such
they cannot be stored in a File type.
program Solve;
type
Data = record
name : array [1..25] of Char;
end;
var
inFile : file of Data;
begin
end.
One simple solution, for the case of String, is to redeclare the type
as
an array of characters. For other cases which require finalization,
it becomes increasingly difficult to maintain a binary file structure
with standard Pascal features, such as ''file of''. In these situations,
it is probably easier to write specialized file I/O routines.
--
ÒÏÍÁÎ