Список форумов Trading tools Trading tools
?нструменты для торговли на FORTS
 

На сайт ttools.ru
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы  RSS-Подписка на форумRSS-Подписка на форум   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Помогите программисту-чайнику!
На страницу Пред.  1, 2, 3, 4, 5
 
Начать новую тему   Ответить на тему    Список форумов Trading tools -> QuikOrdersDOM SDK
Предыдущая тема :: Следующая тема  
Автор Сообщение
majo
Наш человек


Зарегистрирован: 19.12.2009
Сообщения: 872
Откуда: Санкт-Петербург

СообщениеДобавлено: Сб Сен 17, 2011 2:17 pm    Заголовок сообщения: Ответить с цитатой

Fortis писал(а):
Получил ваш проект. Очень удивило что данные действительно выдавались как вы писали выше. Но ошибку таки нашел Smile

Вы внесли изменения в файл uATLibrary.pas, предполагаю что не нарочно. У вас отсутствует часть кода:
Цитата:
PTradeInfo = ^TTradeInfo ;

TOwnTradeInfo = packed record
N,
OrderN : Int64 ;
SecIdx : Cardinal ;
Account : TCharArr20 ;
TradeDT : TDateTime;
Price : double ;
Quantity : Cardinal ;
OrderDirection : TATOrderDirection ;
Volume : Double ;
end;

POwnTradeInfo = ^TOwnTradeInfo ;



TOrderInfo = packed record // информация о заявке
Выделенное красным отсутствует. Подозреваю, что вы что-то выделяли когда искали в коде и случайно нажали например пробел удалив часть кода.

Обновите этот файл из дистрибутива QOD`a в свой проект и все заработает. Smile


Уррррраааааааааа!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Laughing



Спасибо огромное!!! Я уже голову сломал, а до этого не догадался))) Но теперь буду знать, где стоит искать ошибку если все варианты перепробованы)))

Теперь приступлю к выполнению домашнего задания Wink
_________________
C искренним уважением majo
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
majo
Наш человек


Зарегистрирован: 19.12.2009
Сообщения: 872
Откуда: Санкт-Петербург

СообщениеДобавлено: Ср Ноя 30, 2011 5:20 pm    Заголовок сообщения: Ответить с цитатой

Всем привет! Простите за отсутствие, но работы было много и с программированием пришлось завязать на время. Но теперь представилась возможность продолжить обучение.
Решил продолжить обучение, с того места, на котором его закончил.

Вот пытаюсь развить форму вывода информации, до более интеллектуального вида.

В интерфейс добавил кнопочку и окошечко, для ввода значения переменной.

Для начала попытался без посторонней помощи справиться. Но пока не получилось.

Хотел уточнить, по нажатию кнопки, переменная из поля edit1 должна быть присвоена другой переменной типа integer?

Весь этот код прописал внутри поцедуры buttonclik, переменные сделал глобальные, чтобы их можно было использовать в uAtLibMain.

Вот такие получились коды:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Str: string;
  Num: Cardinal;
  Nsd: Cardinal;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Str:= Edit1.Text;
Num:= StrToInt(Str);
Nsd:= Num;
end;

end.


и

Код:
unit uAtLibMain;

interface
 uses uATLibrary,
      SysUtils,Dialogs,Forms,Unit1,Controls,StdCtrls,Graphics ;

function AT_LIB_INIT (T : TLibInitialRecord): Cardinal; stdcall;
function AT_LIB_CYCLE: Cardinal ; stdcall;
function AT_LIB_DONE: Cardinal ; stdcall;
function AT_LIB_ABOUT: Cardinal; stdcall;
function AT_LIB_SETUP: Cardinal ; stdcall;

var
 R : TLibInitialRecord ;
 

implementation


function AT_LIB_INIT (T : TLibInitialRecord): Cardinal; stdcall;
var
 Err: Cardinal;
 Sd_Inf: PTradeInfo;
 Sd_Price: Double;
 begin
  R:=T ;
  Application.CreateForm(Tform1, Form1);
   Form1.Show;

   If Num>0 Then begin
   Nsd:= Num;
   New(Sd_Inf);
   Err:= R.fATLibGetTradeInfo(Nsd,Sd_Inf);
   Sd_Price:= Sd_Inf.Price;
   Form1.Label1.Caption:= FloatToStrF(Sd_Price,ffFixed,5,5);
   Dispose(Sd_Inf);
   end;

 end ;

function AT_LIB_CYCLE: Cardinal ; stdcall;
 begin

 end ;

function AT_LIB_DONE: Cardinal ; stdcall;
 begin
  {}
 end ;

function AT_LIB_SETUP: Cardinal ; stdcall;
 begin
  MessageDlg('Çäåñü äîëæíî áûòü îêíî íàñòðîåê',mtInformation,[mbOK],0);

 end ;

function AT_LIB_ABOUT: Cardinal; stdcall;
 var
  S : String;
 begin
  S:='Ïðèìåð ìîäóëÿ àâòîòðåéäèíãà '#13#10'äëÿ QuikOrdersDOM'#13#10;
  ShowMessage(S) ;
 end ;

end.


Я так понимаю, что код разделять некорректно? ? вся остальная процедура, должна быть помещена внутри процедуры?

Может можно поместить процедуру внутрь функции function AT_LIB_INIT?

Буду очень признателен за подсказку, но попробую пока найти решение самостоятельно)
_________________
C искренним уважением majo
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Danila
Site Admin


Зарегистрирован: 24.07.2009
Сообщения: 837

СообщениеДобавлено: Ср Ноя 30, 2011 11:16 pm    Заголовок сообщения: Ответить с цитатой

Сергей, привет!
Пожалуйста, постарайся вопросы ставить четко. Я дважды твой пост перечитал и не понял, чего ты хочешь, в чем вопрос?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
majo
Наш человек


Зарегистрирован: 19.12.2009
Сообщения: 872
Откуда: Санкт-Петербург

СообщениеДобавлено: Чт Дек 01, 2011 11:01 am    Заголовок сообщения: Ответить с цитатой

Danila писал(а):
Сергей, привет!
Пожалуйста, постарайся вопросы ставить четко. Я дважды твой пост перечитал и не понял, чего ты хочешь, в чем вопрос?


Данила пошу прощения за некорректно поставленный вопрос Embarassed

Но твое требование правильно сформулировать вопрос, позволило мне найти ошибку самостоятельно! Ты неоднократно писал о важности правильно задавать вопросы. Теперь я начал понимать почему.

Наверное перед написанием кода, надо сначала составить план проекта, чтобы понять как будет работать процесс. Если этого не делать, можно потратить много времени на решение незначительных ошибок)))

Вобщем все получилось.

Я сделал такую форму:


В поле edit1 можно ввести номер сделки из таблицы всех сделок. После нажатия на кнопку, в поле label1 выводится цена по которой прошла сделка.

Все получилось, после того как я перенес часть кода из функции AT_LIB_INIT в функцию AT_LIB_CYCLE. ? все заработало!

Вот код, для тех кто столкнется с такой проблемой при освоении qDom SDK:

модуль uAtLibMain

Код:
unit uAtLibMain;

interface
 uses uATLibrary,
      SysUtils,Dialogs,Forms,Unit1,Controls,StdCtrls,Graphics ;

function AT_LIB_INIT (T : TLibInitialRecord): Cardinal; stdcall;
function AT_LIB_CYCLE: Cardinal ; stdcall;
function AT_LIB_DONE: Cardinal ; stdcall;
function AT_LIB_ABOUT: Cardinal; stdcall;
function AT_LIB_SETUP: Cardinal ; stdcall;

var
 R : TLibInitialRecord ;
 Err: Cardinal;
 Sd_Inf: PTradeInfo;
 Sd_Price: Double;

implementation


function AT_LIB_INIT (T : TLibInitialRecord): Cardinal; stdcall;

 begin
  R:=T ;
  Application.CreateForm(Tform1, Form1);
   Form1.Show;

   

 end ;

function AT_LIB_CYCLE: Cardinal ; stdcall;
 begin
 If Num>0 Then begin
   Nsd:= Num;
   New(Sd_Inf);
   Err:= R.fATLibGetTradeInfo(Nsd,Sd_Inf);
   Sd_Price:= Sd_Inf.Price;
   Form1.Label1.Caption:= FloatToStrF(Sd_Price,ffFixed,5,5);
   Dispose(Sd_Inf);
   end;

 end ;

function AT_LIB_DONE: Cardinal ; stdcall;
 begin
  {}
 end ;

function AT_LIB_SETUP: Cardinal ; stdcall;
 begin
  MessageDlg('Здесь должно быть окно настроек',mtInformation,[mbOK],0);

 end ;

function AT_LIB_ABOUT: Cardinal; stdcall;
 var
  S : String;
 begin
  S:='Пример модуля автотрейдинга '#13#10'для QuikOrdersDOM'#13#10;
  ShowMessage(S) ;
 end ;

end.


и unit1:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Str: string;
  Num: Cardinal;
  Nsd: Cardinal;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Str:= Edit1.Text;
Num:= StrToInt(Str);
Nsd:= Num;
end;

end.

_________________
C искренним уважением majo
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Danila
Site Admin


Зарегистрирован: 24.07.2009
Сообщения: 837

СообщениеДобавлено: Чт Дек 01, 2011 3:53 pm    Заголовок сообщения: Ответить с цитатой

Ну отлично! Рад, что ты сам разобрался!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
majo
Наш человек


Зарегистрирован: 19.12.2009
Сообщения: 872
Откуда: Санкт-Петербург

СообщениеДобавлено: Пт Дек 02, 2011 2:34 pm    Заголовок сообщения: Ответить с цитатой

majo писал(а):
Danila писал(а):
Сергей, привет!
Пожалуйста, постарайся вопросы ставить четко. Я дважды твой пост перечитал и не понял, чего ты хочешь, в чем вопрос?


Данила пошу прощения за некорректно поставленный вопрос Embarassed

Но твое требование правильно сформулировать вопрос, позволило мне найти ошибку самостоятельно! Ты неоднократно писал о важности правильно задавать вопросы. Теперь я начал понимать почему.

Наверное перед написанием кода, надо сначала составить план проекта, чтобы понять как будет работать процесс. Если этого не делать, можно потратить много времени на решение незначительных ошибок)))

Вобщем все получилось.

Я сделал такую форму:


В поле edit1 можно ввести номер сделки из таблицы всех сделок. После нажатия на кнопку, в поле label1 выводится цена по которой прошла сделка.

Все получилось, после того как я перенес часть кода из функции AT_LIB_INIT в функцию AT_LIB_CYCLE. ? все заработало!

Вот код, для тех кто столкнется с такой проблемой при освоении qDom SDK:

модуль uAtLibMain

Код:
unit uAtLibMain;

interface
 uses uATLibrary,
      SysUtils,Dialogs,Forms,Unit1,Controls,StdCtrls,Graphics ;

function AT_LIB_INIT (T : TLibInitialRecord): Cardinal; stdcall;
function AT_LIB_CYCLE: Cardinal ; stdcall;
function AT_LIB_DONE: Cardinal ; stdcall;
function AT_LIB_ABOUT: Cardinal; stdcall;
function AT_LIB_SETUP: Cardinal ; stdcall;

var
 R : TLibInitialRecord ;
 Err: Cardinal;
 Sd_Inf: PTradeInfo;
 Sd_Price: Double;

implementation


function AT_LIB_INIT (T : TLibInitialRecord): Cardinal; stdcall;

 begin
  R:=T ;
  Application.CreateForm(Tform1, Form1);
   Form1.Show;

   

 end ;

function AT_LIB_CYCLE: Cardinal ; stdcall;
 begin
 If Num>0 Then begin
   Nsd:= Num;
   New(Sd_Inf);
   Err:= R.fATLibGetTradeInfo(Nsd,Sd_Inf);
   Sd_Price:= Sd_Inf.Price;
   Form1.Label1.Caption:= FloatToStrF(Sd_Price,ffFixed,5,5);
   Dispose(Sd_Inf);
   end;

 end ;

function AT_LIB_DONE: Cardinal ; stdcall;
 begin
  {}
 end ;

function AT_LIB_SETUP: Cardinal ; stdcall;
 begin
  MessageDlg('Здесь должно быть окно настроек',mtInformation,[mbOK],0);

 end ;

function AT_LIB_ABOUT: Cardinal; stdcall;
 var
  S : String;
 begin
  S:='Пример модуля автотрейдинга '#13#10'для QuikOrdersDOM'#13#10;
  ShowMessage(S) ;
 end ;

end.


и unit1:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Str: string;
  Num: Cardinal;
  Nsd: Cardinal;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Str:= Edit1.Text;
Num:= StrToInt(Str);
Nsd:= Num;
end;

end.


Результат получился вот такой:


_________________
C искренним уважением majo
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Trading tools -> QuikOrdersDOM SDK Часовой пояс: GMT + 3
На страницу Пред.  1, 2, 3, 4, 5
Страница 5 из 5

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB


Яндекс.Метрика