Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Fehlermeldung: "arrays passed by reference only" (http://www.expert-advisor.com/forum/showthread.php?t=4912)

TLO Trader 30.04.16 21:40

Fehlermeldung: "arrays passed by reference only"
 
Ich habe folgendes Problem:

Ein älterer Indikator, den ich unter einer früheren Version des MT4 programmiert habe (ca. im Jahr 2013), funktioniert zwar immer noch, aber wenn ich ihn jetzt neu compiliere, dann funktioniert er nicht mehr, d.h. ich kann keine Änderungen mehr vornehmen. Stattdessen erhalte ich Fehlermeldungen wie : arrays passed by reference only.

Hat jemand eine Idee, wo das Problem liegt?

Ca$hDigger 01.05.16 00:21

Hallo,

füge mal ein & vor den Name des Arrays. Beispiel: double fu(double &a[])

C$D

Ca$hDigger 01.05.16 00:25

ps: und #property strict kann hilfreich sein die richtige Stelle zu finden

TLO Trader 01.05.16 03:07

Vielen Dank, Cash Digger!

Das Setzen von einigen "&" hat die Anzahl der Fehlermeldungen drastisch reduziert! :)

TLO Trader 01.05.16 03:16

Allerdings ist jetzt noch eine Fehlermeldung übrig:
"the size of local variables is too large (more than 512kb)".

Ich wusste gar nicht, dass man irgendwo in MQL4 die Grösse
der lokalen Variablen auswählen kann ??

Wenn Du da auch noch so einen Tipp hättest, wäre ich
sehr dankbar! :):):)

Ca$hDigger 01.05.16 10:06

Eine lokales Array scheint zu groß definiert zu werden. Hilfreich wäre zu wissen wie viele Dimensionen dieses Array hat und wie viel Speicherplatz also wie viele Felder reserviert werden und um welchen Datentyp es sich handelt.

Mir fallen zwei Möglichkeiten ein.

- Man reduziert die Größe des Arrays indem weniger Felder zugewiesen werden. Dies wäre vermutlich die sauberste Lösung. Ob das Programm dann noch alles macht wie gewollt hängt von der Logik ab bzw ob die Anzahl der vom Programm benötigten Felder unterschritten wurde und welche Dimension es betrifft und wie diese vom Programm gebraucht werden.

- Oder man macht das Array zu einem globalen dann kann es bis 2GB aufnehmen. Ist aber aus verschiedenen Gründen gefährlich, dazu müsste man es an die individuelle Logik des Programms anpassen. Evt muss das Array geNULLt werden usw...

C$D


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:57 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum