Вниз
Скачать: CL | DM;

Сохранение файла   Найти похожие ветки 

← →
Chaval'   (2007-03-07 20:36) [0]

type
 TTestRect = Record
   AQuesr:array[1..60] of TStrings;
   AAnsVar:array[1..60] of Tstrings;
   BQuest:array[1..10] of TStrings;
   BAnsVar:array[1..10] of TStrings;
   BAns:array[1..10] of String;
   TestName:String;
   TestSpring:String;
   ACount,BCount:Integer;
 end;
var
       f:file of TTestRect


не могу создать файл, содержащий данные типа TTestRect, и записать в него переменную типа TTestRect?


← →
RASkov   (2007-03-07 20:45) [1]

> [0] Chaval"   (07.03.07 20:36)

Такой тип не подойдет для типизированного файла.
Используй vаr f: File; или пересмотри структуру записи... со строками справиться можно, но придется избавиться от TStrings.


← →
Джо ©   (2007-03-07 20:49) [2]

[0] Chaval"  

Такая запись напрашивается быть классом. Со своими методами чтения/записи. Которые придется написать.


← →
Джо ©   (2007-03-07 21:03) [3]

Вот наброски реализации для одного из типичных подходов с реализованной записью.

unit Unit4;

interface
uses SysUtils, Classes;

type
TTestClass = class
private
  FAQuesr:array[1..60] of TStrings;
  FAAnsVar:array[1..60] of Tstrings;
  FBQuest:array[1..10] of TStrings;
  FBAnsVar:array[1..10] of TStrings;
  FBAns:array[1..10] of String;
  FTestName:String;
  FTestSpring:String;
  FACount,BCount:Integer;
  procedure WriteString (const S: string; AStream: TStream);
  procedure WriteStrings (Strings: TStrings; AStream: TStream);
public
  procedure SaveToFile (AFileName: string);
  procedure SaveToStream (AStream: TStream);
end;

implementation

{ TTestClass }

procedure TTestClass.SaveToFile(AFileName: string);
var
 Fs: TFileStream;
begin
 Fs := TFileStream.Create(AFileName,fmCreate);
 try
   SaveToStream(Fs);
 finally
   Fs.Free
 end;
end;

procedure TTestClass.SaveToStream(AStream: TStream);
var
 I: Integer;
begin
 for I := Low(FAQuesr) to High(FAQuesr) do
   WriteStrings(FAQuesr[I],AStream);

 for I := Low(FAAnsVar) to High(FAAnsVar) do
   WriteStrings(FAAnsVar[I],AStream);

 for I := Low(FBQuest) to High(FBQuest) do
   WriteStrings(FBQuest[I],AStream);

 //
 // Аналогично поступаем с другими массивами TStrings
 //

 WriteString(FTestName,AStream);

 //
 // Аналогично поступаем с другими строками
 //

 AStream.Write(FACount,SizeOf(FACount));

 //
 // Аналогично поступаем с другими Integer
 //
end;

procedure TTestClass.WriteString(const S: string; AStream: TStream);
var
 Ln: Integer;
begin
 Ln := Length(S);
 AStream.Write(Ln,SizeOf(Ln)); // запишем длину строки
 AStream.Write(S[1],Ln); // теперь саму строку
end;

procedure TTestClass.WriteStrings(Strings: TStrings; AStream: TStream);
begin
 WriteString(Strings.Text,AStream);
end;

end.


Осталось разобраться с принципом и дописать класс. В частности, реализовать загрузку (LoadFromStream, LoadFromFile).


← →
Chaval'   (2007-03-07 21:10) [4]

Спасибо


← →
Chaval'   (2007-03-13 20:19) [5]

Подскажите как загрузить, а то у меня не получается



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.04 c
2-1173795490
vegarulez
2007-03-13 17:18
2007.04.01
Как создать несколько групп из радиобатонов?


15-1173172002
ocean
2007-03-06 12:06
2007.04.01
Ретушь


4-1163527509
Павел12345
2006-11-14 21:05
2007.04.01
Как получить HWND того элемента, по которому кликнули мышью?


15-1173064617
Slider007
2007-03-05 06:16
2007.04.01
С днем рождения ! 5 марта


2-1173549871
Washington
2007-03-10 21:04
2007.04.01
Создание объектов




   Наверх