|
Programmierung MQL5 Hier gehts rund ums Programmieren in MQL5. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Schon wieder ein Dateiproblem, kann jemand helfen?
Ich will feststellen ob ein Template vorhanden ist oder nicht.
Im MQL5 Forum hab ich schon gefragt https://www.mql5.com/de/forum/193218 aber bisher keine Lösung gefunden. Ich hab's auch mittels Kernel32 versucht https://www.mql5.com/de/articles/1540 aber der Code funktioniert nicht. Diese 2 Funktionen habe ich dazugefügt: Code:
bool FileExists(string aFileName) { int handle=_lopen(aFileName,OF_READ); if (handle<0) return(false); else { _lclose (handle); return(true); } } bool TemplateExists(string aFileName) { aFileName=TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL5\\Profiles\\Templates\\"+aFileName+".tpl"; return(FileExists(aFileName)); } Vielleicht erbarmt sich ein Spezialist und hilft! Grüße Otto |
|
|||
Das Problem mit den Templates ist mittlerweile gelöst.
Die Lösung ist unter https://www.mql5.com/de/forum/193218#comment_5107046 zu lesen, falls es jemanden interessiert. Das zweite Problem mit FileReadWrite.mqh habe ich leider noch nicht gelöst. Grüße Otto |
|
|||
Zu früh gefreut
Der Beispielcode funktioniert nicht |
|
|||
Ist dein Problem in der start() oder in deiner Funktion FileExists(string aFileName) ?
Gruß |
|
|||
Dank für dein Interesse!
Mittlerweile habe gefunden wo der Bug wohnt, nämlich in der Funktion ChartApplyTemplate(). Elendslange Kommunikation mit dem Service-Desk. Ich hoffe sie glauben mir diesmal und überprüfen das. Dieser Code funktioniert prächtig: Code:
void OnStart() { if(ChartApplyTemplateToAll("my_template")) PlaySound("ok"); } bool ChartApplyTemplateToAll(string aTemplate) // checks and loads a template to all charts { long theChart = ChartFirst(); // loopvar for all charts string fileName = "Templates\\"+aTemplate+".tpl"; // the filename for FileIsExist string tmplName = "\\Files\\Templates\\"+aTemplate+".tpl"; // the templatename for ChartApplyTemplate. may have extension or not if(!FileIsExist(fileName)) return(false); while(theChart>=0) { if(!ChartApplyTemplate(theChart, tmplName)) return(false); theChart=ChartNext(theChart); } return(true); } Code:
void OnStart() // this varian runs the debugger to a crash { string aTemplate="my_template"; long theChart = ChartFirst(); // loopvar for all charts string fileName = "Templates\\"+aTemplate+".tpl"; // the filename for FileIsExist string tmplName = "\\Files\\Templates\\"+aTemplate; // the templatename for ChartApplyTemplate if(!FileIsExist(fileName)) return; ChartApplyTemplate(ChartID(),tmplName); // debugger crashes here // ChartApplyTemplate(0,tmplName); // debugger crashes here also, decomment it to proof PlaySound("ok"); } Könnte das evtl. jemand testen(überprüfen)? Das muß sowohl unter MT4 als auch MT5 laufen. Auf alle Fälle habe ich jetzt eine Version die funktioniert. Grüße Otto |
|
|||
Ok , das Problem ist dann woanders als im ersten Post.
Im 4er funktioniert der FileExits test. Der gleiche Code im 5er nicht.(oder bei dir doch ? Hängt sicher mit den Zugriffsrechten zusammen. Im 5er wird das SandBox Konzept noch schärfer umgesetzt. Ich schaue mal nach deinem Debugger Problem... |
|
|||
Scheint ein richtiger Bug zu sein.
Konnte ich reproduzieren. Gibt man den long von ChartFirst() mit, kein crash. Gibt man den long von ChartID() mit crasht der Debugger. |
Lesezeichen |
Stichworte |
dateien, dateiproblem, dateizugriff, files, programmierung, programmierung metatrader, programmierung mql5 |
|
|