Casa
Top.Mail.Ru Yandeks.Metrika
Fórum: "Principal";
Arquivo atual: 2004.12.12;
Download: [xml.tar.bz2];

Para baixo

salvar registro ou classe em binário Encontre agências semelhantes


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

Saudações!
Ouvi do meu ouvido que você pode salvar estruturas (e talvez classes) como um blob. Diga-me onde cavar,
Imediatamente a pergunta é: o que acontece se a estrutura mudou um pouco?
Obviamente, o xml é insubstituível aqui, mas o blob é mais compacto e opaco, e é disso que você precisa.



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

pessoas boas dizem algo sobre o assunto.



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


> Ouvi pela borda da orelha que estruturas podem ser preservadas (ou talvez
> ser classes) como blob

no blob, você pode salvar o que quiser.

No caso geral, não é possível salvar apenas um registro (também se aplica a uma classe) no blob, porque pode conter tipos de referência, como cadeias longas.

É necessário salvar e ler cada elemento do registro separadamente.



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

E qual é o problema?
registro ocupa um pedaço de memória.
Guarde essa memória.

>> se a estrutura mudou um pouco?
Onde isso mudou?



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

> Qual é o problema?
> registro ocupa um pedaço de memória.
> Salve esta memória.

desculpe pela ignorância
como fazer isso?
ou em qual seção de ajuda ler sobre como fazer isso?



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


> Rem © (15.11.04 19: 27) [3]
> Qual é o problema?
> registro ocupa um pedaço de memória.
> Salve esta memória.


Mas se houver seqüências longas ou matrizes dinâmicas entre os campos de registro? O que então? Veja © Gopher (15.11.04 19: 24) [2]



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

IMHO, você pode considerar o uso de TStream.ReadComponent e TStream.WriteComponent. Naturalmente, objetos e propriedades não são adequados para nenhum.



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

minha estrutura é complexa com matrizes dinâmicas e assim por diante.
mas você realmente precisa salvá-lo ..

Não sei como acessar o registro simples do formulário binário
por exemplo, composto por números e seqüências de caracteres, sem matrizes?

segunda pergunta.
como enumerar elementos de um registro ou classe.
é possível
se tclass (). elements [0] for inteiro, então ... :)
ou é um absurdo?

esperando por seus pensamentos inteligentes!



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


> Maxim____ (26.11.04 16:17) [7]


apenas para jogar nafih "loafing" e sentar-se para livros "inteligentes".
e de uma vez por todas para esclarecer por si mesmo o que realmente constitui o conteúdo de uma variável de um tipo ou de outro.

nenhum lugar sem ele.



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


> minha estrutura é complexa com matrizes dinâmicas e assim por diante.
> mas você realmente precisa salvá-lo ..

Se você realmente precisa salvar, tente trazer sua estrutura para um tamanho fixo, enquanto fixa o tamanho de cada variável!

Descreva toda a estrutura no tipo "registro" registro e mantenha a calma! Savetofile ... LoadfromFile

Mas lembre-se de que você precisa que cada variável no tipo de registro tenha um tamanho fixo, ou seja, você deve abandonar as variáveis ​​String (eu uso String [n], onde n é seu comprimento), da matriz de bytes (você deve usar a matriz [0 ..n] de byte) e assim por diante.



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

Aqui, por exemplo:
tipo TMyClass = classe Campo1: Inteiro; Campo2: Duplo; Campo3: String; procedimento WriteStream (Strm: TStream); procedimento ReadStream (Strm: TStream); fim; ................... procedimento TMyClass.WriteStream (Strm: TStream); var Escritor: TWriter; começar Escritor: = TWriter.Create (Strm, 4096); tentar com escritor fazer começar WriteInteger (Campo1); WriteFloat (Campo2); WriteString (Campo3); fim; // com o Writer finalmente Writer.Free; fim; fim; procedimento TMyClass.ReadStream (Strm: TStream); var Leitor: TReader; começar Leitor: = TReader.Create (Strm, 4096); tentar com leitor faça começar Campo1: = ReadInteger; Campo2: = ReadFloat; Campo3: = ReadString; fim; // com leitor finalmente Reader.Free; fim; fim;



Страницы: 1 filial inteira

Fórum: "Principal";
Arquivo atual: 2004.12.12;
Download: [xml.tar.bz2];

em cima





Memória: 0.59 MB
Hora: 0.062 c
14-1100922995
Dumkin
2004-11-20 06:56
2004.12.12
Parabéns pra você! 20 de novembro


1-1101885164
opoloXAI
2004-12-01 10:12
2004.12.12
Como imprimir TStrings em três colunas?


3-1100244981
lightix
2004-11-12 10:36
2004.12.12
Comprimir DBF


3-1100072734
sanek
2004-11-10 10:45
2004.12.12
como adicionar um campo de outra tabela à grade


1-1101826657
Paul
2004-11-30 17:57
2004.12.12
Temporizador no aplicativo multithread





afrikaans albanês Arabic armênio azerbaijano basco belarusian Bulgarian catalão Chinês simplificado) Chinês tradicional) croata checo dinamarquês Dutch Inglês estoniano filipino Finnish French
Galego georgiano German grego crioulo haitiano hebraico hindi húngaro islandês Indonesian irlandês Italian Japanese Korean letão lituano macedónio Malay maltês Norwegian
persa polonês Portuguese Romeno Russa sérvio Slovak esloveno Espanhol swahili sueco tailandês turco ucraniano urdu vietnamita galês ídiche bengali bósnio
cebuano esperanto gujarati hausa hmong igbo javanês kannada khmer lao latino maori marata mongol Nepali punjabi somali tâmil telugu yoruba
zulu
Английский francês Alemão Italiano Португальский russo Espanhol