Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.28;
Скачать: CL | DM;

Вниз

Как сохранить путь к файлу в типизированном файле?   Найти похожие ветки 

 
AndrewK ©   (2002-11-19 10:55) [0]

Уважаемые мастаки, такой вопрос. У меня есть две структуры:

tRec1 = record
X : Integer;
Y : Integer;
Path : String;
end;

tRec2 = record
X : Integer;
Y : Integer;
Width : Integer;
Height : Integer;
Path : String;
end;

В них сохраняется информация о свойствах двух классов tClass1 и tClass2 соответственно. Экземпляров этих классов может быть несколько. Надо сохранить информацию обо всех этих объектах в файле. Для работы использую метод WriteBuffer из TFileStream.

Делаю так:

...
var Rec1 : tRec1;
Rec2 : tRec2;
Stream : TStream;
begin
Stream := TFileStream.Create("d:\test.tst",fmCreate);
...
Rec1 := ..... // Заполняем структуру Rec1 свойствами Class1
Stream.WriteBuffer(Rec1, SizeOf(tRec1));
Rec2 := ..... // Заполняем структуру Rec2 свойствами Class2
Stream.WriteBuffer(Rec2, SizeOf(tRec2));
...
Stream.Free;
end;


Строки не сохраняются. Если в tRecX заменяю String на ShortString, то все работает нормально. Но по логике эта технология будет работать только если путь в структуре будет меньше 256 символов.

Как мне сохранить строку с длиной более 256 символов в типизированном файле?


 
Юрий Зотов ©   (2002-11-19 11:14) [1]

String - это указатель. Вы записываете адреса строк, а не сами строки. Используйте, что-то типа этого:

Stream.WriteBuffer(Rec1.X, SizeOf(Integer));
Stream.WriteBuffer(Rec1.Y, SizeOf(Integer));
Stream.WriteBuffer(Length(Rec1.Path), SizeOf(Integer));
Stream.WriteBuffer(Rec1.Path[1], Length(Rec1.Path)+1);


 
han_malign ©   (2002-11-19 11:17) [2]

кстати, в виндах, больше 251 символа в пути файла быть не может, лично проверял под 98 и 2000



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

Текущий архив: 2002.11.28;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.013 c
3-92889
Ильдар
2002-11-09 17:15
2002.11.28
Как восстановить диапазон таблицы Paradox?


14-93185
Ketmar
2002-11-08 17:36
2002.11.28
OpenGL: определение того, был ил отрисован хоть один пиксел...


1-93136
MasterVovan
2002-11-17 06:51
2002.11.28
Проблемма с размером формы.


1-93082
BOBBY
2002-11-16 16:12
2002.11.28
процедуры без класса tform


6-93166
kofman
2002-10-02 00:19
2002.11.28
Как через NMHTTP работать с firewall`ом?