Ir para conteúdo
Fórum Script Brasil
  • 0

lucianomar

Pergunta

Bom, pretendo criar um arquivo de texto porém com extensão final .ftl com a pretensão de ser um lido por um programa específico. Esse programa específico chama-se Ftool, programa voltado pra engenharia civil para análise de estruturas. O arquivo de texto .ftl funcionada como um código e irá fornecer ao programa citado a formatação geométrica da estrutura diretamente sem que o usuário tenha que desenhá-la no programa  Ftool (eliminar trabalho). O propósito da criação de um arquivo de texto .ftl está funcionando corretamente, porém na hora de ser executado no Ftool ocorre um erro, como se os códigos gerados no texto estivessem incorretos. Mas se eu pegar o arquivo de texto, copiar todo o código gerado e criar em um novo bloco de notas manualmente e salvá-lo como extensão .ftl o Ftool consegue lê-lo normalmente. Como se o texto gerado automaticamente estivesse corrompido ou algo do tipo, porém a formatação do código está correta, já que o Ftool consegue ler o código se criado manualmente via bloco de notas. E aí, alguém pra me ajudar nesse pepino? 

  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim file As System.IO.StreamWriter
        If System.IO.File.Exists("Text.ftl") = True Then
            file = My.Computer.FileSystem.OpenTextFileWriter("Text.ftl", False)
            file.Write("301
206
1
0 1 1 1 1 2 1 0 0 0 0
+4.00000e+000 +5.00000e+000
-1.00000e+030 +1.00000e+030 -1.00000e+030 +1.00000e+030
1 1
1 0 1 0 1 1 1 0 0 0 0 0 0 0 0
0 0
0 2 5 17 22 35 57 63 76 48
2 9 14 78 91 0 0
2 2 10 10 1 1 4 1 1 4
2 0 1 6 0 0 11 11 10 10
2 2 2 0 0
1 1
0 1 1 1 1 0
1 1 0
0
0
1")
            file.WriteLine("0 'carregamento' 0 -" & txt1.Text) // intensidade do carregamento definido pelo usuário
            file.WriteLine("0
0
1
'concreto' 0
 1e+008 0.3 10 1e-005
1
'quadrada' 1 0
 0.6 0.2
0
0
0 1 1 0 0
0
0 0 0 0
0 0 0
1
2 1 1 1 1 1 1 2 1 1 1
+8.00000e+000 +5.00000e+000
0
+4.00000e+000 +8.00000e+000 +5.00000e+000 +5.00000e+000
0 0 0 0 0 1
1
1
0
1
0
0
0 0 1 0 0
0
0 0 0 0
0 0 0
 0")
            file.Close()


        End If
        Process.Start("C:\Users\lucia\Documents\Visual Studio 2015\Projects\WindowsApplication1\WindowsApplication1\bin\Debug\Text1.ftl")

 

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Pode ser a codificação, pois o padrão deste método é usar UTF8 e provavelmente o arquivo deve precisar ser em ASCII puro. Então, experimente trocar a linha...

file = My.Computer.FileSystem.OpenTextFileWriter("Text.ftl", False)

por...

file = My.Computer.FileSystem.OpenTextFileWriter("Text.ftl", False, System.Text.Encoding.ASCII)

... e veja se dá certo.

Abraços!

Link para o comentário
Compartilhar em outros sites

  • 0
3 horas atrás, Graymalkin disse:

Pode ser a codificação, pois o padrão deste método é usar UTF8 e provavelmente o arquivo deve precisar ser em ASCII puro. Então, experimente trocar a linha...


file = My.Computer.FileSystem.OpenTextFileWriter("Text.ftl", False)

por...


file = My.Computer.FileSystem.OpenTextFileWriter("Text.ftl", False, System.Text.Encoding.ASCII)

... e veja se dá certo.

Abraços!

Ao usar a codificação ASCII, ao abrir o arquivo gerado no programa Ftool, ele sequer aparecer a mensagem de erro de incompatibilidade, ele dá pau e fica sem responder.

Aviso de erro utilizando codificação UTF8:

ftool.png

Utilizando codificação ASCII:

ftool2.png

Link para o comentário
Compartilhar em outros sites

  • 0
7 horas atrás, Graymalkin disse:

Tem como você anexar aqui um exemplo de um arquivo gerado e um do mesmo que funciona?

Abraços!

Funciona (gerado manualmente pelo bloco de notas):

301
206
1
0 1 1 1 1 2 1 0 0 0 0
+4.00000e+000 +5.00000e+000
-1.00000e+030 +1.00000e+030 -1.00000e+030 +1.00000e+030
1 1
1 0 1 0 1 1 1 0 0 0 0 0 0 0 0
0 0
0 2 5 17 22 35 57 63 76 48
2 9 14 78 91 0 0
2 2 10 10 1 1 4 1 1 4
2 0 1 6 0 0 11 11 10 10
2 2 2 0 0
1 1
0 1 1 1 1 0
1 1 0
0
0
1
0 'carregamento' 0 -345
0
0
1
'concreto' 0
 1e+008 0.3 10 1e-005
1
'quadrada' 1 0
 0.6 0.2
0
0
0 1 1 0 0
0
0 0 0 0
0 0 0
1
2 1 1 1 1 1 1 2 1 1 1
+8.00000e+000 +5.00000e+000
0
+4.00000e+000 +8.00000e+000 +5.00000e+000 +5.00000e+000
0 0 0 0 0 1
1
1
0
1
0
0
0 0 1 0 0
0
0 0 0 0
0 0 0
 0

NÃO Funciona (gerado pelo programa) :
 

301
206
1
0 1 1 1 1 2 1 0 0 0 0
+4.00000e+000 +5.00000e+000
-1.00000e+030 +1.00000e+030 -1.00000e+030 +1.00000e+030
1 1
1 0 1 0 1 1 1 0 0 0 0 0 0 0 0
0 0
0 2 5 17 22 35 57 63 76 48
2 9 14 78 91 0 0
2 2 10 10 1 1 4 1 1 4
2 0 1 6 0 0 11 11 10 10
2 2 2 0 0
1 1
0 1 1 1 1 0
1 1 0
0
0
1
0 'carregamento' 0 -1233
0
0
1
'concreto' 0
 1e+008 0.3 10 1e-005
1
'quadrada' 1 0
 0.6 0.2
0
0
0 1 1 0 0
0
0 0 0 0
0 0 0
1
2 1 1 1 1 1 1 2 1 1 1
+8.00000e+000 +5.00000e+000
0
+4.00000e+000 +8.00000e+000 +5.00000e+000 +5.00000e+000
0 0 0 0 0 1
1
1
0
1
0
0
0 0 1 0 0
0
0 0 0 0
0 0 0
 0

O padrão escrito é o mesmo.
Abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Comparei usando um editor HEX e o seu arquivo que não funciona continua em UTF-8, por isso ele tem 3 bytes no começo (que não existem no arquivo que funciona). Outro detalhe é que faltava uma quebra de linha antes de "carregamento" (o que ocorria por usar Write ao invés de WriteLine). Veja o código abaixo e confira se o arquivo gerado por ele funciona (pelo menos ficou igual ao que funciona):

 

Dim arq As String = "c:\temp\teste.ftl"
Dim sw As IO.StreamWriter = My.Computer.FileSystem.OpenTextFileWriter(arq, False, System.Text.Encoding.ASCII)

sw.WriteLine("301
206
1
0 1 1 1 1 2 1 0 0 0 0
+4.00000e+000 +5.00000e+000
-1.00000e+030 +1.00000e+030 -1.00000e+030 +1.00000e+030
1 1
1 0 1 0 1 1 1 0 0 0 0 0 0 0 0
0 0
0 2 5 17 22 35 57 63 76 48
2 9 14 78 91 0 0
2 2 10 10 1 1 4 1 1 4
2 0 1 6 0 0 11 11 10 10
2 2 2 0 0
1 1
0 1 1 1 1 0
1 1 0
0
0
1")
sw.WriteLine("0 'carregamento' 0 -345")
sw.WriteLine("0
0
1
'concreto' 0
 1e+008 0.3 10 1e-005
1
'quadrada' 1 0
 0.6 0.2
0
0
0 1 1 0 0
0
0 0 0 0
0 0 0
1
2 1 1 1 1 1 1 2 1 1 1
+8.00000e+000 +5.00000e+000
0
+4.00000e+000 +8.00000e+000 +5.00000e+000 +5.00000e+000
0 0 0 0 0 1
1
1
0
1
0
0
0 0 1 0 0
0
0 0 0 0
0 0 0
 0")
sw.Close()

Lembre de trocar a parte do "-345" pelo valor presente na sua textbox.

Abraços!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...