Forum > Portuguese

Criação de arquivo e manipulação de diretórios no Free Pascal

(1/1)

kirkorian:
Olá
Tenho um registro tipo record num programa e queria gravar os dados em um arquivo. Contudo, toda vez que a rotina tenta criar/abrir o arquivo, dá um erro de arquivo não localizado. Já até criei um vazio e acontece o mesmo. Alguém poderia dar alguma dica sobre esse problema e como lidar com arquivos e diretórios?
Obrigado.

--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} --- procedure gravacao;
var
   cont:integer;
begin
     assign (F, arquivo)
     rewrite (F);
     for cont := 1 to v do
          write (F, termo[v]);
     close (F);
end;
[/code]

Laprado:
Boa tarde.

Testei seu código substituindo as variáveis utilizadas inferindo o tipo pela descrição que você passou. Pela natureza do problema apontado consegui simular o problema tentando utilizar um caminho de arquivo inválido, ou seja, usar um arquivo apontando para uma pasta que não existe retorna o erro "invalid file name". Apenas para avaliar melhor o problema eu coloquei o seguinte código para validar se o caminho do arquivo é válido:


--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---if not DirectoryExists(ExtractFilePath(arquivo)) then    raise Exception.Create('Caminho do arquivo não existe'); 
As funções utilizadas estão na unit SysUtils, portanto precisa ser adicionada a cláusula uses. Você pode adicionar esse código logo no início da procedure gravacao para verificar se o problema é realmente de um caminho inválido.

Se não resolver o problema seria interessante que você postasse um código mínimo que possa ser copiado / colado e executado. Nesse caso poderia ser apenas algo que permitisse que a procedure gravacao pudesse ser executada sem a necessidade de completarmos com as peças que faltam. Dessa forma é possível obter respostas bem mais precisas para o problema apontado.

Handoko:
Sorry I can't speak Portuguese.

There are several short demos for reading/writing files. You can download, run and study them:
- Binary file demo
- Text file demo
- Text file demo #2

They can be found in the File handling section in the link below:
https://wiki.freepascal.org/Portal:HowTo_Demos#File_handling

kirkorian:
Laprado, justamente eu não sei lidar com os diretórios. Segui os materiais que encontrei e só indica o formato que coloquei. Entendi que iria gravar o arquivo na mesma pasta do programa, mas só dá erro. Vou adaptar o código para colocar aqui. Obrigado

kirkorian:
Parece que ele só deixa gravar na própria árvore do Free Pascal. De qualquer forma, agora funcionou. Obrigado.

Navigation

[0] Message Index

Go to full version