Что за ошибка в коде?

Образцы, куски исходников, вопросы. Обсуждаем программирование.
Ответить
Сообщение
Автор
Alexey
Сообщения: 41
Зарегистрирован: Чт окт 14, 2010 8:25 am

Что за ошибка в коде?

#1 Сообщение Alexey » Вс ноя 28, 2010 2:18 pm

Здравствуйте.
Подскажите, пожалуйста, что не устроило Lazarus в коде индикатора на этой картинке и как исправить.
Спасибо.
Вложения
name errors.jpg
(124.04 КБ) 2860 скачиваний

Alexey
Сообщения: 41
Зарегистрирован: Чт окт 14, 2010 8:25 am

#2 Сообщение Alexey » Вс ноя 28, 2010 2:19 pm

Вот этот код:



library TimeToTrade;
//
uses
// Use index buffer
graphics, IndicatorInterfaceUnit;
//
var
// Outside parameters
sh: integer;
sm: integer;
eh: integer;
em: integer;
//
// Index buffers and variables
StartTime: TIndexBuffer;
EndTime: TIndexBuffer;
RestTime: TIndexBuffer;
//
//------------------------------
// Inicialisation
//------------------------------
procedure Init; stdcall;
begin
// Назначение параметров
IndicatorShortName('Time');
SetOutputWindow(ow_ChartWindow);
// зарегистрировать внешние параметры
AddSeparator('Start');
RegOption('StartHour', ot_Integer, sh);
RegOption('StartMin', ot_Integer, sh);
AddSeparator('End');
RegOption('EndHour', ot_Integer, eh);
RegOption('EndMin', ot_Integer, em);
SetOptionRange('StartHour', 0,24);
SetOptionRange('StartMin', 0,60);
SetOptionRange('EndHour', 0,24);
SetOptionRange('EndMin', 0,60);
sh:=6;
sm:=5;
eh:=17;
eh:=5;
//
// Making index buffer
IndicatorBuffers(3);
StartTime:= CreateIndexBuffer;
EndTime:= CreateIndexBuffer;
RestTime:= CreateIndexBuffer;
SetIndexBuffer(1,StartTime);
SetIndexBuffer(2,EndTime);
SetIndexBuffer(3,RestTime);
SetIndexStyle(1,0,psSolid,1,Red);
SetIndexStyle(2,0,psSolid,1,Green);
SetIndexStyle(3,0,psSolid,1,Grey);
end;
//
//-----------------------------
// Last bar count
//----------------------------
procedure Calculate(index: integer); stdcall;
var
i: integer;
begin
for i:=0 to index do
begin
if Hour(Time(0))=sh and Minute(Time(0))=sm then StartTime:=1; else StartTime:=0;
if Hour(Time(0))=eh and Minute(Time(0))=em then EndTime:=1; else EndTime:=0;
if (Hour(Time(0))<=sh and Minute(Time(0))<sm) or (Hour(Time(0))>=eh and Minute(Time(0))>em) then RestTime:=1; else RestTime:=0;
end;
//
exports
// Outside procedures
Init, Done, Calculate;
end.

FT Support
Сообщения: 329
Зарегистрирован: Сб июл 11, 2009 3:59 pm

#3 Сообщение FT Support » Пн ноя 29, 2010 9:16 am

Здравствуйте, Алексей,

Проект какого типа Вы создали в лазарусе? Тип проекта должен быть "библиотека функций (Library)", а у Вас похоже "Application".
Мы рекомендуем посмотреть вот это обучающее видео:
http://www.youtube.com/watch?v=kL7z8kG7WCw
здесь показано как скомпилировать индикатор с помощью лазаруса.

Alexey
Сообщения: 41
Зарегистрирован: Чт окт 14, 2010 8:25 am

#4 Сообщение Alexey » Пн ноя 29, 2010 11:35 am

Спасибо.

Alexey
Сообщения: 41
Зарегистрирован: Чт окт 14, 2010 8:25 am

#5 Сообщение Alexey » Пн ноя 29, 2010 3:13 pm

Спасибо, уважаемый FT Support, тип проекта я изменил. Но появились новые ошибки - прокомментируйте, пожалуйста. Картиночку прилагаю. Сразу скажу, что, в частности, способ записи функции определения часа (по аналогии сделал - минут) я увидел в хелпе Доступ к массивам данных, оператор Time.

Хочу сразу извиниться за то, что буду кидать все вопросы по ошибкам в связи с этим индикатором в эту ветку, пока индикатор не заработает. Просто этот индикатор всем нам, кто использует режим ручного теста, сэкономил бы кучу времени на отслеживании самого Времени рабочего дня. Мы же все купили это ПО только в расчете экономить время, а сделать это не можем из-за не очень удобной шкалы и сложной системы создания индиктаоров. Хотя, в остальном программа очень хороша.

Понимаю, что этими вопросами об ошибках мы отнимем наоборот у Вас раз в 50-100 больше времени, чем если бы Вы просто согласились проверить код и скомпиллировать. Но Вы уже отвечали, что авторам проверить нужный всем индикатор трудноемко, и что Время поставлено в Очередь. :D Мы все взрослые люди, понимаем, что где очередь - там Вечность, даже если в очереди стоит Время. Поэтому и вынуждены задавать вопросы и изучать средства, не имеющие прямого отношения к бизнесу. Очень неудобно тратить Ваше время в таком объеме, но вариантов нет.

Спасибо еще раз за любую помощь, которая позволит решить задачу без дополнительных платежей третьим очень уважаемым лицам.
Вложения
newerrors 1.jpg
newerrors 1.jpg (94.98 КБ) 7922 просмотра

Ответить