Steht alles in den Doks:
ArrayResize
Verändert die Größe der ersten Dimension des Arrays
Für gemischte Arrays kannst Du struct verwenden und ein Array 'daraus' machen:
struct mix { double a; int b; bool c; }; mix ArrMix[];
Bei mehrdimensionalen Arrays brauchts Du für jede Dimension Schleife und Index und die musst die niedrigeren Schleifenindices immer neu auf 0 setzen.
- www.mql5.com
Steht alles in den Doks:
ArrayResize
Verändert die Größe der ersten Dimension des Arrays
Für gemischte Arrays kannst Du struct verwenden und ein Array 'daraus' machen:
Bei mehrdimensionalen Arrays brauchts Du für jede Dimension Schleife und Index und die musst die niedrigeren Schleifenindices immer neu auf 0 setzen.
was meinst Du mit die niedrigeren Schleifenindices immer neu auf 0 setzten?
was meinst Du mit die niedrigeren Schleifenindices immer neu auf 0 setzten?
Kurz gesagt die Funktionen hier sind nur mit eindimensionalen Arrays nutzbar.
- www.mql5.com
was meinst Du mit die niedrigeren Schleifenindices immer neu auf 0 setzten?
ungetstet!!:
#define sz1=9 #define sz2=5 struct s { double d; int i; bool b; }; s a[][sz1][sz2]; ... ArrayResize(a,7); ... // e.g. set all int i0=ArrayRange(a,0),i1,i2; while(i0-->0){ i0=sz0; // oder ArrayRange(a,1) while(i1-->0){ i2=sz2; // oder ArrayRange(a,2) while(i2-->>0) { a[i0][i1][i2] = 0.1; ... } } }
so etwa.
ungetstet!!:
so etwa.
ich hab das jetzt so gelöst, das funktioniert mit dem befüllen mal gut
struct States { string symbol; bool ATRGridState; bool GridState; int GridPoint; bool TP0SymbolState; }; States states[];
void FillArray() { int total = SymbolsTotal(true); ArrayFree(states); ArrayResize(states,total,0); for(int i = 0; i<total; i++) { string sym = SymbolName(i, true); SymbolSelect(sym,true); states[i].symbol = sym; states[i].ATRGridState = FileLesen("ATRGrid"+sym+".csv",__FUNCTION__); states[i].GridState = FileLesen("Grid"+sym+".csv",__FUNCTION__); states[i].GridPoint = FileLesen("GridPoint"+sym+".csv",__FUNCTION__); states[i].TP0SymbolState = FileLesen("TP0"+sym+".csv",__FUNCTION__); } }
das funktioniert soweit super, jetzt hab ich nur noch das Problem,
wie suche ich einen String im Array
ArrayBSerach funktioniert ja nur mit Zahlen.
ich hab das jetzt so gelöst, das funktioniert mit dem befüllen mal gut
das funktioniert soweit super, jetzt hab ich nur noch das Problem,
wie suche ich einen String im Array
ArrayBSerach funktioniert ja nur mit Zahlen.
Schleife über alles, für Bsearch muss das Array sortiert sein, ginge aber auch. Ist halt immer nur de erste Dimension.
- www.mql5.com
Schleife über alles, für Bsearch muss das Array sortiert sein, ginge aber auch. Ist halt immer nur de erste Dimension.
Ja aber der BSerach kann ich den auch auf String machen?
lt doku nicht
Ja aber der BSerach kann ich den auch auf String machen?
lt doku nicht
Ja schon, auch ein String ist eine Bit-Kombination wie eine Zahl, nur ist vielleicht die Reihung - wenn sie wichtig ist - nicht wie gewünscht oder gedacht.
BSearch braucht halt eine eindeutige Sortierung, egal welche. Versuch's halt.
Ja schon, auch ein String ist eine Bit-Kombination wie eine Zahl, nur ist vielleicht die Reihung - wenn sie wichtig ist - nicht wie gewünscht oder gedacht.
Versuch's halt.
ok, das geht so auch, mit StringFind kann ich Arrays auch durchsuchen und vergleichen, dann brauch ich nicht vorher noch sortieren
for(int i=0;i<ArraySize(states);i++) { if(StringFind(states[i].symbol,"US30") != -1) { Print("Position ",i," = ",states[i].symbol); } }ps: hab ich im englischen Forum gefunden über Dr. Google
- www.mql5.com
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo,
mal da eine Frage, hab ja noch nie globale Arrays verwendet
ich will ein Array definieren, das würde ich im globalen Bereich machen
dann würde ich das Array über eine Funktion in der OnInit füllen
jetzt ist mir schon klar, ich kann kein gemischtes Array befallen, aber den Bool Wert, dann ich auch als string speichern
nur wie spreche ich den 2ten Wert beim befüllen an?
das Ergebnis des Arrays sollte dann ja so sein
EURUSD 1
GBPUSD 0
DAX 1
US30 1
...
danke
amando