QUIK. QLUA. Функция чтения CSV файла — различия между версиями
Материал из ТХАБ.РФ
Админ (обсуждение | вклад) м |
Админ (обсуждение | вклад) м |
||
Строка 26: | Строка 26: | ||
---- | ---- | ||
function File_Read(filename) | function File_Read(filename) | ||
− | |||
local col = 1 | local col = 1 | ||
local pat = "(.*)" | local pat = "(.*)" |
Версия 16:02, 21 ноября 2019
{{#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 файл можно держать открытым.
Ссылки
- https://smart-lab.ru/blog/576041.php Первоисточник