Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43256
Benutzer: 7.220
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: JosephTK
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 10 Stunden
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 3 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 432
Gesamt: 432
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 08.05.20
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Question Fehlermeldung: 8 leaked strings left

Diese Fehlermeldung bekomme ich unter "Experten".
Situation:
2 Tabellen, eine mit einer PairListe und eine mit einer AnalyseListe.
Beide Tabellen sind eigenständige Indikatoren.

1. Ich lade jede Indikator-Tabelle separat in einem eigenen Chart-Fenster.
Ich kann in jeder Tabelle nun durch Klick auf den Symbolnamen einen neuen Chart für das Symbol (samt der vorher definierten Vorlage) laden.

2. Ich lade beide Indikator-Tabellen zusammen in einem Chart-Fenster, erst die AnalyseListe und danach die PairListe.
A. Wenn ich aus der AnalyseListe durch Klick einen neuen Symbolchart aufmachen will, ist alles ok.
B. Wenn ich aber aus der PairListe durch Klick einen neuen Chart aufmachen will, bekomme ich die Fehlermeldung über "leaked strings left". Es wird zwar der Symbolchart aufgemacht, aber ohne Vorlage und das Fenster mit den beiden Tabellen verschwindet mit besagtem Abschiedsgruß

Frage:
Was bedeutet diese Meldung? Ich habe zwar schon etliche Google Resultate durchgelesen, trotzdem verstehe ich nur Bahnhof - da helfen weder eine Übersetzung noch irgendwelche Lösungsvorschläge (klaro, daß man von Lösungen nix versteht, wenn man nicht weiß, was das Problem ist - wie können denn irgendwelche Strings übrigbleiben, und was zum Teufel sind undichte Strings ).

Wäre nett, wenn jemand mich aufklären könnte, damit ich versuchen kann eine Lösung zu finden. Danke. AVT
  #2 (permalink)  
Alt 09.05.20
Mitglied
 
Registriert seit: Feb 2016
Beiträge: 240
RetepM befindet sich auf einem aufstrebenden Ast
Standard

Man findet wenig zu dem Thema. In einem Thread wird der Programmierer gebeten, den Code an den Support zu schicken.
Anscheinend durchläuft der EA vor der Fehlermeldung eine Zählschleife ??daher die Zahl vor dem Error?? guck doch mal ob Du im Code einen leeren String behandelst, durch 0 teilst oder ob, wenn im Code, bei StringTrimLeft etwas schief geht.
Grüße
  #3 (permalink)  
Alt 09.05.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Lad doch mal die Quellcodes hoch.
  #4 (permalink)  
Alt 09.05.20
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

Danke für Deine Tips, ich bin sie durchgegangen.
Zitat:
Zitat von RetepM Beitrag anzeigen
Man findet wenig zu dem Thema. In einem Thread wird der Programmierer gebeten, den Code an den Support zu schicken.
Den hab ich auch gelesen
Zitat:
Zitat von RetepM Beitrag anzeigen
Anscheinend durchläuft der EA vor der Fehlermeldung eine Zählschleife ??daher die Zahl vor dem Error??
Das ist kein EA, das sind 2 Indikatoren (2 EAs gehen nicht zusammen auf einen Chart) - nur nebenbei, tut aber glaube ich nix zur Sache.
Zitat:
Zitat von RetepM Beitrag anzeigen
guck doch mal ob Du im Code einen leeren String behandelst, durch 0 teilst oder ob, wenn im Code, bei StringTrimLeft etwas schief geht.
1."StringTrimLeft": neg., gibt's im ganzen Code nicht
2. 0 Teilung: (neg.), nicht im Code für "neuen Chart"-Knopf
-. außerdem würde das nicht "zero division" Error ergeben?
3. leerer String: (neg.), dann würde er keinen neuen Chart öffnen

Beispiel:
Code:
// in OnChartEvent:
   if(   id==CHARTEVENT_OBJECT_CLICK                //ObjectWasClicked
      && StringFind(sparam,PFX+"pName")>= 0 )       //sparam=FullButtonName
   {
         OpenChart( FindPairNameOfButton(sparam) );
            ObjectSetInteger(0,sparam,OBJPROP_STATE,false);
         return;         
   }//ButtonNameWasClicked

// in OnInit: Loop für alle Knöpfe 
  CreatePairButton("pName"+IntegerToString(i),xOffset,pOffset+i*LineHeight,Apairnames[i]);  //Name

// Funktion, die in OnChartEvent verwendet wird:
string FindPairNameOfButton(string ButtonName="FullButtonName")
{
   string Result="";
   int Startposition=StringLen(PFX+"pName");
   string PairNumber=StringSubstr(ButtonName,Startposition); //From"PFX_pName"ToEnd
   int    PairInteger=(int)StringToInteger(PairNumber);
   Result=SSpairTable[PairInteger].SpairName;
   return(Result);
}

// Zuweisung von Nummer zu Name über:
struct SSpair //StructSortedPair:
{
   int    SpairNo;      //PairIDnumber
   string SpairName;    //PairName
}; SSpair SSpairTable[];
Ich sehe nicht, wo hier irgendwas falsch sein soll, zudem funktioniert diese Tabelle ja einwandfrei, wenn sie alleine auf einem Chart liegt.
AVT
  #5 (permalink)  
Alt 09.05.20
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MA-EA Beitrag anzeigen
Lad doch mal die Quellcodes hoch.
Willst Du 3000 Zeilen Code analysieren, wo möglich noch parallel ??
  #6 (permalink)  
Alt 10.05.20
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

Es war in den Google Ergebnisse ja die Rede von Arrays.
Zuerst habe ich sichergestellt, daß alle Arrays eindeutige Namen haben.
Das half nicht.

Dann habe ich mir die ErrorCodes vorgenommen.
Da tauchte eine 7 = ERR_NOT_ENOUGH_RIGHTS auf, und zwar für den Chart, der geöffnet werden soll. Es liegt also irgendwo in dem Aufruf der Charts ein Fehler. Den suche ich jetzt. AVT auf der Suche
  #7 (permalink)  
Alt 10.05.20
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MA-EA Beitrag anzeigen
Lad doch mal die Quellcodes hoch.
@MA-EA, was willst DU denn mit dem Code?

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #8 (permalink)  
Alt 10.05.20
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard die Buttons werden nicht erkannt

Logfile dazu (unwichtiges rausgenommen):
Code:
================ 1. Tabelle FX-PairStrength2, 4 verschiedene Button-Klicks: immer ok
FX-PairStrength2 EURUSD,H4: OnChartEvent PairStrength2 button FXpsL_11_AUDJPY button was clicked.
FX-PairStrength2 EURUSD,H4: OnChartEvent calling FindpsButtonPair(FXpsL_11_AUDJPY)
FX-PairStrength2 EURUSD,H4: FindpsButtonPair Startposition: 9
FX-PairStrength2 EURUSD,H4: FindpsButtonPair PairName: AUDJPY
FX-PairStrength2 EURUSD,H4: FindpsButtonPair Result: AUDJPY

FX-PairStrength2 EURUSD,H4: OnChartEvent PairStrength2 button FXpsL_14_EURGBP button was clicked.
FX-PairStrength2 EURUSD,H4: OnChartEvent calling FindpsButtonPair(FXpsL_14_EURGBP)
FX-PairStrength2 EURUSD,H4: FindpsButtonPair Startposition: 9
FX-PairStrength2 EURUSD,H4: FindpsButtonPair PairName: EURGBP
FX-PairStrength2 EURUSD,H4: FindpsButtonPair Result: EURGBP

FX-PairStrength2 EURUSD,H4: OnChartEvent PairStrength2 button FXpsL_22_NZDJPY button was clicked.
FX-PairStrength2 EURUSD,H4: OnChartEvent calling FindpsButtonPair(FXpsL_22_NZDJPY)
FX-PairStrength2 EURUSD,H4: FindpsButtonPair Startposition: 9
FX-PairStrength2 EURUSD,H4: FindpsButtonPair PairName: NZDJPY
FX-PairStrength2 EURUSD,H4: FindpsButtonPair Result: NZDJPY

FX-PairStrength2 EURUSD,H4: OnChartEvent PairStrength2 button FXpsL_24_USDCAD button was clicked.
FX-PairStrength2 EURUSD,H4: OnChartEvent calling FindpsButtonPair(FXpsL_24_USDCAD)
FX-PairStrength2 EURUSD,H4: FindpsButtonPair Startposition: 9
FX-PairStrength2 EURUSD,H4: FindpsButtonPair PairName: USDCAD
FX-PairStrength2 EURUSD,H4: FindpsButtonPair Result: USDCAD

================ 2. Tabelle FX-PairLists2: das Chaos beginnt
===> NEIN, das war FX-PairLists2 !! also ist auch die Namensfindung falsch
FX-PairStrength2 EURUSD,H4: OnChartEvent PairStrength2 button FXplist_pName4 button was clicked.
FX-PairStrength2 EURUSD,H4: OnChartEvent calling FindpsButtonPair(FXplist_pName4)
FX-PairStrength2 EURUSD,H4: FindpsButtonPair Startposition: 9
FX-PairStrength2 EURUSD,H4: FindpsButtonPair PairName: Name4
FX-PairStrength2 EURUSD,H4: FindpsButtonPair Result: Name4

===> jetzt hat er es kapiert, die Namensauflösung ist korrekt,
===> dieser Chart kann aufgemacht werden
FX-PairLists2 EURUSD,H4: FXplist_pName4 PairList2 button was clicked.
FX-PairLists2 EURUSD,H4: OnChartEvent substring FXplist_pName found in FXplist_pName4
FX-PairLists2 EURUSD,H4: OnChartEvent calling FindplButtonPair(FXplist_pName4)
FX-PairLists2 EURUSD,H4: FindplButtonPair Startposition: 13
FX-PairLists2 EURUSD,H4: FindplButtonPair PairNumber: 4
FX-PairLists2 EURUSD,H4: FindplButtonPair PairNumber in Table: 4
FX-PairLists2 EURUSD,H4: FindplButtonPair PairName in Table: AUDUSD

===> das ist der Fehler, der zuerst gemacht wurde, der verursacht das:
FX-PairStrength2 EURUSD,H4: uninit reason 7
FX-PairStrength2 EURUSD,H4: OnDeinit last error: internal error
FX-PairStrength2 EURUSD,H4: OnDeinit reason: 7

===> der geht dann natürlich mit
FX-PairLists2 EURUSD,H4: uninit reason 7
FX-PairLists2 EURUSD,H4: OnDeinit last error: chart not found
FX-PairLists2 EURUSD,H4: OnDeinit reason: 7

===> die dürften dann aber nicht aus FX-PairLists2 sein, sondern aus FX-PairStrength2
FX-PairLists2 EURUSD,H4: 11 leaked strings left

================ und Tschüß
Custom indicator FX-PairStrength2 EURUSD,H4: removed
Custom indicator FX-PairLists2 EURUSD,H4: removed
===> und was soll der Unsinn, dann auf dem Chart einen Indi zu laden
===> das steht nirgendwo im Code, das das passieren soll
Custom indicator FX-Pairs\MA-EMAtrend EURUSD,H4: loaded successfully
MA-EMAtrend EURUSD,H4: initialized
So, und nun bin ich endgültig mit meinem Latein am Ende. Mehr als überall eindeutige Namen vergeben kann ich nicht. Wenn der MT damit nicht klarkommt, dann weiß ich auch nicht weiter.
AVT
  #9 (permalink)  
Alt 11.05.20
Neues Mitglied
 
Registriert seit: Apr 2020
Beiträge: 14
TraumExperte befindet sich auf einem aufstrebenden Ast
Standard

Hmmm,

liegt vermutlich an den Buttons (Objecten). Werden die sauber gelöscht (DeInit) --> (ObjectDelete)? Mal prüfen.

Gruß

TraumExperte
  #10 (permalink)  
Alt 11.05.20
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von TraumExperte Beitrag anzeigen
Hmmm,
liegt vermutlich an den Buttons (Objecten). Werden die sauber gelöscht (DeInit) --> (ObjectDelete)? Mal prüfen.
Danke für den Hinweis, hab ich erledigt: Resultat negativ.
Sämtliche Sachen fangen bei mir an mit dem Festlegen eines PFX für Objekte:
Code:
string PFX       = "FXplist_"; //1. Indi: PairList
string PFX       = "FXpsL_"; //2. Indi: pair strength List
DeInit ist bei den meisten (wo es nicht unbedingt notwendig, daß Objekte behalten werden) auch immer dasselbe (die erste Zeile habe ich eingefügt, damit ich nicht immer die Codenummern nachsehen muß):
Code:
void OnDeinit(const int reason)
{
   Print(__FUNCTION__," last error: ",ErrorDescription(GetLastError()) );
   for(int i=0; i<ObjectsTotal(); i++)
   {
      string obj_name=ObjectName(i);
      if(StringSubstr(obj_name,0,StringLen(PFX))==PFX) // object with PFX found
      {
         if(ObjectsDeleteAll(0,PFX,-1,-1)>0) { break; }// delete until done
      }
   }
   Print(__FUNCTION__," reason: ",IntegerToString(reason));
}
Und ich habe einen komplett leeren Chart genommen, beide geladen und auf einen PairList Button gedrückt - exit wie gewohnt - der Chart wird kriegt plötzlich einen anderen Indikator und in der Objektliste ist außer dem ChartId Label Objekt nix mehr.
Der Klartext Fehler sagt, PairList "Chart not found" als LastError. In PairList wird aber der Name richtig aufgelöst (sagt ja auch das Logfile) - nur daß er zuerst die PairStrength Namensauflösung startet, was völlig falsch ist, weil ich auf einen PairList Button drücke.
AVT
Thema geschlossen

Lesezeichen

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 08:10 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------