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.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3824
Beiträge: 36915
Benutzer: 6.081
Aktive Benutzer: 495
Links: 80
Wir begrüßen unseren neuesten Benutzer: DarthTrader
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 16 Stunden
- DarthTrade...
vor 18 Stunden
- Eren
vor einem Tag
- Rene1504
vor einem Tag
- ibdafx
vor 2 Tagen
- Batangenyo

Onlineuser
'Wer ist online' anzeigen Benutzer: 3
Gäste: 51
Gesamt: 54
Team: 0
Team:  
Benutzer:  Domke01, fxnoob, Stier
Freunde anzeigen

Empfehlungen

Werbung

Like Tree4Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 08.11.13
Mitglied
 
Registriert seit: Jun 2013
Beiträge: 220
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Question Bestimmten Wert aus String auslesen

Guten Tag,

wenn ein String mit mehreren Werten besteht, wie kann man daraus einen bestimmten Wert (zb den 5. Wert in der Reihe des Strings) auslesen und in eine int oder double Variable schreiben?

Gruß

C$D
  #2 (permalink)  
Alt 08.11.13
Mitglied
 
Registriert seit: Mar 2012
Beiträge: 131
Trabo befindet sich auf einem aufstrebenden Ast
Standard

wenn es immer der 5 Wert ist, kannst du es einfach mit einer schleife durchjagen und raussuchen.

strtodouble() nimmt das zeichen und formt es als double
strtointgr() nimmt das zeichen und formt es als eine ganze zahl

die schreibeweise des quellcodes ist nciht ganz korrekt, unter der hilfe siehst du den befehl aber direkt.

bsb:
string variable[0] = "2.25";
strtodouble(variable[0],2) --> 2.2 // als double
strtodouble(variable[0],3) --> 2.25 // als double

Lg
  #3 (permalink)  
Alt 08.11.13
Mitglied
 
Registriert seit: Jun 2013
Beiträge: 220
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

Irgendwie ist der Wurm drin:

Code:
string variable = 111+","+222+","+333+","+444+","+555;

double test_double = StrToDouble(variable[0],2);

int test_int = StrToInteger(variable[0]);
Gibt des in [] die Position an? Wenn ich jetzt den 5. Wert (555) in die variable test_double bzw test_int bekommen will wie ist dann der richtige code?

Gruß
  #4 (permalink)  
Alt 08.11.13
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Da ist ein bißchen viel Quatsch dabei, @Trabo.
Die Lösung sieht u.a. so aus.

Code:
int cnt = 0;
string str;
string wert = "";
string variable = 111+","+222+","+333+","+444+","+555;
for (int i = 0; i < StringLen(variable); i++) {
   str = StringSubstr(variable, i, 1);
   if (str = ",") cnt++;
   if (cnt == 4 && str != ",") wert = wert + str;
   if (cnt == 5) break;
}
double zahl1 = StrToDouble(wert);
int zahl2 = StrToInteger(wert);
Viel Spaß

traderdoc
Ca$hDigger likes this.
  #5 (permalink)  
Alt 08.11.13
Mitglied
 
Registriert seit: Jun 2013
Beiträge: 220
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

Danke das funktioniert. Noch eine Frage dazu, wie müsste der Code aussehen damit man alle Werte eines String in einzelne Variablen zerlegt?

Gruß
  #6 (permalink)  
Alt 08.11.13
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Für 5 Werte:

Code:
string wert[4];
int cnt = 0;
string str;
wert[0] = "";
string variable = 111+","+222+","+333+","+444+","+555;
for (int i = 0; i < StringLen(variable); i++) {
   str = StringSubstr(variable, i, 1);
   if (str == ",") {
      cnt++;
      wert[cnt] = "";
      continue;
   }
   wert[cnt] = wert[cnt] + str;
}
Viel Spaß!

traderdoc
Ca$hDigger likes this.
  #7 (permalink)  
Alt 08.11.13
Mitglied
 
Registriert seit: Jun 2013
Beiträge: 220
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

Du bist echt eine riesen Hilfe. Funktioniert, Klasse danke!
  #8 (permalink)  
Alt 19.11.13
Mitglied
 
Registriert seit: Jun 2013
Beiträge: 220
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Für 5 Werte:

Code:
string wert[4];
int cnt = 0;
string str;
wert[0] = "";
string variable = 111+","+222+","+333+","+444+","+555;
for (int i = 0; i < StringLen(variable); i++) {
   str = StringSubstr(variable, i, 1);
   if (str == ",") {
      cnt++;
      wert[cnt] = "";
      continue;
   }
   wert[cnt] = wert[cnt] + str;
}
Viel Spaß!

traderdoc

Guten Tag,

wenn man den string wert[4]; nicht als string sondern als double-array haben möchte (sonst gibts bei mir in weiterer Verwendung "different types in comparison") wie muss man das anstellen? Ändere ich einfach string zu double bekomme ich die Fehlermeldung "incompatible types".

LG
  #9 (permalink)  
Alt 19.11.13
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Code:
double irgendwas[4];
string wert[4];
int cnt = 0;
string str;
wert[0] = "";
string variable = 111+","+222+","+333+","+444+","+555;
for (int i = 0; i < StringLen(variable); i++) {
   str = StringSubstr(variable, i, 1);
   if (str == ",") {
      cnt++;
      wert[cnt] = "";
      continue;
   }
   wert[cnt] = wert[cnt] + str;
   irgendwas[cnt] = StrToDouble(wert[cnt]);
}
  #10 (permalink)  
Alt 20.11.13
Mitglied
 
Registriert seit: Jun 2013
Beiträge: 220
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

Danke. Mir ist aufgefallen das so der letzte Wert als 0 ausgegeben wird.
Stelle ich den Wert von "double irgendwas" einen Wert höher ist das Problem gelöst, hab ich durch Probieren rausgefunden.

Letzter Wert = 0
Code:
double irgendwas[4];
string wert[4];
Letzter Wert korrekt
Code:
double irgendwas[5];
string wert[4];
Kann man das so dann lassen bzw muss der double dann immer +1 vom string sein oder hab ich vielleicht irgendwo ein Fehler gemacht?
Thema geschlossen

Lesezeichen

Stichworte
mql4, programmierung, programmierung metatrader, string, string auslesen


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 17:04 Uhr.



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