Fórum Arquivos binários #186608
06/10/2003
0
Estes arquivos estão em texto e gostaria de trabalhar com binários.
Só não sei como.
Se alguem puder informar um tutorial ou uma dica...
Valeu!
Koplin
Curtir tópico
+ 0Posts
06/10/2003
Beppe
Gostei + 0
06/10/2003
Koplin
Fiz uma pesquisa e achei algumas dicas e vou analisar, mas sua colaboração será muito bem vinda.
Valeu sua atenção.
Gostei + 0
06/10/2003
Beppe
Os textos são de tamanho fixo? Quantos são?
Gostei + 0
06/10/2003
Koplin
Não os textos são de tamanhop variável. Mas posso dizer que nenhum arquivo terá mais do que 100k (formato texto)
Gostei + 0
06/10/2003
Beppe
Gostei + 0
06/10/2003
Koplin
Coloco as informações de texto em uma TStringList e salvo como .txt
Se a pergunta é sobre binários o que eu tenho e vou analizare usa AssignFile, read e reWrite.
Gostei + 0
06/10/2003
Beppe
var F: File of Char; S: String; begin AssignFile(F, ´data.dat´); try Reset(F); SetLength(S, FileSize(F)); Read(F, Pointer(S)^, Length(S)); finally CloseFile(F); end; end;
Para escrever:
var F: File of Char; S: String; begin AssignFile(F, ´data.dat´); try Rewrite(F); Write(F, Pointer(S)^, Length(S)); finally CloseFile(F); end; end;
Reset: abre para leitura
Rewrite: limpa e abre para escrita
Gostei + 0
06/10/2003
Koplin
Exato o que preciso.
Obrigado, Ataliba. Precisando...
Gostei + 0
26/08/2004
Flavio Sanches
comigo num deu certo
retornou oseguinte erro:
[Error] Unit1.pas(49): Incompatible types: ´Char´ and ´procedure, untyped pointer or untyped parameter´[Error] Unit1.pas(49):
Gostei + 0
26/08/2004
Beppe
Gostei + 0
26/08/2004
Ipc$
Gostei + 0
27/08/2004
Fórum Vini
realmente o seu código tava dando um erro de sintaxe porque o arquivo era of Char.. eu fiz umas mudanças nele.. funcionou, mas não sei se está da forma como deveria ser:
var F: File; S: String; begin AssignFile(F, ´C:\data.dat´); try Rewrite(F, Length(S)); Write(F, Pointer(S)^); finally CloseFile(F); end; end;
T+,
Vinicius;
Gostei + 0
27/08/2004
Fórum Vini
realmente o seu código tava dando um erro de sintaxe porque o arquivo era of Char.. eu fiz umas mudanças nele.. funcionou, mas não sei se está da forma como deveria ser:
var F: File; S: String; begin AssignFile(F, ´C:\data.dat´); try Rewrite(F, Length(S)); Write(F, Pointer(S)^); finally CloseFile(F); end; end;
T+,
Vinicius;
Gostei + 0
27/08/2004
Beppe
Write toma uma lista de argumentos do tipo Char. Uma string poderia ser impressa com:
Write(F, S[1], S[2], S[3], S[4], S[5], ...)
Mas é mais útil a rotina
BlockWrite(F, Pointer(S)^, Length(S))
O mesmo acontece com Read e BlockRead. BlockRead/BlockWrite recebe como argumento a largura do buffer passado, em cada invocação. Diferente de Read/Write.
Um detalhe a ser cuidado é a diferença no tratamento de arquivos tipados(file of ...;) e não-tipados(file;). O tamanho do registo destes últimos é definido no tempo de abertura do arquivo com Reset/Rewrite, parâmetro RecSize.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)