Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Типизированые файлы: [D7]


Луарвик ©   (2004-08-26 14:44:00) 

Вот объявляю тип:
type
 ftemp = record
   vars: TStrings;
   Desk: array [1..255] of char;
 end;
Далее пытаюсь записать в тип. файл:
procedure TForm1.Button2Click(Sender: TObject);
var
 f: file of ftemp;
 fc: ftemp;
begin
 AssignFile(f, 'FirstTempFile.aff');
 rewrite(f);
 fc.Desk[1]:='M';
 fc.vars.Text:='2';
 write(f, fc);
 CloseFile(f);
end;
Получаю вот это:
Access violation at address...


Луарвик   (2004-08-26 15:18:00) [1]

Короче, слишком уж сложно :)
Буду ini юзать!


Суслик   (2004-08-26 15:16:00) [2]

да...
время идет
люди не меняются
книги и примеры кода коих масса так и не научились читать :(


Гаврила   (2004-08-26 15:11:00) [3]

Берем TFileStream, пишем
количество записей (integer)
далее в цикле
 длину стринглиста
 сам стринглист (vars.Text)
 Длину отдельной строки(integer)
 Саму отдельную строку

читаем из файла аналогично


Семен Сорокин   (2004-08-26 15:10:00) [4]


> Луарвик   (26.08.04 15:07) [10]
> Да нет, же мне надо чтоб файл состоял из записей, в каждой
> один список строк, и одна строка.
> А TStringList пробовал использовать как тот самый список
> строк в файле...


и на елку залезть, и ж..у не ободрать (с) пословица.

пиши свой класс, тебе для каждой записи надо будет хранить кол-во символов твоей строки (списка строк)... Удачи.


Луарвик   (2004-08-26 15:07:00) [5]

Да нет, же мне надо чтоб файл состоял из записей, в каждой один список строк, и одна строка.
А TStringList пробовал использовать как тот самый список строк в файле...


Семен Сорокин   (2004-08-26 15:04:00) [6]


> Луарвик   (26.08.04 14:58) [7]
> [6]: Только что попробовал TStringList - та же ошибка.

странно у меня работает, может не так пробуешь?
with TStringList.Create do
 try
  Add('1');
  Add('2');
  Add('3');
  SaveToFile('C:\myFile.txt')
 finally
  Free
 end


clickmaker   (2004-08-26 15:03:00) [7]


> Только что попробовал TStringList - та же ошибка

как пробовал?


Луарвик   (2004-08-26 14:58:00) [8]

На счет [4], мне обязательно надо, чтоб был список строк.
[6]: Только что попробовал TStringList - та же ошибка.


Гаврила   (2004-08-26 14:53:00) [9]

НУ например руками записать...
Например TFileStream попользовать
вариантов много


Семен Сорокин   (2004-08-26 14:53:00) [10]

ftemp = record
  vars: TStrings;
  Desk: array [1..255] of char;
end;


у тебя одни символы и строки, используй либо TStringList, либо TStringStream - там есть встроенные методы: LoadFromFile, SaveToFile


clickmaker   (2004-08-26 14:52:00) [11]

а кто тебе мешает объявить vars как array of char ?


Луарвик   (2004-08-26 14:51:00) [12]

Мда? А как тогда ваще можно записать данные a файл???


Семен Сорокин   (2004-08-26 14:48:00) [13]

To declare a file type, use the syntax

type fileTypeName = file of type

where fileTypeName is any valid identifier and type is a fixed-size type. Pointer types--whether implicit or explicit--are not allowed, so a file cannot contain dynamic arrays, long strings, classes, objects, pointers, variants, other files, or structured types that contain any of these.


clickmaker   (2004-08-26 14:46:00) [14]


>  fc.vars.Text:='2';

а где создание fc?
и вообще, не очень понятно, зачем записывать в файл адресстринглиста. Ведь при последующем чтении он может уже и не иметь смысла


Наверх

Титульная страница Поиск, карта сайта Написать письмо