Вопрос по – Конвертировать любую запись в строку и обратно?

7

Как я могу конвертировать любойrecord тип для одногоString и назад? Возможно, загрузить запись в поток и прочитать ее как строку? В записи, которые я использую, не будут включены какие-либо специальные типы - они просто используют простые вещи, такие какString, Integer, PChar, DWORD, а такжеArray of [String]и т. д. и ничего подобного классам или функциям.

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

@Ken Это разумный вопрос. Сериализация является очень распространенной техникой, и многие современные языки поставляются с готовыми средами для сериализации. RRUZ дает полезные ссылки на такие фреймворки для Delphi. David Heffernan
В качестве хака вы можете записать запись в поток памяти, как вы предлагаете, а затем преобразовать байты этого потока памяти в строку шестнадцатеричных значений. Это может быть полностью изменено. Конечно, людям будет трудно расшифровать строку :) 500 - Internal Server Error
@ Кен Я не видел более ранние версии, поэтому не могу их комментировать. Сейчас мне это не кажется таким уж плохим, но вы здесь. Гораздо лучше, чем недавно "Научись кодировать с Джерри" усилия, поэтому я хотел бы быть воодушевляющим! Во всяком случае, дело в деталях. Почему строка плохой тип для сериализации? Это совершенно обычное дело. Также массив строк. Также словари. David Heffernan
Вы хотели бы видетьstackoverflow.com/questions/3820996/… , Там есть много хороших ответов, но без преобразования строк. Вы, вероятно, можете включить это. Sertac Akyuz
Возможно нет. :-) Теперь вы можете сформулировать проблему, которую вы пытаетесь решить, чтобы мы могли предложить правильный способ ее решения? Какой смысл преобразовывать что-либо, что не является строкой, в строку только для ее обратного преобразования? Ken White

Ваш Ответ

1   ответ
7

используя RTTI, отсюда вы можете использовать XML, JSON или другой формат для сохранения данных записи.

Если вы не хотите писать свой собственный метод для сериализации записей, попробуйте эти альтернативы.

superobject (using the TSuperRttiContext class you can serialize a record to JSON) TKBDynamic SynCommons unit from Synopse. XmlSerial unit (Object and Record Serialization and De-serialization to XML) from Robert Love

Похожие вопросы