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: 44345
Benutzer: 7.220
Aktive Benutzer: 81
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 10 Stunden
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 3 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 29.06.21
Neues Mitglied
 
Registriert seit: Apr 2017
Beiträge: 26
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.
  #2 (permalink)  
Alt 29.06.21
Benutzerbild von Indikator-Trading
Premium Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 345
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)
  #3 (permalink)  
Alt 01.07.21
Neues Mitglied
 
Registriert seit: Apr 2017
Beiträge: 26
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!
Thema geschlossen

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 08:53 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.
-----------------------------------------------------------------------------------------------------------------------------