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: 43257
Benutzer: 7.220
Aktive Benutzer: 82
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 einer Stunde
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107

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

Empfehlungen

Like Tree4Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 08.11.13
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 364
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
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 364
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: 2.733
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
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 364
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: 2.733
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
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 364
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

Du bist echt eine riesen Hilfe. Funktioniert, Klasse danke!
  #8 (permalink)  
Alt 19.11.13
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 364
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: 2.733
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
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 364
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 23:17 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.
-----------------------------------------------------------------------------------------------------------------------------