Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.045 c
2-1173720065
GEN++
2007-03-12 20:21
2007.04.01
Problema s perezagryzkoy


15-1173477520
Reaktor
2007-03-10 00:58
2007.04.01
Компьютер тормоз


3-1168515637
Alexander_K
2007-01-11 14:40
2007.04.01
Подключение к Екселю как к БД через ADO


8-1154543074
ChainikDenis
2006-08-02 22:24
2007.04.01
Сграбить экран из под аппаратного ускорителя


5-1150709537
Shikaka
2006-06-19 13:32
2007.04.01
не могу зарегистрировать компонент карта(MAPxовский) в DT





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский