VBScript (QTP) - файл фиксированной ширины - проверить содержимое - PullRequest
1 голос
/ 14 сентября 2011

Если бы у меня был файл фиксированной ширины (.txt) со спецификациями (какие символы образуют какое поле), такими как:

1-10 id_no
11-25 seq
26-30 cur_code
31-40 first
41-90 cur_desc
91-120 misa

Пример 3 строк в файле:

7284585   98354u38654     347 USD        jfsnkjndf;kjsdgn;jndfsjngjdsngnkjdsfngkjsdnfgjnfhUnited States Dollar
728458598354u38654        347 USD    jfsnkjndf;kjsdgn;jndfsjngjdsngnkjdsfngkjsdnfgjn      Euro
7284585   98354u38654347      GBP        jfsnkjndf;kjsdgn;jndfsjngjdsngnkjdsfngkjsdnfgjn  Pound

Какой код VBScript мне нужно написать, что:

  • читать все строки в файле
  • выводит любые номера строк и значения cur_desc в другой файл (т. Е. 'Test_currency_DDMMYYYY.txt'), который соответствует этому условию: (cur_code = 'USD' and cur_desc != 'United States Dollar')?

1 Ответ

2 голосов
/ 14 сентября 2011

Строковое чтение текстового файла, разбор и запись в другой текстовый файл:

Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set outPut = objFSO.CreateTextFile("c:\\output.txt", true);
Set objTextFile = objFSO.OpenTextFile _
  ("c:\mytextfile.txt", ForReading)
Do Until objTextFile.AtEndOfStream
  strLine = objTextFile.Readline
' parse strLine
  id_no = Mid(strLine, 1, 9)
  seq = Mid(strLine, 11, 14) ' and so on
  outPut.WriteLine(id_no & "_" & seq);
Loop
outPut.Close();
Set objFSO = Nothing
Set outPut = Nothing

Строка синтаксического анализа может быть выполнена с фунтоцинами строки VB , такими как Split, Mid, Len и т. Д.Например,

id_no = Mid(strLine, 1, 9)
seq = Mid(strLine, 11, 14) ' and so on
...