QUIK. QLUA. Функция чтения CSV файла — различия между версиями

Материал из ТХАБ.РФ
Перейти к: навигация, поиск
м
м
 
(не показаны 3 промежуточные версии этого же участника)
Строка 1: Строка 1:
{{#ask: [[Категория:QUIK]] [[Категория:QLua]] [[Категория:Торговый робот]]
+
{{Торговый робот
| ?Название = Название <br> Торгового робота
+
|Название = Функция чтения CSV файла
| ?Язык программирования
+
|Язык программирования = QLua
| ?Версия
+
|Описание = Выводит данные в Excel через CVS файл
| ?Описание
+
|Торговая система = QUIK
| ?Торговая система
+
|Русификация = Комментарии
| ?Цена
 
| ?Русификация
 
| limit=30 | searchlabel=роботов для QUIK на QLua
 
| intro=Список роботов для QUIK на QLua (не более 30):&nbsp;
 
| default='''!!!Ошибка SMW запроса'''
 
 
}}
 
}}
  
 
Пытался решить вопрос с интерфейсом для QLUA.  
 
Пытался решить вопрос с интерфейсом для QLUA.  
  
Испробовал IUP, VCL и еще какая-то библиотека была. Но ни одна библиотека стабильно не работала, через какой-то промежуток времени Квик вставал колом.
+
Испробовал [[IUP]], [[VCL]] и еще какая-то библиотека была. Но ни одна библиотека стабильно не работала, через какой-то промежуток времени Квик вставал колом.
  
 
Т.к. нам красоты не надо, а удобство хочется, то решил пусть интерфейсом будет Excel (файл.CSV).
 
Т.к. нам красоты не надо, а удобство хочется, то решил пусть интерфейсом будет Excel (файл.CSV).
Строка 26: Строка 21:
 
----
 
----
 
  function File_Read(filename)
 
  function File_Read(filename)
 
 
  local col = 1
 
  local col = 1
 
  local pat = "(.*)"
 
  local pat = "(.*)"
Строка 67: Строка 61:
  
 
== Ссылки ==
 
== Ссылки ==
* https://smart-lab.ru/blog/576041.php Первоситочник
+
* https://smart-lab.ru/blog/576041.php Первоисточник
  
 
[[Категория:QUIK]]
 
[[Категория:QUIK]]
 
[[Категория:QLua]]
 
[[Категория:QLua]]
[[Категория:Торговый робот]]
+
[[Категория:Функция]]
 +
[[Категория:Скрипт]]

Текущая версия на 16:31, 21 ноября 2019

Название Машиноместа::Функция чтения CSV файла
Язык программирования Язык программирования::QLua
Версия Версия::
Описание Описание::Выводит данные в Excel через CVS файл
Торговая систмеа Торговая система::QUIK
Цена Цена::
Русификация Русификация::Комментарии


Пытался решить вопрос с интерфейсом для 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 файл можно держать открытым.

Ссылки