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

Вниз

Можно ли у произвольного рекорда узнать названия полей и их типы?   Найти похожие ветки 

 
Land   (2008-02-11 02:23) [0]

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


 
ketmar ©   (2008-02-11 02:28) [1]

используй классы.

---
Understanding is not required. Only obedience.


 
Land   (2008-02-11 02:30) [2]

Так всем и передам. Пусть все используют классы.


 
ketmar ©   (2008-02-11 02:32) [3]

>[2] Land (2008-02-11 02:30:00)
молодец. так и передай.

---
Understanding is not required. Only obedience.


 
Германн ©   (2008-02-11 02:39) [4]


> Land   (11.02.08 02:23)

Ещё передай, что те кто "хочет написать функцию, чтобы они ей произвольный рекорд, а она им текстом расписывает все его поля и их значения" - полные идиоты.
При передаче можешь сослаться на меня. :)))


 
Land   (2008-02-11 03:02) [5]

Передавайте всё сами, а вопрос остаётся стоять.


 
wicked ©   (2008-02-11 03:05) [6]

в делфи так напрямую нельзя
говорят, что так можно делать в точкаНЕТ, джаве и обероне...


 
Германн ©   (2008-02-11 03:12) [7]


> Land   (11.02.08 03:02) [5]
>
> Передавайте всё сами, а вопрос остаётся стоять.
>

Ну и пусть стоит вопрос. А кому он мешает? Мне лично - не мешает.
P.S. Мало ли что, где стоит. :)
P.P.S. Хочешь написать функцию - напиши, если "такой умный" :)


 
boa_kaa ©   (2008-02-11 03:19) [8]


> wicked ©   (11.02.08 03:05) [6]

(облизываясь) можно... еще как... :)


 
ferr   (2008-02-11 04:05) [9]

интроспекцией и рефлексией славятся скриптовые языки..


 
Произвольный рекорд   (2008-02-11 09:06) [10]

Удачи ;)

 TVarData = packed record
   VType: Word;
   Reserved1, Reserved2, Reserved3: Word;
   case Integer of
     varSmallint: (VSmallint: Smallint);
     varInteger:  (VInteger: Integer);
     varSingle:   (VSingle: Single);
     varDouble:   (VDouble: Double);
     varCurrency: (VCurrency: Currency);
     varDate:     (VDate: Double);
     varOleStr:   (VOleStr: PWideChar);
     varDispatch: (VDispatch: Pointer);
     varError:    (VError: LongWord);
     varBoolean:  (VBoolean: WordBool);
     varUnknown:  (VUnknown: Pointer);
     varByte:     (VByte: Byte);
     varString:   (VString: Pointer);
     varAny:      (VAny: Pointer);
     varArray:    (VArray: PVarArray);
     varByRef:    (VPointer: Pointer);
 end;


 
@!!ex ©   (2008-02-11 09:20) [11]

Автор, я отвечу на твой вопрос после того, как ты мне расскажешь, как собираешься в функцию передавать проивзольный рекорд.


 
MsGuns ©   (2008-02-11 09:21) [12]

>wicked ©   (11.02.08 03:05) [6]
>в делфи так напрямую нельзя

Хоть прямо, хоть криво узнать нельзя в любом компилляторе. А вот в интерпретаторе можно.

Автору сабжа контрвопрос: можно ли по купленной в маркете свиной вырезке узнать имя кабанчика, из которого ее "вырезали" ?
И вдогонку - а зачем собственно ?


 
Anatoly Podgoretsky ©   (2008-02-11 10:18) [13]

> Германн  (11.02.2008 03:12:07)  [7]

Когда стоит то не мешает.


 
Dmitry S ©   (2008-02-11 10:32) [14]


> @!!ex ©   (11.02.08 09:20) [11]

расскажи мне:

function GetRecordInfo(ARecord: Pointer; ARecordSize: Integer):string;

Передавать так:

GetRecordInfo(@SomeRecord, SizeOf(SomeRecord));


 
Игорь Шевченко ©   (2008-02-11 10:34) [15]


> Автор, я отвечу на твой вопрос после того, как ты мне расскажешь,
>  как собираешься в функцию передавать проивзольный рекорд.
>


через var ?


 
Dib@zol ©   (2008-02-11 10:36) [16]

> [14] Dmitry S ©   (11.02.08 10:32)

Нет, это-то понятно. Только как трактовать эти данные? Какие байты из этого куска памяти должны "сложиться" в WORD"ы, а какие - в DWORD"ы, или в знаковые типы?


 
Dib@zol ©   (2008-02-11 10:37) [17]

Ах да. Можно стоп-битами :)


 
Dmitry S ©   (2008-02-11 10:38) [18]


> Нет, это-то понятно. Только как трактовать эти данные? Какие
> байты из этого куска памяти должны "сложиться" в WORD"ы,
>  а какие - в DWORD"ы, или в знаковые типы?

@!!ex сейчас покажет как :)


 
Skyle ©   (2008-02-11 10:47) [19]

Удалено модератором


 
Dib@zol ©   (2008-02-11 10:48) [20]

> [0] Land   (11.02.08 02:23)

Вощем так. Каждый RECORD в памяти хранится как цепочка байтов без всяких условных обозначений. "Разбивает" её на отдельные значения сама программа. И если не влезать в программный код и не искать дизассемблером что-то типа MOVZX EAX, WORD PTR [EBP+2], то задача в общем случае не решаема. Хотя в принципе, если уж так надо, то можно в эту цепочку действительно добавить по два стоп-бита после каждого байта: первый отвечает за знаковость типа, второй - за необходимость отделения, то есть ...1010 1101 11... означает, что это один байт знакового типа (shortInt).


 
Dmitry S ©   (2008-02-11 10:50) [21]


> Dib@zol ©   (11.02.08 10:48) [20]

А как же строки?


 
Skyle ©   (2008-02-11 10:50) [22]


> Dib@zol ©   (11.02.08 10:48) [20]

По-моему правильнее будет не заниматься хиромантией, а использовать наследников TPersistent (или свои классы с M+).


 
Dib@zol ©   (2008-02-11 10:52) [23]

> [21] Dmitry S ©   (11.02.08 10:50)

А так же. Строки - суть указатели. А они - типа DWORD. Признаком указателя может быть, напр, включённый стоп-бит в третьем по счёту байте. Это будет указанием, что надо-таки прочесть не три а четыре байта, но что это не просто число, а пойнтер.


 
Dib@zol ©   (2008-02-11 10:54) [24]

> [22] Skyle ©   (11.02.08 10:50)

Ну, задача была поставлена именно для записей, я и привёл пример того, что можно сотворить конкретно для записей. Не нравится - не пользуйте :) Я вот лично низашто не буду так делать :)


 
Игорь Шевченко ©   (2008-02-11 11:19) [25]

Кулибин в гробу от зависти перевернулся


 
Dib@zol ©   (2008-02-11 11:20) [26]

> [25] Игорь Шевченко ©   (11.02.08 11:19)

Откуда столько злобы в мой адрес?


 
Palladin ©   (2008-02-11 11:24) [27]

программирование не терпит предположений понимашь...


 
Palladin ©   (2008-02-11 11:24) [28]

иначе лучшими программистами будут гадалки...


 
Dib@zol ©   (2008-02-11 11:29) [29]

А тут и не предположения будут. А точные данные :)
Правда придёца всю систему работы с RECORD-ами перекраивать... Однако меня это уже не касаецо. Моё дело предложить =)


 
Marser ©   (2008-02-11 11:47) [30]


> Однако меня это уже не касаецо. Моё дело предложить =)

Это как в анекдоте про ёжиков и дядю Филина, как, мол, нам сделать так, чтобы нас лиса не кушала? - Вы, ёжики, себе крылья отрастите и лиса вым будет нестрашна. - Ура, классно! Пошли ёжики довой и на полпути их осенило, пришлось вернуться: - дядя Филин, а как же нам их отрастить-то? - Э-э, ёжики, это уж вам думать, как, а моё дело стратегия.


 
Skyle ©   (2008-02-11 11:48) [31]

Ну тогда я тоже предложу....
В любом входящем рекорде первое поле - длина описание, второе - указатель на него. То есть все рекорды начинаются с
TMyBaseRecord = record
 DescLen : Word;
 Desc : String;
 ......

а все проблемы с памятью - за счёт заведения.


 
Kerk ©   (2008-02-11 11:50) [32]


> Dib@zol ©   (11.02.08 11:20) [26]
> > [25] Игорь Шевченко ©   (11.02.08 11:19)
>
> Откуда столько злобы в мой адрес?

Это все от зависти


 
Palladin ©   (2008-02-11 11:51) [33]

...вот так слово за слово и пршли они к RTTI...


 
Palladin ©   (2008-02-11 11:56) [34]


> Можно ли у произвольного рекорда узнать названия полей и
> их типы?

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


 
DiamondShark ©   (2008-02-11 12:11) [35]


> MsGuns ©   (11.02.08 09:21) [12]
>
> Хоть прямо, хоть криво узнать нельзя в любом компилляторе.
>  А вот в интерпретаторе можно.

Поражающее глубиной невежества заявление.


 
Anatoly Podgoretsky ©   (2008-02-11 12:14) [36]

> Dib@zol  (11.02.2008 11:29:29)  [29]

Твоя задача наложить кучу в углу и убежать.


 
Ins ©   (2008-02-11 12:20) [37]

Автору:

Для того, чтобы решить вашу задачу, доджны соблюдаться два условия:
1. Для рекордов должна генерироваться RTTI, содержащая информацию о ее полях и их типах.
2. Должна существовать возможность, имея ссылку на рекорд в памяти, получить ссылку на соответствующую ей RTTI.

Для рекордов в Delphi ни одно из этих условий не выполняется, зато для классов:
1. Для всех классов, скомпилированными с директивой $M+ или их потомков (в VCL - это все потомки класса TPersistent) генерируется RTTI об опубликованных свойствах.
2. У класса TObject, а соответствено у всех его потомков, есть метод ClassInfo, позволяющий по объектной ссылке получить указатель на RTTI.


 
Sandman25   (2008-02-11 12:25) [38]

DiamondShark ©   (11.02.08 12:11) [35]

Формально он прав.
Потому как "компилЛяторов" не существует :)


 
Dib@zol ©   (2008-02-11 12:55) [39]

> Твоя задача наложить кучу в углу и убежать.

Высказывание, достойное убелённого сединами старца :\

Вот одного не понимаю: чего ж я такого сказал, что это подняло волну ненависти?


 
Kerk ©   (2008-02-11 13:07) [40]


> DiamondShark ©   (11.02.08 12:11) [35]
> Sandman25   (11.02.08 12:25) [38]

Осторожнее, сейчас он вам про люмпенов расскажет :))


 
Sandman25   (2008-02-11 13:10) [41]

Kerk ©   (11.02.08 13:07) [40]

Главное, чтобы на национальность не перешел :)


 
Anatoly Podgoretsky ©   (2008-02-11 13:22) [42]

> Dib@zol  (11.02.2008 12:55:39)  [39]

Ненависти?
Много о себе думаешь!


 
ketmar ©   (2008-02-11 15:48) [43]

>[39] Dib@zol © (2008-02-11 12:55:00)
какой ненависти? здорового смеха.

---
Understanding is not required. Only obedience.


 
Семеныч   (2008-02-11 16:29) [44]

И правда - че налетели на парня? Ну, неточно он выразился, пусть даже и ошибся, пусть даже и не знает чего-то - так объясните, поправьте... если в лом - просто промолчите... а при чем тут куча в углу?

Странно... неужто и в жизни общение на том же уровне? Вряд ли ведь.


 
antonn ©   (2008-02-11 16:35) [45]

мдя... все умные, остальные дураки, поэтому можно плюнуть в собеседника фразой, кратко характеризующее его умственные способности, и лишь немного говорящей, что автор не прав (просто не прав, а не где именно неправ и почему неправ). Продолжайте в том же духе, хамье.


 
Palladin ©   (2008-02-11 16:36) [46]

а я за свободу слова!


 
Игорь Шевченко ©   (2008-02-11 17:16) [47]


> а я за свободу слова!


Я тоже! Но не всякого...


 
Palladin ©   (2008-02-11 17:18) [48]

так в том то и дело, я еще и за рамки приличия! :)


 
Ins ©   (2008-02-11 17:49) [49]


> И правда - че налетели на парня? Ну, неточно он выразился,
>  пусть даже и ошибся, пусть даже и не знает чего-то - так
> объясните, поправьте... если в лом - просто промолчите..
> . а при чем тут куча в углу?


Поддерживаю. Уверен, что большинство посетителей форума в свои 16 лет были далеки даже до этого уровня. Я уж не говорю просто про желание учится.


 
Игорь Шевченко ©   (2008-02-11 17:56) [50]

http://ln.com.ua/~openxs/articles/smart-questions-ru.html


 
TUser ©   (2008-02-11 19:01) [51]

таскай с собой исходники и парсь. Или используй класчсы и RTTI.


 
@!!ex ©   (2008-02-11 19:52) [52]

> [14] Dmitry S ©   (11.02.08 10:32)

Это передача указателя на память содержащюю данные рекорда, а я просил рекорд. Зачем нам данные?


 
Ins ©   (2008-02-11 21:12) [53]


> Это передача указателя на память содержащюю данные рекорда,
> а я просил рекорд.


А какая разница? Мы когда передаем строки - тоже передаем указатель, когда объекты - тоже. Передаем параметр по ссылке (var) - тоже. Кстати, помощью var можно можно объявить процедуру с нетипизированным параметром и передавать туда что угодно, см. например FreeAndNil. Так что не суть...


 
Sapersky   (2008-02-11 21:47) [54]

Для того, чтобы решить вашу задачу, доджны соблюдаться два условия:
1. Для рекордов должна генерироваться RTTI, содержащая информацию о ее полях и их типах.
2. Должна существовать возможность, имея ссылку на рекорд в памяти, получить ссылку на соответствующую ей RTTI.
Для рекордов в Delphi ни одно из этих условий не выполняется


Для рекордов, содержащих типы с управляемым временем жизни, эти условия отчасти выполняются. Компилятору приходится хранить некую "внутренюю RTTI", дабы корректно их инициализировать/копировать/финализировать. Получить эту RTTI можно, но она весьма лаконична - хранится описание ТОЛЬКО managed-полей. Так что, хотя в общем случае задача действительно не решаема, но в частном можно, например, сделать все поля строками или вариантами (на что, вероятно, намекали в [10]). Неэффективно? Дык, моё дело предложить... :)

Игорь Шевченко ©   (11.02.08 17:56) [50]
http://ln.com.ua/~openxs/articles/smart-questions-ru.html


"С другой стороны, иногда можно встретиться с грубостью и вызовом, не имеющими никаких видимых оснований. Обратная сторона этой медали в том, что такая реакция является вполне приемлемой формой постановки на место действительных грубиянов, - мы отсекаем их недостойное поведение остро отточенным словесным скальпелем".

У меня сложилось впечатление, что в новейшей истории Дельфимастера примеров, когда грубить начинает именно задающий вопрос... вряд ли, конечно, совсем нет, но раз в 10 меньше, чем противоположных.
Видимо, грубостью теперь считается уже сам факт задания вопроса: как посмел не воспользоваться хелпом/гуглем? как посмел не знать тривиальных вещей? как посмел не родиться старым и мудрым? короче, ты виноват уж тем, что хочется мне кушать.
Если вы считаете такой подход нормальным - не надо прикрываться ссылками на мануалы для "новичков с  гиперчувствительной душой". Следует честно отвечать всех возмущённым: этот форум существует для развлечения кучки ганнибалов-лектеров, которые каждого встречного готовы располосовать "остро отточенным словесным скальпелем".
Ну или цитировать следующий после скальпелей абзац.


 
VirEx ©   (2008-02-11 22:05) [55]

Удалено модератором
Примечание: Offtopic


 
ketmar ©   (2008-02-11 22:14) [56]

>[54] Sapersky (2008-02-11 21:47:00)
>как посмел не воспользоваться хелпом/гуглем?

ествственно. за это надо бить, и больно. если неко ленится потратить своё время на ковыряние в хэлпе, но не ленится задать совершенно идиотский вопрос — я лично начинаю сожалеть, что правилами запрещён мат.

тем более, в очень многих «грубых» постах заключается ответ на вопрос (или направление для поиска). по крайней мере я обычно отвечаю именно так. тут уж пардон — если вопрошающему лениво читать справку/гугль, то мне лениво разжёвывать, я тоже желаю получить удовольствие путём «ответа намёком». или развлекаться за чужой счёт позволено только «несчастным детям-недоучкам»?

---
Understanding is not required. Only obedience.


 
Ins ©   (2008-02-11 22:14) [57]


> Для рекордов, содержащих типы с управляемым временем жизни,
> эти условия отчасти выполняются. Компилятору приходится
> хранить некую "внутренюю RTTI", дабы корректно их инициализировать/копировать/финализировать.
> Получить эту RTTI можно, но она весьма лаконична - хранится
> описание ТОЛЬКО managed-полей. Так что, хотя в общем случае
> задача действительно не решаема, но в частном можно, например,
> сделать все поля строками или вариантами (на что, вероятно,
> намекали в [10]). Неэффективно? Дык, моё дело предложить...
> :)


Да, я в курсе. В юните System есть тип TFieldTable, который хранит информацию о финализируемых полях структуры. Используется в Dispose, а также подобная информация хранится в InitTable классов. Таким образом, когда экземпляр класса уничтожается, он финализируется подобно record-у. Правда имя поля уже не вытащить никак... И второе условие не выполняется, но можно обойти - указатель на структуру TFieldTable также передавать в функцию. Это если тип record-а известен на этапе компиляции. Иначе - увы. :(


 
ketmar ©   (2008-02-11 22:31) [58]

>[57] Ins © (2008-02-11 22:14:00)
>Это если тип record-а известен на этапе компиляции. Иначе — увы. :(

отчего же? если обязать непосредственно перед вызовом функции делать New() и Dispose(), а внутри самой функции глянуть адрес возврата и проанализировать предыдущий асм-код, то можно украсть у Dispose() кое-что.

зыж хихик.

---
Understanding is not required. Only obedience.


 
Семеныч   (2008-02-12 00:57) [59]

> ketmar ©   (11.02.08 22:31) [58]

Вот видишь? Ведь можешь, когда захочешь.
:o)


 
Германн ©   (2008-02-12 00:59) [60]


> Sapersky   (11.02.08 21:47) [54]


> У меня сложилось впечатление, что в новейшей истории Дельфимастера
> примеров, когда грубить начинает именно задающий вопрос.
> .. вряд ли, конечно, совсем нет, но раз в 10 меньше, чем
> противоположных.
> Видимо, грубостью теперь считается уже сам факт задания
> вопроса

А я собс-но и не заметил какой-то грубости допущенной к автору вопроса. Были некие претензии к одному из ответивших (может слишком резкие, может нет). А к собственно к автору их не было, за исключением, может быть моего P.P.S. в [7].  А что мне еще оставалось? Если на вполне спокойные и адекватные ответы автору [1], [3] и [4] последовали замечания автора [2] и [5]. Так кто же всё-таки хам?


 
Германн ©   (2008-02-12 01:04) [61]


> Семеныч   (12.02.08 00:57) [59]

Дык ведь Дарк всегда (или почти всегда) знает чего он хочет. И всегда (или почти всегда) знает что он может. Остальные варианты входят в множество описанное в тосте про козу и дом. (с) "Кавказская пленница"


 
Семеныч   (2008-02-12 01:29) [62]

> Германн ©   (12.02.08 00:59) [60]
> Так кто же всё-таки хам?

Есть предложение, подкупающее своей новизной и оригинальностью - отказаться от решения этого важнейшего вопроса. Навсегда. И всем.

Ну, всем, конечно, не получится - но хотя бы тем, кто себя уважает и считает умными.

Может, тогда и сам вопрос потихоньку исчезнет? Ведь многие же хотят себя уважать и считать умными?

Если не все...
:о)

> Германн ©   (12.02.08 01:04) [61]
> Дык ведь Дарк всегда (или почти всегда) знает чего он хочет.

Всегда этого не знает никто. Даже сыны юристов.

А Дарк еще и сам от себя пытается скрывать... на полпути он еще... от NOBISCUM уже ушел, а к VOBISCUM еще не пришел... хотя идет потихоньку.

И придет. А куда ему с подводной лодки деваться-то?
:о)


 
ketmar ©   (2008-02-12 01:45) [63]

>[62] Семеныч (2008-02-12 01:29:00)
>от NOBISCUM уже ушел

с чего ты так решил? с того, что я подпись сменил? с эгрегором я не расплевался и вполне комплементарен.

>на полпути он еще
это вообще классно. у бесконечного пути есть чёткая половина? O_o

---
Understanding is not required. Only obedience.


 
имя   (2008-02-12 02:01) [64]

Удалено модератором


 
Семеныч   (2008-02-12 02:05) [65]

> ketmar ©   (12.02.08 01:45) [63]

Во... я ж говорю - сам от себя скрываешь. А ты взял - да и подтвердил.
:о)


 
ketmar ©   (2008-02-12 02:32) [66]

>[65] Семеныч (2008-02-12 02:05:00)
кто на ком стоял? O_o

---
Understanding is not required. Only obedience.


 
Германн ©   (2008-02-12 07:07) [67]


> Семеныч   (12.02.08 01:29) [62]
>
> > Германн ©   (12.02.08 00:59) [60]
> > Так кто же всё-таки хам?
>
> Есть предложение, подкупающее своей новизной и оригинальностью
> - отказаться от решения этого важнейшего вопроса. Навсегда.
>  И всем.
>
>

Не возражаю. Если Sapersky тоже согласен. Или он Семеныч?


 
Sapersky   (2008-02-12 14:37) [68]

В смысле, априори считаем, что хамов среди присутствующих вообще нет, пока кто-то явно не продемонстрировал обратное? Cогласен.
Выдвигаю схожее предложение - априори считать, что среди присутствующих нет идиотов. Это я по поводу [4].
"Желание странного" - это не идиотизм. Тем более что, как я писал в [54], в частном случае это желание осуществимо (с поправкой - имена полей получить нельзя, только типы).
Ещё рискну напомнить, что подобное желание высказывала ваша любимая Рипли :)

отчего же? если обязать непосредственно перед вызовом функции делать New() и Dispose(), а внутри самой функции глянуть адрес возврата и проанализировать предыдущий асм-код, то можно украсть у Dispose() кое-что.

Ничуть не сомневаюсь в способности Ins"а разобраться во всём самостоятельно, но мне в своё время здесь открытым текстом сказали (к сожалению не помню, кто), что это функция TypeInfo() :)
Ещё, чтобы не изобретать каждому индивидуальный велосипед, могу выложить свои наработки по внутренней RTTI.


 
ketmar ©   (2008-02-12 14:41) [69]

>[68] Sapersky (2008-02-12 14:37:00)
таки покажи. если у записи можно получить любое поле в рантайме — первый скажу: «крут он, и я перед ним сынок». всё возможно, всё вероятно. я думаю, что нельзя, но могу и ошибатся.

---
Understanding is not required. Only obedience.


 
Ins ©   (2008-02-12 15:19) [70]


> Ничуть не сомневаюсь в способности Ins"а разобраться во
> всём самостоятельно, но мне в своё время здесь открытым
> текстом сказали (к сожалению не помню, кто), что это функция
> TypeInfo() :)


TypeInfo тоже можно использовать только с определенным на этапе компиляции параметром.


> Ещё, чтобы не изобретать каждому индивидуальный велосипед,
>  могу выложить свои наработки по внутренней RTTI.


А что в них?


 
Sapersky   (2008-02-12 16:22) [71]

таки покажи. если у записи можно получить любое поле в рантайме

А где я писал про любое? Вроде везде оговаривался, что только для частного случая с managed(c управляемым временем жизни)-полями.

TypeInfo тоже можно использовать только с определенным на этапе компиляции параметром.

Разумеется, нельзя TypeInfo(переменная), но можно TypeInfo(тип).
Для написания независимых от типа функций это достаточно - можно просто передавать в них TypeInfo отдельным параметром, так же как это сделано в стандартных вроде DynArraySetLength (обычно используемая с дин. массивами SetLength - magic-обёртка для DynArraySetLength, TypeInfo при этом подставляет компилятор).

А что в них?

Решение классической проблемы новичков (запись рекорда c полем String в поток).
Впрочем, это полезно не только новичкам - иногда нужно быстро сбросить какой-то массив в файл, не особо задумываясь о его содержимом - длинные там строки, короткие... на серьёзную систему сериализации это решение, конечно, не тянет из-за большого кол-ва ограничений.
http://sapersky.narod.ru/files/TypInfoEx.rar
Пардон за жуткую мешанину русского и английского в комментариях.


 
ketmar ©   (2008-02-12 16:29) [72]

>[71] Sapersky (2008-02-12 16:22:00)
>А где я писал про любое?

значит, я неверно понял. однако в [0] требовали все поля. %-)

---
Understanding is not required. Only obedience.



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

Форум: "Прочее";
Текущий архив: 2008.03.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.66 MB
Время: 0.007 c
11-1186397670
Александр 2006
2007-08-06 14:54
2008.03.23
Снова про Proxies.dcu


3-1193337794
DiX
2007-10-25 22:43
2008.03.23
Изменения отображения в DBGrid


2-1203878639
NieL
2008-02-24 21:43
2008.03.23
Transparency


15-1202760185
NailMan
2008-02-11 23:03
2008.03.23
Есть ли сайты-базы для поиска по VenID/DevID?


15-1202685792
Land
2008-02-11 02:23
2008.03.23
Можно ли у произвольного рекорда узнать названия полей и их типы?





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