- Antworten 59
- Aufrufe 13,1Tsd
- Erstellt
- Letzte Antwort
Top-Benutzer in diesem Thema
Aktive Tage
Most Popular Posts
-
1. Dein rewrite überschreibt die Datei immer wieder. Wahrscheinlich willst du doch die Datei ergänzen, oder? 2. Die String-Typen sind nicht kompatibel. Und ein Array von Strings ist eine ganz andere H
-
Ich bin mal zu faul ne Erklärung zu schreiben. Ich denke 7bit kann das ein wenig besser. http://www.forexfactory.com/showthread.php?t=219576 Schaue mal nach 32bit und 64bit. Schaue mal nach passin
-
Wo steht, dass er die DLL erfolgreich laden konnte? Mit debuggen wird es schwer, außer du nutzt IDA Pro, SyserDebugger oder SoftIce. Damit bekommst du nahezu alles gedebuggt. Aber damit würde ich gar
Hallo an alle Free-Pascaler,
habe folgendes Problem:
ich möchte eine dll etwickeln die mir alle Trades aus der History in eine GUI schreibt. Mit den Daten möchte ich dann weiterarbeiten.
zu Testzwecken habe ich bis jetzt folgendes:
DLL:
library orderhist; {$mode objfpc}{$H+} uses 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; 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:
//#include <common_functions.mqh> #import "orderhist.dll" void VarsByReference(string& oh[]); #import int start() { // retrieving info from trade history int k,i,hstTotal=HistoryTotal(); int HistoryOrderType; int HistoryOrderTicket; int HistoryOrderCloseTime; double HistoryOrderClosePrice; int HistoryOrderOpenTime; double HistoryOrderOpenPrice; double HistoryOrderOpenProfit; double HistoryOrderOpenStopLoss; string HistoryOrder[8]; 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]=OrderSymbol(); int count=ArraySize(HistoryOrder); for(k=0; k<count; k++) { //log("OrderHistoryOutput_"+k,HistoryOrder[k]); Print("blabla_"+k); } VarsByReference(HistoryOrder); } }Resultat:
die DLL legt zwar die log-Datei an!! schreibt aber nur irgend welche Zeichen rein und blässt die Datei auf 100'erte MB's auf - ich muß dann schleunigst MT4 schließen, sonst legt die mir noch den Server lahm. Das mql-Skript läuft als Script im MT4.
Wer weiß was hier schief läuft??
ProgrammIDE ist Lazarus
Bearbeitet von mtbf40