2015-05-12 4 views
2

Я написал сценарий для DOORS 9.5, который выглядит в модуле DOORS для определенных объектов и записывает их в csv-файл. Однако после определенного количества строк он перестает писать в csv-файле, и у меня есть только половина моих запрошенных объектов. Я использую функцию замены строки, которую я нашел в Интернете. Так, может быть, проблема или есть какой-то максимум для dxl для записи в csv-файлах?Экспорт ДВЕРЕЙ Объекты в csv-файлы с dxl не записывают все объекты?

Было бы очень приятно, если бы кто-нибудь мог помочь мне в этом, потому что я не могу найти какое-либо решение для этого в Интернете или понять, почему это не работает.

// String replacement function 
string replace (string sSource, string sSearch, string sReplace) 
{ 
int iLen = length sSource 
if (iLen == 0) return "" 

int iLenSearch = length(sSearch) 

if (iLenSearch == 0) 
{ 
    print "search string must not be empty" 
    return "" 
} 

// read the first char for latter comparison -> speed optimization 
char firstChar = sSearch[0] 

Buffer s = create() 
int pos = 0, d1,d2;  
int i 

while (pos < iLen) { 
    char ch = sSource[pos]; 
    bool found = true 

    if (ch != firstChar) {pos ++; s+= ch; continue} 
    for (i = 1; i < iLenSearch; i++) 
     if (sSource[pos+i] != sSearch[i]) { found = false; break } 
    if (!found) {pos++; s+= ch; continue} 
    s += sReplace 
    pos += iLenSearch 
} 

string result = stringOf s 
delete s 
return result 
} 

Module m = read(modulePath, false) 
Object o 
string s 
string eval 

Stream outfile = write("D:\\Python\\Toolbeta\\data\\modules\\test.csv") 
for o in m do 
{ 
eval = o."Evaluation Spec Filter" 
if(eval == "Evaluation Step Object") 
{ 
    s = o."Object Text" 
    s = replace(s,"\n","\\n") 
outfile2 << o."HierarchyNumber" ";" s "\n" 
} 
} 
close outfile 

ответ

1

я наконец нашел решение моей проблемы (я знаю, что функция замены был своего рода дерьмовый ^^). В сценариях dxl есть встроенный таймер. Когда таймер будет готов, скрипт автоматически завершит работу, даже если процессы все еще выполняются. Поэтому мой скрипт всегда останавливается через x секунд, и по этой причине я никогда не получал все данные в своих файлах csv. Если у вас такая же проблема, попробуйте pragma runLim,0. Он устанавливает таймер неограниченно. вы также можете выбрать таймер, заменив 0 на любое число. (Для моих целей 2000000 подходит лучше всего).

Thx за все ответы и помощь

0

Линии, которые я знаю для вывода в CSV.

Но я вижу что-то странное в вашей функции замены. Переменная sSearch всегда равна \n, что касается DOORS, это 1 символ (возврат каретки). Но в следующей строке i=1:

if (sSource[pos+i] != sSearch[i]) { found = false; break } 

sSearch не имеет никакого символа в позиции 1, так как массив строк начинается с 0.

Я думаю, что вы должны изменить свой цикл для:

for (i = 0; i < iLenSearch; i++) 

Я думаю, что ваш сценарий не удается в первый раз, он находит объект с возвратом каретки в нем.

Дайте мне знать, если это поможет, удачи!

0

Существует множество проблем, которые необходимо решить при выводе объектного текста в CSV. Вы заботитесь о замене запятых или, по крайней мере, цитировании текста? Что, если в объектном тексте есть OLE? И т. Д.

Если вы делаете это вручную, я бы предложил настроить представление с атрибутами, которые вы хотите видеть в качестве столбцов, и фильтром для включения только объектов, которые вы хотите просмотреть, а затем с использованием собственного экспорта DOORS в Excel (Окно модуля: Файл> Экспорт> Microsoft Office> Excel). Если вам действительно нужен CSV, вы можете сохранить его из Excel в формате CSV.

Если вы делаете это автоматически с помощью скриптов, я предложил бы использовать библиотеку DXL для Excel, таких как: http://www.baselinesinc.com/dxl-repository/

(Но помните, есть проблемы с использованием Excel в Windows, Назначенные задания.)

Если у вас нет доступа к Excel, вы можете посмотреть вокруг «net» для некоторого кода C, используемого для записи в CSV, и основывать на нем DXL.

Надеюсь, что это поможет.

EDIT: Кроме того, вот ссылка для хорошей функции для выхода: https://www.ibm.com/developerworks/community/forums/html/topic?id=77777777-0000-0000-0000-000014627043

 Смежные вопросы

  • Нет связанных вопросов^_^