Em Ada, por que minhas tentativas de abrir um arquivo para escrever falhas?

StackOverflow https://stackoverflow.com/questions/2413549

  •  19-09-2019
  •  | 
  •  

Pergunta

Quando tento abrir um arquivo para gravar para obter um ADA.io_exceptions.name_error.

O nome do arquivo é "C: cc_test_log.txt". Este arquivo não existe.

Isso está no Windows XP em uma partição NTFS. O usuário tem permissões para criar e gravar no diretório. O nome do arquivo está bem sob o comprimento do caminho máximo do Win32.

 name_2 : String := "C:\CC_TEST_LOG.TXT"
 if name_2'last > name_2'first then
    begin
       Ada.Text_IO.Create(file, Ada.Text_IO.Out_File, name_2);
       Ada.Text_IO.Put_Line(
          "CC_Test_Utils: LogFile: ERROR: Open, File "
          & name_2);
       return;
    exception
       when The_Error : others =>
          Ada.Text_IO.Put_Line(
             "CC_Test_Utils: LogFile: ERROR: Open Failed; "
              & Ada.Exceptions.Exception_Name(The_Error)
              & ", File " & name_2);
    end;
 end if;
Foi útil?

Solução

Em cima da minha cabeça:

  • No momento Create é chamado, file Já não está associado a outro arquivo aberto, não é?
  • Qual compilador você está usando? O GNAT é baseado em Mingw e pode não gostar do designador do Windows "C: ". Tente participar dessa parte e veja se ele cria o arquivo (em algum lugar).
  • Como Xandy mencionou, o arquivo já pode ser aberto por outro programa. Este Create A chamada requer acesso exclusivo ao arquivo.

Como um aparte, qual é o ponto daquela linha logo após o Create? É com sucesso Abrindo o arquivo também um erro por algum motivo? Parece que talvez possa ser enganoso, fazendo com que o programa não tenha aberto o arquivo quando realmente conseguiu.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top