2013-09-27 3 views
2

У меня есть программа, которая использует некоторый пользовательский ввод для автоматического создания файлов, необходимых для процесса загрузки. Файлы представляют собой .bas (qbasic program) и .lot (файл автомата voxco). Файлы создаются отлично, синтаксис безупречен. Когда я пытаюсь запустить пакетные файлы, которые запускают базовую программу и файл файла лота, он ломается. Программы (voxco и basic), похоже, не знают, как читать файлы. Я в недоумении. Я не думаю, что это кодировка. Я думаю, что моя программа VB.net создает текстовый файл с расширением «.lot» и «.bas», а две другие программы не знают, как с этим бороться. Но я понятия не имею, как создавать файлы, отличные от имен .lot и .bas. У кого-нибудь есть опыт?Как я могу создавать файлы (автоматически) через программу vb.net, которые действуют как входные данные для других программ?

Вот некоторые из кода, который создает файл .lot:

'Create a copy of the old lot file 
     My.Computer.FileSystem.CopyFile(LotFilePath & OldStudy & ".LOT", LotFilePath & "BackEnd\" & OldStudy & ".LOT") 
     System.IO.File.Create(LotFilePath & "BackEnd\" & StudyID & ".LOT").Dispose() 



     Dim LotText As String 
     LotText = Text to put into LOT file 
     Dim QuLines As String = Nothing 
     Dim Reader As New StreamReader(LotFilePath & OldStudy & ".LOT") 
     Dim SLine As String = Nothing 
     While Not Reader.EndOfStream 
      SLine = Reader.ReadLine() 
      If SLine.StartsWith("*QU") Then 
       QuLines = QuLines & SLine & vbCrLf 
      End If 
     End While 
     LotText = LotText & QuLines 

     Dim TempPath As String 
     TempPath = LotFilePath & "BackEnd\" & StudyID & ".LOT" 
     My.Computer.FileSystem.WriteAllText(TempPath, LotText, 0) 

А вот код, который создает файл БАС:

Dim BasText As String = Nothing 
     BasText = Text to input into BAS file 
     TempPath = BasFilePath & StudyID & ".BAS" 
     My.Computer.FileSystem.WriteAllText(TempPath, BasText, 0) 
+0

Из того, что я помню, qbasic-файлы являются просто кодировкой ascii, поэтому вы должны иметь возможность открывать/редактировать/создавать в блокноте или тому подобное. Расширение не очень важно, так что это не так. Можете ли вы показать код о том, как вы начинаете основную программу, и объясните, что вы подразумеваете под словом «он ломается»? У вас есть ошибка или что-то еще? – Steve

+0

Я боюсь, что у меня нет доступа к этим файлам прямо сейчас, но код, запускающий qbasic-программу, - это просто «путь \ qbasicexecutable/run \ path \ .basfile». Это командный файл msdos. Когда qbasic линия запускается, открывается программа qbasic (обычно она работает в фоновом режиме) и говорит что-то о отсутствующем выражении (извините, я знаю, что это не очень полезно!) И киосков. Как только я выхожу из него, аналогичная строка в пакетном файле запускает приложение voxco, которое запускается, но не загружает файл, который должен сказать файл лота. Он сразу заканчивается, и командный файл переходит к следующему элементу. – user2824979

+0

Отличная информация, приводит меня к моему следующему вопросу (извините, еще нет ответа). У вашего пути для LotFilePath или BasFilePath есть пробелы или специальный символ? – Steve

ответ

2

Вот некоторые вещи, чтобы попробовать:

  1. Убедитесь, что программа Basic имеет vbCrLf в конце каждой строки.
  2. Требуется ли qBasic номера строк? (Не помню)
  3. Попробуйте попасть в qBasic и вручную загрузить основной файл, созданный приложением. У вас есть правильный список? Что происходит, когда вы пытаетесь его выполнить?
  4. Введите первые несколько строк основной программы в qBasic, затем сохраните ее. Используйте шестнадцатеричный редактор (например, hexedit), чтобы сравнить этот файл с базовым файлом, созданным приложением. Если есть разница, вы можете это исправить.
  5. Если основной файл запускается вручную, проблема может быть в пакетном файле. Можете ли вы вручную создать базовые и voxco-файлы и заставить их работать с пакетным файлом?
+0

Очень хорошие предложения. Я не могу попробовать или ответить ни одному из них до понедельника, кроме 2, основные файлы не требуют чисел. Благодаря! – user2824979

+0

Шестнадцатеричный редактор показывает, что файлы должны быть одинаковыми, между тем, который был создан через мою программу, и одним, скопированным из более старого файла (последний работает в пакетном файле). Возврат каретки и подача строки верны в моей программе. – user2824979

+0

На самом деле работал шестнадцатеричный редактор - там был раздел, который не отображается в фактическом файле, если вы открываете его в блокноте, над фактическим текстом, а код для этого немного отличается между двумя файлами (вручную созданный и автоматически созданный файлы). Когда я копирую из одного в другой, командный файл будет запускать основную программу должным образом. Я еще не могу отредактировать файл партии.Итак, как мне заставить мою программу правильно создать файл? – user2824979