Головна сторінка
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.59 MB
Час: 0.071 c
1-1101674331
Bobby Digital
2004-11-28 23:38
2004.12.12
Код Віндовс?


4-1099076434
Redhopter
2004-10-29 23:00
2004.12.12
Про перехоплення повідомлень


9-1091858675
dimodim
2004-08-07 10:04
2004.12.12
About анімація 3д моделей


14-1101233276
DillerXX
2004-11-23 21:07
2004.12.12
і знову мій гвинт :(


14-1101197595
RainKM
2004-11-23 11:13
2004.12.12
samsung c-200





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