QUIK. QLUA. Функция чтения CSV файла

Материал из ТХАБ.РФ
Перейти к: навигация, поиск

{{#ask: | ?Название = Название
Торгового робота | ?Язык программирования | ?Версия | ?Описание | ?Торговая система | ?Цена | ?Русификация | limit=30 | searchlabel=роботов для QUIK на QLua | intro=Список роботов для QUIK на QLua (не более 30):  | default=!!!Ошибка SMW запроса }}

Пытался решить вопрос с интерфейсом для QLUA.

Испробовал IUP, VCL и еще какая-то библиотека была. Но ни одна библиотека стабильно не работала, через какой-то промежуток времени Квик вставал колом.

Т.к. нам красоты не надо, а удобство хочется, то решил пусть интерфейсом будет Excel (файл.CSV).

функция для чтения CSV файлов:

  • можно задать до 20 столбиков параметров, количество строк не ограничено.
  • запятую заменяет на точку в вещественном числе
  • удаляет заголовок столбца, т.е. на выходе получаем массив начинающийся со второй строки

function File_Read(filename)
local col = 1
local pat = "(.*)"
local A={};local B={};local C={};local D={};local E={};
local F={};local G={};local H={};local I={};local J={};
local K={};local L={};local M={};local N={};local O={};
local P={};local Q={};local R={};local S={};local T={};
local file, err = io.open(filename,«r»)
if err ~= nil then PrintDbgStr(«err read file: »..err); return; end
str = file:read()
for var in string.gmatch (str, ";") do col=col+1 end
for i = 2, col do pat = pat..";(.*)" end
for line in io.lines(filename) do

--PrintDbgStr(line)
local _,_,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20 = string.find(line,pat)

--PrintDbgStr(tostring(s1))
table.insert(A,s1);table.insert(B,s2);table.insert(C,s3);table.insert(D,s4);table.insert(E,s5);
table.insert(F,s6);table.insert(G,s7);table.insert(H,s8);table.insert(I,s9);table.insert(J,s10);
table.insert(K,s11);table.insert(L,s12);table.insert(M,s13);table.insert(N,s14);table.insert(O,s15);
table.insert(P,s16);table.insert(Q,s17);table.insert(R,s18);table.insert(S,s19);table.insert(T,s20);
end

file:close()
table.remove(A,1);table.remove(B,1);table.remove(C,1);table.remove(D,1);table.remove(E,1);
table.remove(F,1);table.remove(G,1);table.remove(H,1);table.remove(I,1);table.remove(J,1);
table.remove(K,1);table.remove(L,1);table.remove(M,1);table.remove(N,1);table.remove(O,1);
table.remove(P,1);table.remove(Q,1);table.remove(R,1);table.remove(S,1);table.remove(T,1);

--Print_Table® Print_Table(S) Print_Table(T)
return A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T
end


Во время работы робота смело изменяем CSV файл и сохраняем, и новые параметры у вас в роботе. CSV файл можно держать открытым.

Ссылки