Forex programozás › Fórum › Kérdések az MQL4 programozási nyelvvel kapcsolatban › Access violation write to ….
-
SzerzőBejegyzés
-
Sziasztok!
Sajnos nagyon komoly problémát okozott nekem az új, gyönyörű és nagyon jó MT4.
Biztos mindenki nagyon elégedett vele a Metaquotes-nél, és nagy szükség volt erre az újításra… Különben soha sem fogják végre letolni az emberek torkán az MT5 amit annyi ideje fejlesztenek már haszon nélkül. Így már sínen van a dolog.
Bocs!
Mivel a régi robotom nem működött megfelelően az új mt4 alatt, ezért át kellett írnom. Sikeresen hiba és figyelmeztetés nélkül lefordult, de teszt alatt vagy charthoz csatolva ezt írja ki:
„Access violation write to 0x22C77B19 in ‘D:\Program Files (x86)\MetaTrader 4 Admiral Markets AS\MQL4\Experts\Calendar 4G EA.ex4
Testing pass stopped due to a critical error in the EA”
Nagyon béna vagyok? Mit nem vettem észre? Mi okozhatja? Ha az, hogy „elavult a robot és cseréld le”, akkor
igen rövid az élettartamuk ezeknek, mert kb. 6 hónapja készítettem.
Előre is köszönöm a segítséget!Az első bekezdéseddel totálisan egyetértek!
A robotod kapcsán így látatlanban nem tudok sokat mondani. Régi (509-es) fordítóval fordítsd le, és használd az ex4-et az új MT4-ben. (A forráskódot ne rakd mellé, mert akkor lefordul).
Milyen rutinokat használsz az expertedben? Külső dll hívás, ilyesmi van?
Nagyon gyorsan reagáltál! :-) Köszi
Tulajdonképpen okultam ebből, és az egyik gépemen még nem frissült régi mt4-et letömörítettem zip-be.
Ha módosítanom kell, ha „bug” van, akkor kicsomagolom a rootba, és onnét indítom el. Szerencsére nem kell feltelepített verziónak lennie. Ha frissíteni akarja magát, akkor uac akadályozza, vagy a net le van kapcsolva. Az eredeti ex4 valóban jól fut. Itt annyi történt, hogy ott tároltam az mq4 fájlt is az expert mappában. Frissítéskor átmásolta, újraindult és lefordította magának az mq4-et.
A robotról annyit, hogy egy FFcal indikátort integráltam ami persze ugyanúgy nem indul ha lefordult a 600-ban. Ezeken kívül a következőket hívja meg: stderror.mqh, stdlib.mqh, Kernel32.dll. Az utóbbival kapcsolatban vannak kétségeim. A dll-nél azt írta, hogy az értéke mindenképpen nulla lenne. De ebben az esetben nem egy ilyen hibát írna ki a terminál. Ez a hiba szerintem leginkább egy írásvédett blokkba történő írási kisérlet megakadályozódása miatt lehet. A Hexa kód a memória, vagy valamilyen windowsos állomány dll-je, vagy exéje lehet.
Kivetteem a robotból a kernel32 behívást, és eltávolítottam a társított funkciókat. Sőt kivettem a custom indikátort is. Szerintem ez egy korai MT4 bug lehet, mert nem írt hibát lefordításkor, csaak amikor futtatni akartam. Viszont olyankor volt, hogy hirtelen halállal halt…
Nekem még kicsit szokatlan az „új” metaeditor (mivel ez az mt5-ből köszön vissza).
Biztosan van valami megoldás, ami megmutatja melyik sor okozza az összeomlást.
Nem akartam megtanulni az mq5-öt de már látom, az felé megyünk.A kernel32.dll baszkurálása valószínűleg nem képezi szerves részét az indikátor működésének, inkább valami azonosítási rendszerhez kellhet. Jól tetted, hogy kivetted.
A MT4 fordításkor nem ellenőrzi az importált függvények működőképességét, így fordulhat elő amit leírtál – hogy runtime során derülnek ki az esetleges hibák.
Az mql5 önmagában nem rossz dolog, ellenben az erőltetett, kapkodós átállással.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.