Главная страница
    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.45 MB
Время: 0.126 c
2-1173249432
Zergik
2007-03-07 09:37
2007.04.01
Помогите с RaveReport


1-1170616649
flaxe
2007-02-04 22:17
2007.04.01
Bitmap в ICO


2-1173152733
Интересующийся
2007-03-06 06:45
2007.04.01
Два вопроса про форму


6-1161069829
skosenok
2006-10-17 11:23
2007.04.01
Как задать TimeOut на TcpClient.Connect


15-1173171766
vajo
2007-03-06 12:02
2007.04.01
The Bat





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский