Hab ich hier einen Denkfehler oder ist das wirklich ein "Dreck"
danke
Also ohne hier groß was zu sagen , das Beispiel https://www.mql5.com/de/docs/constants/objectconstants/enum_object/obj_edit
funktioniert.
Du musst den Text speichern in dem du eine Variable als Referenz übergibts .
Siehe:
//+------------------------------------------------------------------+ //| Gibt den Text des Objektes "Eingabefeld" zurück | //+------------------------------------------------------------------+ bool EditTextGet(string &text, // Text const long chart_ID=0, // ID des Charts const string name="Edit") // Objektname { //--- Setzen den Wert des Fehlers zurück ResetLastError(); //--- erhalten wir den Text des Objektes if(!ObjectGetString(chart_ID,name,OBJPROP_TEXT,0,text)) { Print(__FUNCTION__, ": Konnte nicht den Text erhalten! Fehlercode = ",GetLastError()); return(false); } //--- die erfolgreiche Umsetzung return(true); }
&text
Könnte da dein Fehler liegen ?
- www.mql5.com
Mach es uns doch einfach und poste eine Beispiel wo dein Fehler zu sehen ist.
Kurzes Skript .....und der Fehler ist schnell gefunden.
das hätte ich soweit verstanden,
aber was geb ich bei der
&text
ein?
da muss ich ja was übergeben
und generell, bekomme ich dann ja nur ein True oder False zurück, das ist ja eine boolMach es uns doch einfach und poste eine Beispiel wo dein Fehler zu sehen ist.
Kurzes Skript .....und der Fehler ist schnell gefunden.
einfach ist das nicht ;-) muss das erst zusammenkopieren
so, jetzt schnell mal das für einen EA zusammenkopiert
also, ich erzeuge das Edit Feld, Schreib einen Wert rein, und am Ende von Edit sollte sich das ganze dann in eine Globale Variable setzen
tuts aber nicht
#property copyright "Copyright 2018, amando" #property link "https://www.amando.eu" #property version "1.00" //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnInit() { string SLValue; if(!GlobalVariableCheck("GlobalSL"+_Symbol)) GlobalVariableSet("GlobalSL"+_Symbol,0); SLValue = DoubleToString(GlobalVariableGet("GlobalSL"+_Symbol),0); EditCreate(0,"SL" ,0, 20 ,20, 300, 150, SLValue,"Arial",10,ALIGN_CENTER,false,CORNER_LEFT_UPPER,clrBlack, clrWhite,clrNONE,false,false,false,0); //--- } void OnDeinit(const int reason) { ObjectDelete(0,"SL"); } //+-- void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if(CHARTEVENT_OBJECT_ENDEDIT) { Print(GlobalVariableCheck("GlobalSL"+_Symbol)); Print(ObjectGetString(0,"SL"+_Symbol,OBJPROP_TEXT,0)); GlobalVariableSet("GlobalSL"+_Symbol,StringToDouble(ObjectGetString(0,"SL"+_Symbol,OBJPROP_TEXT,0))); Print(_Symbol," ",StringToDouble(ObjectGetString(0,"SL"+_Symbol,OBJPROP_TEXT,0))); Print(GetLastError()); } if(id==CHARTEVENT_OBJECT_CLICK) { } } bool EditCreate(const long chart_ID=0, // ID des Charts const string name="", // Objektname const int sub_window=0, // Nummer des Unterfensters const int x=0, // X-Koordinate const int y=0, // Y-Koordinate const int width=0, // Breite const int height=0, // Höhe const string text="", // Text const string font="", // Schrift const int font_size=0, // Schriftgröße const ENUM_ALIGN_MODE align=ALIGN_CENTER, // Textausrichtung const bool read_only=false, // Bearbeitung const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // Winkel des Charts um Objekt zu binden const color clr=clrBlack, // Textfarbe const color back_clr=clrWhite, // Hintergrundfarbe const color border_clr=clrNONE, // Rahmenfarbe const bool back=false, // Im Hintergrund const bool selection=false, // Wählen um zu bewegen const bool hidden=true, // Ausgeblendet in der Objektliste const long z_order=0) // Priorität auf Mausklick { //--- Setzen den Wert des Fehlers zurück ResetLastError(); //--- Eingabefeld erstellen if(!ObjectCreate(chart_ID,name,OBJ_EDIT,sub_window,0,0)) { Print(__FUNCTION__, ": Objekt \"Eingabefeld\" konnte nicht erstellt werden! Fehlercode = ",GetLastError()); return(false); } //--- Objektkoordinaten angeben ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); //--- Objektgröße setzen ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); //--- den Text setzen ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); //--- Textschrift setzen ObjectSetString(chart_ID,name,OBJPROP_FONT,font); //--- Schriftgröße setzen ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); //--- Modus von Textausrichtung im Objekt setzen ObjectSetInteger(chart_ID,name,OBJPROP_ALIGN,align); //--- aktivieren (true) oder deaktivieren (false) den schreibgeschützten Modus ObjectSetInteger(chart_ID,name,OBJPROP_READONLY,read_only); //--- setzen die Ecke des Diagramms, in Bezug auf die die Koordinaten des Objekts bestimmt werden ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); //--- Textfarbe setzen ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); //--- Hintergrundfarbe setzen ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); //--- Rahmenfarbe setzen ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr); //--- Im Vordergrund (false) oder Hintergrund (true) anzeigen ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); //--- Aktivieren (true) oder deaktivieren (false) Mausbewegung Modus ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); //--- Verbergen (true) oder Anzeigen (false) den Namen des graphischen Objektes in der Objektliste ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); //--- setzen die Priorität für eine Mausklick-Ereignisse auf dem Chart ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); //--- die erfolgreiche Umsetzung return(true); }
Hab den Fehler:
Dein Edit hat den Namen "SL" mehr nicht . Kein Symbol hinten dran
Hier der richtige code.
//+------------------------------------------------------------------+ //| amando_problem_234.mq5 | //| Copyright 2019, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2018, amando" #property link "https://www.amando.eu" #property version "1.00" //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnInit() { string SLValue; if(!GlobalVariableCheck("GlobalSL"+_Symbol)) GlobalVariableSet("GlobalSL"+_Symbol,0); SLValue = DoubleToString(GlobalVariableGet("GlobalSL"+_Symbol),0); EditCreate(0,"SL" ,0, 20 ,20, 300, 150, SLValue,"Arial",10,ALIGN_CENTER,false,CORNER_LEFT_UPPER,clrBlack, clrWhite,clrNONE,false,false,false,0); //--- } void OnDeinit(const int reason) { ObjectDelete(0,"SL"); } //+-- void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if(CHARTEVENT_OBJECT_ENDEDIT) { Print(GlobalVariableCheck("GlobalSL"+_Symbol)); string gettedtext = ObjectGetString(0,"SL",OBJPROP_TEXT,0); Print(ObjectGetString(0,"SL"+_Symbol,OBJPROP_TEXT,0)); GlobalVariableSet("GlobalSL"+_Symbol,StringToDouble(ObjectGetString(0,"SL"+_Symbol,OBJPROP_TEXT,0))); Print(_Symbol," ",StringToDouble(ObjectGetString(0,"SL"+_Symbol,OBJPROP_TEXT,0))); Print(GetLastError()); } if(id==CHARTEVENT_OBJECT_CLICK) { } } bool EditCreate(const long chart_ID=0, // ID des Charts const string name="", // Objektname const int sub_window=0, // Nummer des Unterfensters const int x=0, // X-Koordinate const int y=0, // Y-Koordinate const int width=0, // Breite const int height=0, // Höhe const string text="", // Text const string font="", // Schrift const int font_size=0, // Schriftgröße const ENUM_ALIGN_MODE align=ALIGN_CENTER, // Textausrichtung const bool read_only=false, // Bearbeitung const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // Winkel des Charts um Objekt zu binden const color clr=clrBlack, // Textfarbe const color back_clr=clrWhite, // Hintergrundfarbe const color border_clr=clrNONE, // Rahmenfarbe const bool back=false, // Im Hintergrund const bool selection=false, // Wählen um zu bewegen const bool hidden=true, // Ausgeblendet in der Objektliste const long z_order=0) // Priorität auf Mausklick { //--- Setzen den Wert des Fehlers zurück ResetLastError(); //--- Eingabefeld erstellen if(!ObjectCreate(chart_ID,name,OBJ_EDIT,sub_window,0,0)) { Print(__FUNCTION__, ": Objekt \"Eingabefeld\" konnte nicht erstellt werden! Fehlercode = ",GetLastError()); return(false); } //--- Objektkoordinaten angeben ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); //--- Objektgröße setzen ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); //--- den Text setzen ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); //--- Textschrift setzen ObjectSetString(chart_ID,name,OBJPROP_FONT,font); //--- Schriftgröße setzen ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); //--- Modus von Textausrichtung im Objekt setzen ObjectSetInteger(chart_ID,name,OBJPROP_ALIGN,align); //--- aktivieren (true) oder deaktivieren (false) den schreibgeschützten Modus ObjectSetInteger(chart_ID,name,OBJPROP_READONLY,read_only); //--- setzen die Ecke des Diagramms, in Bezug auf die die Koordinaten des Objekts bestimmt werden ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); //--- Textfarbe setzen ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); //--- Hintergrundfarbe setzen ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); //--- Rahmenfarbe setzen ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr); //--- Im Vordergrund (false) oder Hintergrund (true) anzeigen ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); //--- Aktivieren (true) oder deaktivieren (false) Mausbewegung Modus ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); //--- Verbergen (true) oder Anzeigen (false) den Namen des graphischen Objektes in der Objektliste ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); //--- setzen die Priorität für eine Mausklick-Ereignisse auf dem Chart ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); //--- die erfolgreiche Umsetzung return(true); }
Sowas wie Print(sdkfsnskdnksd) lässt sich nicht debuggen !!!
Schau wie es richtig geht.
Gruß
Bevor du fragst.
gettedtext ist 0 weil dein SLvalue auch 0 ist :-)
das hätte ich soweit verstanden,
aber was geb ich bei der
ein?
da muss ich ja was übergeben
und generell, bekomme ich dann ja nur ein True oder False zurück, das ist ja eine boolJa wenn du die Variante Rückgabewert = Bool nimmst ist in der text Variable nachher dein Wert drin.
Die andere gibt den Text direkt zurück.
Such mal nach Pointer und Referenzen im Netz ...etwas lesen...ist aber immer schwer zu verstehen am Anfang.
@Christian,
das eingabefeld sollte auch nur SL heissen, das tat es schon immer :)
die erweiterung mit dem Symbol hab ich nir für die globale variablen damit ich diese zuordnen kann beim laden
das mit dem Print ist mir klar, da geht nix zum debuggen, hab die zeile nur fürs testen eingefügt da alles immer 0 war
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo Leute,
ich hab da ein kleines Problem mit dem OBJ_Edit
ich baue das Objekt eigentlich genauso wie es in der Beschreibung steht
https://www.mql5.com/de/docs/constants/objectconstants/enum_object/obj_edit
jetzt hab ich noch das Problem, das ich ja einen Text in das Feld eingeben kann.
Hier stellt sich die Frage, wie erkenne ich anschliessend den Text?
mit
gehts mal nicht,
er findet zwar das Objekt, aber nachdem ich den Wert ja nirgends gespeichert habe, auch nicht in das Objekt, hab ich da ein Problem
ich könnte zwar sagen
nur das geht ja nicht, da ich ihm da den Wert welchen ich gerade eingegeben hab reinschreiben muss.
Hab ich hier einen Denkfehler oder ist das wirklich ein "Dreck"
danke