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: 4731
Beiträge: 42204
Benutzer: 7.087
Aktive Benutzer: 152
Links: 83
Wir begrüßen unseren neuesten Benutzer: lukasbin
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 21:38).
Neue Benutzer:
vor einem Tag
- lukasbin
vor 2 Tagen
- Luthergam
vor 3 Tagen
- banaguitar
vor einer Woche
- Denn
vor einer Woche
- Overoll

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

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor 4 Wochen
Neues Mitglied
 
Registriert seit: Apr 2017
Beiträge: 25
Mr_Snow befindet sich auf einem aufstrebenden Ast
Standard Bestimmte Werte aus Array löschen

Hi,

wieder mal die Arrays, die einem in MQL4 die Nerven kosten. Ich hoffe, Ihr könnt mir einen Denkanstoß geben:

Ich habe ein Array Katze[20][2]

Ich fülle das Array

#define Name 0
#define Farbe 1

Katze[0][Name] = Tim;
Katze[0][Farbe] = schwarz;
...
Katze[19][Name] = Lisa;
Katze[19][Farbe] = gefleckt;

Jetzt soll zB: Katze 3, 4, 10 und 15 aus dem Array gelöscht werden, ohne, dass sich die ursprüngliche Reihenfolge ändert.
In anderen Programmen ist das easy, Wert löschen und der Index rückt nach. In MQL4 bin ich am verzweifeln

Kann man das irgendwie lösen? Welche Werte ich löschen muss, erfahre ich immer erst in einer for-schleife, die prüft, welcher Wert aus dem Array raus muss. Ich kann diese zu löschenen Werte (also den Index), wenn es sein muss, auch in einem weiteren Array zwischenspeichern.

Besten Dank vorab.
Mit Zitat antworten
  #2 (permalink)  
Alt vor 4 Wochen
Benutzerbild von Indikator-Trading
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 242
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Hier eine Lösung mit einem zweidimensionalen Array und deinem Katzenbeispiel:

Code:
//+------------------------------------------------------------------+
//|                                                 ArrayExample.mqh |
//|                                  Copyright 2021, Trades Tech LLC |
//|                                                    a.timo@web.de |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, Traders Tech LLC"
#property link      "https://www.smarttraderstech.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()

{
  string StringArray[][2];

  ArrayResize(StringArray, 3);
  StringArray[0][0] = "Susi";
  StringArray[0][1] = "Gefleckt";
  StringArray[1][0] = "Lilli";
  StringArray[1][1] = "Grau";
  StringArray[2][0] = "Emmi";
  StringArray[2][1] = "Schwarz";
 
  for(int i = 0 ; i < ArrayRange(StringArray,0) ; i++)
    Print("Katze Nr. ", i+1, " heißt ", StringArray[i][0], " und ist ", StringArray[i][1]);
  Print("Katze " , StringArray[1][0] , " wird jetzt aus dem Array entfernt!");
  
  RemoveArrayElement(StringArray, 1);
  
  for(int i = 0 ; i < ArrayRange(StringArray,0) ; i++)
    Print("Katze Nr. ", i+1, " heißt ", StringArray[i][0], " und ist ", StringArray[i][1]);

  return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void RemoveArrayElement(string &LocalStringArray[][], int ElementNumber)
{
  string TempArray[][2];
  ArrayCopy(TempArray,LocalStringArray);
  ArrayResize(LocalStringArray,ArrayRange(LocalStringArray,0)-1);
  
  int j = 0;
  for(int i = 0; i <  ArrayRange(TempArray,0) ; i++)
  {
    if(i != ElementNumber)
    {
      LocalStringArray[j][0] = TempArray[i][0];
      LocalStringArray[j][1] = TempArray[i][1];
      j++;
    }
  }
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{

}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{

}
//+------------------------------------------------------------------+

Das wäre das Printergebnis zu diesem EA:

Katze Nr. 1 heißt Susi und ist Gefleckt
Katze Nr. 2 heißt Lilli und ist Grau
Katze Nr. 3 heißt Emmi und ist Schwarz
Katze Lilli wird jetzt aus dem Array entfernt!
Katze Nr. 1 heißt Susi und ist Gefleckt
Katze Nr. 2 heißt Emmi und ist Schwarz
Angehängte Dateien
Dateityp: mq5 ArrayExample.mq5 (5,2 KB, 1x aufgerufen)
__________________
www.SmartTradersTech.com
Der wohl umfangreichste NNFX EA den es gibt!
Mit Zitat antworten
  #3 (permalink)  
Alt vor 4 Wochen
Neues Mitglied
 
Registriert seit: Apr 2017
Beiträge: 25
Mr_Snow befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank für das Beispiel, in MQL4 ist das aufwendig, aber so kann ich mich reindenken. Ganz dickes Danke!
Mit Zitat antworten
Antwort

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 16:49 Uhr.





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