Головна сторінка
Top.Mail.Ru Яндекс.Метрика
Форум: "Основна";
Поточний архів: 2004.12.12;
Завантажити: [xml.tar.bz2];

Вниз

сохраніеніе record or class to binary Знайти схожі гілки


Maxim____   (2004-11-15 01:45) [0]

Вітаю!
Чув краєм вуха, що можна зберігати структури (а може бути і класи) як blob. Підкажіть де копати,
Відразу питання, що відбувається, якщо структура трохи змінилася?
Тут звичайно незамінний xml, але blob компактніше і непрозорий, що і потрібно.



Maxim____   (2004-11-15 19:20) [1]

люди добрі скажіть що-небудь по темі.



Суслик ©   (2004-11-15 19:24) [2]


> Чув краєм вуха, що можна зберігати структури (а може
> Бути і класи) як blob

в blob зберігати можна все що хочеш.

У загальному випадку просто так зберегти запис (відноситься також і до класу) в blob не можна, тому що вона може містити посилальні типи, наприклад довгі рядки.

Потрібно кожен елемент запису зберігати і читати окремо.



Rem ©   (2004-11-15 19:27) [3]

А в чому проблема?
record займає ділянку пам'яті.
Цю пам'ять і зберігайте.

>> якщо структура трохи змінилася?
Де змінилася?



Maxim____   (2004-11-16 01:06) [4]

> А в чому проблема?
> Record займає ділянку пам'яті.
> Цю пам'ять і зберігайте.

вибачте за необізнаність,
як це зробити?
або в якому розділі хелпа прочитати про те як це зробити?



Amoeba ©   (2004-11-16 11:37) [5]


> Rem © (15.11.04 19: 27) [3]
> А в чому проблема?
> Record займає ділянку пам'яті.
> Цю пам'ять і зберігайте.


А якщо серед полів записи є довгі рядки або динамічні масиви? Що тоді? Див. Суслик © (15.11.04 19: 24) [2]



PVOzerski ©   (2004-11-16 12:13) [6]

IMHO, можна подумати про використання TStream.ReadComponent і TStream.WriteComponent. Природно, об'єкти і властивості підійдуть вже не будь-які.



Maxim____   (2004-11-26 16:17) [7]

структура у мене складна з динамічними масивами і ін.
але зберігати її дуже треба ..

я не знаю як отримати доступ до бінарним увазі простий record
наприклад складається з чисел і рядків, без масивів?

друге питання.
як зробити перерахування елементів запису або класу.
чи можливо таке
if tclass (). elements [0] is integer then ... :)
або це маячня?

чекаю ваших розумних думок!



Digitman ©   (2004-11-26 16:25) [8]


> Maxim____ (26.11.04 16: 17) [7]


впору кидати нафіх "батонобросаніе" і сідати за "розумні" книжки.
і раз і назавжди усвідомити для себе, ЩО насправді представляє з себе вміст пеоременной того чи іншого типу.

без цього - нікуди.



Ken   (2004-11-26 16:34) [9]


> Структура у мене складна з динамічними масивами і ін.
> Але зберігати її дуже треба ..

Якщо дуже треба зберегти - спробуй привести свою стуктуру до фіксрованному розміром, при етом фіксуй розмір кожної змінної!

Всю ету структуру описовий в тип "запис" запис і спокійно його зберігай! Savetofile ... LoadfromFile

Але врахуй, що тобі треба щоб кожна змінна в типі запису мала фіксований розмір, тобто тобі придеться відмовитися від змін типу String (використовую String [n], де n - його довжина), від array of byte (придеться використовувати array [0 ..n] of byte) і тд.



cae ©   (2004-11-26 16:51) [10]

Ось, для прикладу:
type TMyClass = class Field1: Integer; Field2: Double; Field3: String; procedure WriteStream (Strm: TStream); procedure ReadStream (Strm: TStream); end; ................... procedure TMyClass.WriteStream (Strm: TStream); var Writer: TWriter; begin Writer: = TWriter.Create (Strm, 4096); try with Writer do begin WriteInteger (Field1); WriteFloat (Field2); WriteString (Field3); end; // with Writer finally Writer.Free; end; end; procedure TMyClass.ReadStream (Strm: TStream); var Reader: TReader; begin Reader: = TReader.Create (Strm, 4096); try with Reader do begin Field1: = ReadInteger; Field2: = ReadFloat; Field3: = ReadString; end; // with Reader finally Reader.Free; end; end;



сторінки: 1 вся гілка

Форум: "Основна";
Поточний архів: 2004.12.12;
Завантажити: [xml.tar.bz2];

Вгору





Пам'ять: 0.58 MB
Час: 0.061 c
1-1101631705
Yus
2004-11-28 11:48
2004.12.12
ListView


4-1098861435
Прип
2004-10-27 11:17
2004.12.12
RegDeleteKey - як видалити ключ з внутрішніми ключами


6-1096623637
TUser
2004-10-01 13:40
2004.12.12
ICS під XP


3-1100166911
ALex11
2004-11-11 12:55
2004.12.12
Wer ist das: Insufficient disk space. ???


14-1101103150
швидкість
2004-11-22 08:59
2004.12.12
Управління БД SQL-запитами





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в'єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська