das ist die Weiterführung über Probleme im Zusammenspiel von Freepascal und Metatrader
http://www.lazarusforum.de/viewtopic.php?f=10&t=5448&start=30
DLL-Code
Code: Alles auswählen
library orderhist;
{$mode objfpc}{$H+}
uses
Windows,Classes
{ you can add units after this };
type
TOrderHist = array[0..7] of string;
// function parameters declared as var will accept pointers.
//procedure VarsByReference(var oh: TOrderHist) ; stdcall;
procedure VarsByReference(var oh: TOrderhist) ; stdcall;
var
Datei : TextFile;
begin
// now let's make some changes to the variables
Assign (Datei, 'C:/Tools/mt4log.log');
ReWrite (Datei);
writeln(Datei,oh[7]);
close(Datei);
end;
exports
VarsByReference;
begin
end.
MT4-Code
Code: Alles auswählen
//#include <common_functions.mqh>
#import "orderhist.dll"
void VarsByReference(string& oh[]);
#import
int start()
{
// retrieving info from trade history
int k,i,hstTotal=HistoryTotal();
static string HistoryOrder[8];
string test;
for(i=0;i<hstTotal;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Access to history failed with error (",GetLastError(),")");
break;
}
HistoryOrder[0]=OrderCloseTime();
HistoryOrder[1]=OrderClosePrice();
HistoryOrder[2]=OrderOpenTime();
HistoryOrder[3]=OrderOpenPrice();
HistoryOrder[4]=OrderProfit();
HistoryOrder[5]=OrderStopLoss();
HistoryOrder[6]=OrderTicket();
HistoryOrder[7]="Test";
int count=ArraySize(HistoryOrder);
for(k=0; k<count; k++)
{
//log("OrderHistoryOutput_"+k,HistoryOrder[k]);
Print("blabla_"+k);
}
VarsByReference(HistoryOrder);
}
}
mtbf40