Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL5 (http://www.expert-advisor.com/forum/forumdisplay.php?f=221)
-   -   Schon wieder ein Dateiproblem, kann jemand helfen? (http://www.expert-advisor.com/forum/showthread.php?t=5688)

Kronenchakra 24.05.17 20:42

Schon wieder ein Dateiproblem, kann jemand helfen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
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));
}

Ich hänge die FileReadWrite.mqh hier an, ist etwas lesbarer formatiert als das Original.

Vielleicht erbarmt sich ein Spezialist und hilft!

Grüße Otto

Kronenchakra 26.05.17 10:39

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

Kronenchakra 26.05.17 14:56

Zu früh gefreut:(
Der Beispielcode funktioniert nicht:mad:

Collider 26.05.17 17:04

Ist dein Problem in der start() oder in deiner Funktion FileExists(string aFileName) ?

Gruß

Kronenchakra 26.05.17 18:02

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);
}

Und bei diesem Code verabschiedet sich der Debugger im Nirgendwo:
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");
}

Es hängt offensichtlich mit den Parametern von ChartApplyTemplate zusammen.

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

Collider 26.05.17 18:18

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...

Collider 26.05.17 18:52

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.

Kronenchakra 27.05.17 20:19

Dank für Test, bin zum gleichen Ergebnis gekommen. Bug im MT5.
Es sollte aber auch nicht sein, daß der Debugger einfach so abschmiert.
Bin gespannt was der Service-Desk am Montag dazu sagt.


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:33 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum