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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.011 c
1-92973
DVM
2002-11-15 21:45
2002.11.28
Как узнать что открылось новое окно?


14-93204
PaRL
2002-11-09 13:09
2002.11.28
LPARAM - Этап 1 - Обучение...


1-93093
Cker
2002-11-16 23:14
2002.11.28
Разъясните пожалуйста.


1-93049
menel
2002-11-19 15:23
2002.11.28
Как в ListBox загрузить из текстового файла...


14-93212
VID
2002-11-10 01:38
2002.11.28
KGSDBMediaPlayer component





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