Geschrieben 25. Juli 201213 Jr. comment_137641 Hat jemand eine Liste von den <MetaTrader4_Internal_Message>. Ich habe nur eine "russiche" gefunden - müsste man halt übersetzten.Man könnte doch eine eigene - TN-winUser32.mqh - aufbauen - was meint ihr?? oder Melden
Geschrieben 25. Juli 201213 Jr. comment_137655 Hat jemand eine Liste von den Ist ja nicht so wirklich mein Bereich....Aber meinst du vllt. diese hier ? List Denke eher nicht, das wäre wohl zu einfach gewesen Melden
Geschrieben 25. Juli 201213 Jr. Autor comment_137656 Ist ja nicht so wirklich mein Bereich....Aber meinst du vllt. diese hier ? List Denke eher nicht, das wäre wohl zu einfach gewesen leider hast du recht es geht um die Erweiterung von der winUser32.mqh Library Melden
Geschrieben 25. Juli 201213 Jr. comment_137657 leider hast du recht Okay, letzter Versuch, dann lasse ich die Suche von Dingen, von denen ich nichts verstehe... //=========================================================================== // FUNCTIONS LIBRARY //=========================================================================== /* AppendIfMissing() appends a character to a string if it's not already the rightmost character AppendIfNotNull() appends a character to a string if the string is not null BarConvert() converts a bar# (candle#) to the equivalent bar# on another timeframe BaseToNumber() performs multibase arithmetic: converts a non-base 10 number (string) to a base 10 integer BoolToStr() converts a boolean value to "true" or "false" DateToStr() formats a MT4 date/time value to a string, using a very sophisticated format mask DatesToStr() performs multiple DateToStr() operations in a single function DebugDoubleArray() unloads a set of values from a double array, prefixed by the element number, to a single string DebugIntegerArray() unloads a set of values from an int array, prefixed by the element number, to a single string DebugStringArray() unloads a set of values from a string array, prefixed by the element number, to a single string DivZero() returns 0 instead of 'divide by zero' error, if denominator evaluates to 0 DoubleArrayToStr() unloads a set of values from a double array to a single string, inserting a specified delimiter between the values EasterDay() returns the MT4time value of Easter Sunday for the given year ExpandCcy() expands a curency symbol name, e.g. "EJ" to "EURJPY" ExtractAlpha() returns alphabetic (or other) characters in a string ExtractUnique() returns 1 occurrence only of each char in a string; result may be optionally sorted asc/desc FileSort() shell sorts an ASCII text file, rewriting the file with its records in alphanumeric order GetHash() calculate and return checksum of a string GetVisibility() returns suitable OBJPROP_TIMEFRAMES value from a timeframes string (e.g. "M1,M5,M15") IntegerArrayToStr() unloads a set of values from an int array to a single string, inserting a specified delimiter between the values ListGlobals() lists all GlobalVariables and their values, to a string ListOrders() lists all orders of your chosen stati (open/pending/closed/deleted) to a string LookupDoubleArray() looks up a numeric value in a double array, returning the element number (if found) LookupIntegerArray() looks up a numeric value in an int array, returning the element number (if found) LookupStringArray() looks up a string value in a string array, returning the element number (if found) MathFactorial() calculates a factorial n(n-1)(n-2)...1 using a recursive technique MathFix() returns the value of N, rounded to D decimal places (fixes precision bug in MQL4 MathRound) MathInt() returns the value of N, rounded DOWN to D decimal places (fixes precision bug in MQL4 MathFloor) MathSign() returns the sign (-1,0,+1) of a number NumberToBase() performs multibase arithmetic: converts a base 10 integer to a non-base 10 number (string) NumberToStr() formats a numeric (int/double) value to a string, using a very sophisticated format mask NumbersToStr() performs multiple NumberToStr() operations in a single function OrderStatus() given a ticket number, returns the order status (O=open, P=pending, C=closed, D=deleted, U=unknown) ReadWebPage() reads a page from a specified URL into a string ReduceCcy() reduces a currency symbol name, e.g. "EURJPY" to "EJ" ReturnDay() returns the MT4time value of the (e.g.) 3rd Sunday after 14 Feb 2011 ShellsortDoubleArray() shell sorts an array of double values into ascending or descending sequence ShellsortIntegerArray() shell sorts an array of int values into ascending or descending sequence ShellsortString() shell sorts the characters in a string into ascending or descending ASCII sequence ShellsortStringArray() shell sorts an array of string values into ascending or descending ASCII sequence StrToBool() converts a suitable string (T(rue)/t(rue)/F(alse)/f(alse)/1) to a boolean value StrToChar() returns the decimal ASCII value of a 1 byte string (inverse of MQL4's CharToStr()) StrToColor() converts a string (color name, RGB values, etc to a MQL4 color StrToDate() converts a number of different string patterns to a MT4 date/time value StrToDoubleArray() loads a double array from a delimiter-separated set of string values (e.g. "1,2,3"); returns the number of array elements loaded StrToIntegerArray() loads an int array from a delimiter-separated set of string values (e.g. "1,2,3"); returns the number of array elements loaded StrToNumber() strips all non-numeric characters from a string, returning a numeric (int/double) value StrToStr() left/right/center aligns, or truncates, a string, using a very sophisticated format mask StrToStringArray() loads a string array from a delimiter-separated set of string values (e.g. "1,2,3"); returns the number of array elements loaded StrToTF() converts a timeframe string to a number (e.g. "M15" to 15) StringArrayToStr() unloads a set of values from an string array to a single string, inserting a specified delimiter between the values StringDecrypt() unencrypts a string that was previously encrypted using StringEncrypt() StringEncrypt() encrypts a string StringFindCount() returns the number of occurrences of a certain substring in a string StringInsert() inserts characters into a given position in a string StringLeft() returns the leftmost characters, or all but the N rightmost characters, of a string StringLeftExtract() extracts N characters from a string, counting from the left StringLeftPad() inserts specified padding characters at the beginning of a string StringLeftTrim() removes all leading spaces from a string StringLower() converts all alphabetic characters in a string to lowercase StringOverwrite() overwrites characters in a given position of a string StringRepeat() returns a given string, repeated N times StringReplace() replaces substring in a string with another substring StringReverse() reverses a string, e.g. "ABCDE" becomes "EDCBA" StringRight() returns the rightmost characters, or all but the N leftmost characters, of a string StringRightExtract() extracts N characters from a string, counting from the right StringRightPad() appends specified padding characters to the end of a string StringRightTrim() removes all trailing spaces from a string StringTranslate() translates characters in a string, given a full translation table StringTrim() removes all (leading, trailing and embedded) spaces from a string StringUpper() converts all alphabetic characters in a string to uppercase StrsToStr() performs multiple StrToStr() operations in a single function TFToStr() converts a number to a timeframe string (e.g. 1440 to "D1") YMDtoDate() converts 3 integers (year, month and day) to a MT4 date/time value d() outputs up to 8 values to the file /EXPERTS/FILES/DEBUG.TXT, appending data to the end of the file dd() outputs up to 8 values to the file /EXPERTS/FILES/DEBUG.TXT, creating a new file err_msg() returns a full description of an error, given its error code number log() outputs up to 8 values for viewing using Microsoft's DebugView facility Melden
Geschrieben 25. Juli 201213 Jr. Autor comment_137661 guckst du hier ... C:\Program Files (x86)\MetaTrader\experts\include\WinUser32.mqh Melden
Geschrieben 6. September 201213 Jr. Autor comment_138937 ... heute habe ich mal ein mql4 Rätsel für die Profis... init { ... get_val_from_EO_wnd(childWND); } double get_val_from_EO_wnd(int hWnd) { string cName = "012345678901234567890123456789"; int dialog, edit, label; string eo[1]; dialog = GetWindow(hWnd, GW_CHILD); GetClassNameA(dialog, cName, 30); string edVal = " "; string labT = " "; if (cName == "#32770") { edit = GetDlgItem(dialog, CID_EDIT); SendMessageA(edit, WM_GETTEXT, 10, edVal); eo[0] = edVal; log("############"); log("edVal_0="+edVal); // edVal = ""; //log("edVal_1="+edVal); //log("edValue_1="+eo[0]); log("-----------"); dialog = GetWindow(hWnd, GW_CHILD); GetClassNameA(dialog, cName, 30); label = GetDlgItem(dialog, CID_LABEL); SendMessageA(label, WM_GETTEXT, 10, labT); eo[1] = labT; } log("edVal="+edVal); log("labT="+labT); log("eo[0]="+eo[0]); log("eo[1]="+eo[1]); return; } Ergebnis der Ausgabe: DebugView[3112] ############[3112] edVal_0=0.10[3112] -----------[3112] edVal=Lot[3112] labT=Lot[3112] eo[0]=Lot[3112] eo[1]=Lot Lass ich das mit dem Array weg stehen die korrekten Werte in den Variablen <edVal> und <labT>Wie bekomme ich nun die Wert <0.10> in eo[0] und den Wert <Lot> in eo[1] kann mir einer erklären was da abgeht????? Der Dialog ist egal - Haupsache ein Label und eine Edit-Box Melden
Geschrieben 6. September 201213 Jr. comment_138953 Kannst Du bitte mal testen, was passiert wenn Du string eo[2]; nutzt? Vermutlich definierst Du mit "string eo[1]" einen Array mit nur einer Variablen(Wert/String wie auch immer) , nämlich den String den Du mit eo[0]="irgendwas" abrufen könntest . Den Wert eo[1] gibt es in Deinem Code nicht, Du hast ihn nicht zugelassen . Das machst Du erst mit string eo[2] Ist nur eine Vermutung und aus der Hüfte geschossen . KB Melden
Geschrieben 6. September 201213 Jr. comment_138956 Hätte die gleiche Vermutung. Ich weiß nicht wie MT mit out-of-bounds reagiert, aber es gäbe ein paar mögliche Erklärungen warums genau so aussieht. Ok, MT hat "interessantes" Verhalten bei out-of-bounds. Es gibt scheinbar einen "Out-of-Bounds Wert". Wenn man auf einen Index den es nicht gibt schreibt, wird danach bei Abfrage von einem index den es nicht gibt immer dieser Wert zurückgegeben.Aber das erklärt das Verhalten in deinem Fall noch überhaupt nicht... Melden
Geschrieben 6. September 201213 Jr. Autor comment_138957 Kannst Du bitte mal testen, was passiert wenn Du string eo[2]; nutzt? Vermutlich definierst Du mit "string eo[1]" einen Array mit nur einer Variablen(Wert/String wie auch immer) , nämlich den String den Du mit eo[0]="irgendwas" abrufen könntest . Den Wert eo[1] gibt es in Deinem Code nicht, Du hast ihn nicht zugelassen . Das machst Du erst mit string eo[2] Ist nur eine Vermutung und aus der Hüfte geschossen . KB nein das ist es nicht... es liegt wieder mal im Detail versteckt und zwar im Buffer SendMessageA(label, WM_GETTEXT, 10, labT); SendMessageA(hWnd, WM_GETTEXT, BufferSize, Var); ...der war einfach zu gross gewählt - die erste Länge ist 5 die zweite 4 - macht 9 und meine Size war 10 - d.h. die ersten Daten sind wahrscheinlich nach hinten geschoben wurden weil ja Platz im Buffer ist habe jetzt vor WM_GETTEXT das gesetzt len = SendMessageA(label, WM_GETTEXTLENGTH, 0, 0); SendMessageA(label, WM_GETTEXT, len+1, labT); jetzt geht es... Bearbeitet 6. September 201213 Jr. von mtbf40 Melden
Geschrieben 6. September 201213 Jr. comment_138960 ... heute habe ich mal ein mql4 Rätsel für die Profis...jetzt geht es... Du bist der Profi. Melden
Geschrieben 7. September 201213 Jr. Autor comment_138991 Du bist der Profi. DANKE... aber siehe next Post... Melden
Geschrieben 7. September 201213 Jr. Autor comment_138993 ... next Post - nächstes Problem double set_val_to_EO_wnd(int hWnd, string labT, string par) { string cName = "012345678901234567890123456789"; int dialog, edit, label; double parS; //String par = 1,12 parS = StrToDouble(par); //parS = seltsamer Weise 1.000000 ????? log("komme mit -> "+parS+" labT="+labT); dialog = GetWindow(hWnd, GW_CHILD); GetClassNameA(dialog, cName, 30); string labelT = " "; edit = GetDlgItem(dialog, CID_EDIT); label = GetDlgItem(dialog, CID_LABEL); SendMessageA(label, WM_GETTEXT, 10, labelT); if (labelT == labT) { log("parS="+parS); SendMessageA(edit, WM_SETTEXT, 0, parS); } } was läuft denn da schon wieder falsch???? - ich komme mit einem String -> 1,12 an und StrToDouble macht 1.00000000 daraus Bearbeitet 7. September 201213 Jr. von mtbf40 Melden
Geschrieben 8. September 201213 Jr. comment_139009 Ich habe das jetzt nicht getestet, aber es muss doch heißen 1.12 nicht 1,12 oder ? Melden
Geschrieben 8. September 201213 Jr. Autor comment_139012 Ich habe das jetzt nicht getestet, aber es muss doch heißen 1.12 nicht 1,12 oder ?das ist richtig - aber ich bekomme im Moment nur 1,12 übergeben und muss damit arbeiten! Melden
Geschrieben 8. September 201213 Jr. comment_139013 Dann wirst Du vielleicht mit int StringGetChar( string text, int pos) weiter kommen ? Indem Du den Text an der 1., der 3. und 4.Stelle ausliest, dann einen "." einfügst und mit simplem "+" den String neu zusammenfügst String par = "1,12";// String A=StringGetChar(par,0);// String B=StringGetChar(par,2);// String C=StringGetChar(par,3);// String NeuerString=A + "." + B + C;// jetzt sollte es 1.12 sein parS = StrToDouble(NeuerString);// Aber das wirst Du wohl auch schon überlegt haben ? KB Melden
Geschrieben 9. September 201213 Jr. comment_139039 Ich würd mit StringFind und StringSubstr arbeiten um den , zu ersetzen aber im wesentlichen genau was KB meint ;) Melden
Geschrieben 9. September 201213 Jr. Autor comment_139041 Ich würd mit StringFind und StringSubstr arbeiten um den , zu ersetzen aber im wesentlichen genau was KB meint ;) es führen ja gewissermassen mehrere Wege nach Rom und zwar folgende:1. die von euch beschriebenen - ich müsste dann auf jeden Fall mit einer for-Schleife arbeiten, denn die Werte können ja differieren - z.B. 1,25, 12,90, 123,002. einfach ein String-Edit in die Hauptapplikation statt einem Numeric-Edit - dann kann ich einfach 1.12 eingeben3. ... und damit habe ich das eigentliche Problem gefunden - in den Systemeinstellungen unter <Region und Sprache> das Dezimaltrennzeichen auf <.> geändert. das ausgerechnet das das Problem ist, habe ich mir fast gedacht!! - es ist eben "unser Problem" gegenüber dem englischsprachigen Raum, der unterschiedlichen Nutzung bestimmter Zeichen ich habe jetzt erst einmal 3. angewandt, weil das am schnellsten ging - mal sehen wie sich das auf anderen Systemen auswirkt.Am sinnvollsten ist 1. - denn dann habe ich überhaupt keine Probleme Melden
Geschrieben 9. September 201213 Jr. comment_139044 1. ......., denn die Werte können ja differieren - z.B. 1,25, 12,90, 123,00...... Dann wäre der Variante von Mythos , und richtig mit "For" , der Vorzug zu geben .Komma suchen und ersetzen . Mir war nicht klar, dass die Stringlänge variieren kann, hätte ich auch dran denken können . -,- KB Melden
Hat jemand eine Liste von den <MetaTrader4_Internal_Message>. Ich habe nur eine "russiche" gefunden - müsste man halt übersetzten.
Man könnte doch eine eigene - TN-winUser32.mqh - aufbauen - was meint ihr??
oder 