MT4 DLL-geheugenvervuiling - Page 3
Page 3 of 635 FirstFirst 12345 LastLast
Results 21 to 30 of 41

Thread: MT4 DLL-geheugenvervuiling

  1. #21
    Houd er rekening mee dat ik de rietjes vasthield door een gebrek aan informatie en probeerde te bedenken waarom je DLL nog steeds crashte ...
    Quote Originally Posted by ;
    Zoals ik het heb geschreven, als deinit () niet wordt aangeroepen, zal het object niet worden vrijgegeven. Maar afgezien van het geheugenlek dat niet zou moeten crashen omdat het tweede object een nieuwe geheugenloion heeft, klopt dat?
    Ja juist. Dus uw DLL moet enige verantwoordelijkheid nemen voor wat het doet in geval van crashesSlecht gebruik door de aanroepende appOnbetrouwbare oproeptaal (MQL4)Of om het gebruik van de aanroepende app te vergemakkelijken. Als de DLL wordt verwijderd en een deel van jein Deinit () niet is uitgevoerd, zoals je zegt, zullen deze objecten niet worden vrijgegeven, dus ... Het is mijn ervaring (niet-gedocumenteerde functie!) - en gezond verstand zou dit ondersteunen - dat: Zowel de Init () en DeInit () functies in een EA worden uitgevoerd in de Main MT4 Apps Thread. Dus uw InitDeInit-implementatie hoeft niet thread safe te zijn. Alleen de functie Start () wordt uitgevoerd in een andere thread. Zolang u Init () of DeInit () niet vanuit uw MT4 Start () -functie belt, zal alles OK zijn en u kunt hiervoor een eenvoudige Tlist gebruiken. Dit is een beetje overdreven maar een goede oefening niettemin. Als niets anders het doet, moet je eraan denken om na te denken over opruimen. Dus met het bovenstaande in gedachten zou je iets kunnen doen als: Ingevoegd codebibliotheek YourDLL; gebruikt SysUtils, Classes; type tyourobject = class (bijvoeglijk naamwoord) private name: string; einde; var SaveExit: Pointer; objs: tlist; function YourNormal_InitObj (paarnaam: pchar): longint; STDCALL; var tmpobj: tyourobject; begin tmpobj: = tyourobject.create; objs.Add (tmpobj); tmpobj.name: = string (paarnaam);/het resultaat van andere init-bestanden: = longint (tmpobj); einde; function YourNormal_DEInitObj (objptr: longint): longint; STDCALL; begin objs.remove (pointer (objptr)); tyourobject (objptr) .Gratis; resultaat: = 0; einde; procedure LibExit; begin probeer terwijl objs.Count gt; 0 begin//edited tyourobject (objs # 91; 0 # 93. gratis; objs.delete (0);//bewerkt einde;//bewerkte objs.Free; finally ExitProc: = SaveExit;/herstel exit keten keten einde; einde; exporteert YourNormal_InitObj index 1, YourNormal_DEInitObj index 2; start SaveExit: = ExitProc;/exit-procedure keten opslaan ExitProc: = @LibExit;/installeer LibExit exit-procedure objs: = tlist.create; einde.

  2. #22
    Quote Originally Posted by ;
    Houd er rekening mee dat ik de rietjes vasthield door een gebrek aan informatie en probeerde te bedenken waarom je DLL-bestand nog steeds crashte ...

  3. #23
    Quote Originally Posted by ;
    Dit is iets dat ik eenvoudigweg heb geoptimaliseerd door mijn EA's als voor altijd te beschouwen

  4. #24
    Quote Originally Posted by ;
    heilige rotzooi een andere delphi-codeur
    of Lazarus

  5. #25
    Quote Originally Posted by ;
    Het was mijn ervaring (niet gedocumenteerde functie!) - en gezond verstand zou dit ondersteunen - dat: Zowel de Init () en DeInit () functies in een EA worden uitgevoerd binnen de Main MT4 Apps Thread. Dus uw InitDeInit-implementatie hoeft niet thread safe te zijn. Alleen de functie Start () wordt uitgevoerd in een andere thread. Zolang u Init () of DeInit () niet vanuit uw MT4 Start () -functie belt, zal alles OK zijn en u kunt hiervoor een eenvoudige Tlist gebruiken.
    Dit, mijn vriend, is heel goed om te weten
    .

  6. #26
    Quote Originally Posted by ;
    of Lazarus
    Ik gebruik Delphi 2009. Wat denk je van jongens? Ik ben sinds 1998 in Delphi aan het ontwikkelen (versie 3), ben begonnen met het schrijven van MT4 EA's in 2005 en heb de twee vorig jaar gecombineerd. Het gebruik van DLL's met MT4 kwam gedeeltelijk voort uit de behoefte van mijn klanten om hun logica te beveiligen en client-serverlicenties te gebruiken, maar de extra codeerfuncties deden geen pijn

  7. #27

    Quote Originally Posted by ;
    Ik denk dat ik eenvoudig Lazarus zal downloaden ... Trouwens, wat is dit voordeel dat Lazarus heeft en Delphi niet? dus over de code: wanneer ik het zo doe: [code] functie foo (x: double; y: PChar): PChar; STDCALL; var ...
    Heb je mijn suggestie geprobeerd met ansistring (y) in plaats van met y? U kunt ook proberen om een ??????variabele van het type ansistring te declareren en deze variabele te vullen met ansistring (y) en vervolgens de stringconenatie met die variabele uit te voeren in plaats van y rechtstreeks te gebruiken. Het zou interessant zijn om niet gewoon op te geven en in plaats daarvan proberen te achterhalen wat het nodig heeft om deze code met Delphi te laten werken, dit zou interessante inzichten opleveren. De twee belangrijkste voordelen van Lazarus boven Delphi zijn voor mij: het is open source en dit betekent dat het voor altijd zal bestaan ??????en niet plotseling zal verdwijnen of anderszins onbeschikbaar of onbruikbaar zal zijn zoals het onvermijdelijk gebeurt met alle commerci�le softwareproducten vroeg of laat. (Hint: Kylix) het is beschikbaar op meer platforms dan alleen Windows, het is beschikbaar voor Linux (belangrijk voor mij) en Mac en voor de meest gebruikte verschillende processorarchitecturen en ik kan eenvoudig hetzelfde programma compileren zonder enige wijzigingen of andere speciale vereisten op een van de ondersteunde platforms. </P>

  8. #28

  9. #29

    Quote Originally Posted by ;
    download de b�taversie van de laatste lazarus (die eruit ziet als de enige die beschikbaar is), is het stabiel?
    Lazarus is vrij stabiel. De scheppers van Lazarus zijn perfectionisten die streven naar perfectie. Het lijkt perfectie voor sommigen van hen is gedefinieerd als V1.0 maar elke perfectionist weet ook dat perfectie nooit kan worden bereikt, dus ik denk dat ze over tien jaar bij 0.9.99.99999 release-kandidaat 8 zullen zijn terwijl de software zelf een marketing zou hebben verdiend vriendelijk versienummer 5.0 al jaren geleden als het een commercieel project was. Er zijn al veel discussies hierover op de mailinglijst geweest maar ze lijken allemaal het perfectionisme-syndroom te lijden, maar dit moet worden gezien als een positieve kwaliteit van een softwareontwikkelaar en als een teken voor buitengewoon goede software. De compiler zelf, die een afzonderlijk project is, staat al op 2,5 en 2.4.3 wordt gebruikt in de nieuwste Lazarus-builds. Het Lazarus-project is alleen de IDE en de Lazarus Components Library, de compatibele kloon en herplatatie op verschillende platforms van Borland's VCL. U kunt ook proberen om naar de dagelijkse snapshots-website te gaan:
    http://www.hu.freepascal.org/lazarus/en download de nieuwste snapshot. Voor windows 32 bit zou dit op dit moment zijn: Lazarus fpc 2.4.3 win32
    ftp://ftp.hu.freepascal.org/pub/laza...0710-win32.exeDe Lazarus fixes fpc 2.4.0 is een oudere tak, verondersteld stabieler te zijn dan de laatste nightly maar met alleen belangrijke bugfixes erin verwerkt, maar ik heb onlangs iets gelezen in de mailinglijst dat er problemen waren met de fixes branch en it werkte voor enige tijd helemaal niet. Meestal download ik van tijd tot tijd een van de allernieuwste bleed-nightly-builds en gebruik deze totdat ik een nieuwere versie vind die net zo goed werkt als de vorige of die een aantal bugs heeft verholpen of andere verbeteringen. Deze nachtelijke versies zijn meestal erg stabiel, het zijn de versies die de ontwikkelaars zelf gebruiken (om aan Lazarus zelf te werken, Lazarus is volledig in Lazarus geschreven), ze proberen deze tak altijd zo goed mogelijk te laten werken, de meeste mankracht is geconcentreerd daar.

  10. #30

    Quote Originally Posted by ;
    ook is de dll-productie in Delphis 4 keer groter dan die van Lazarus
    Als u de codeafmeting verder wilt verkleinen, kijkt u naar de projectopties onder Koppelingen, schakelt u alle foutopsporingsinformatie en regelnummers uit en schakelt u strippatronen in voor de definitieve release. Schakel ook altijd smart linking en smart linkable in. Dit zou de grootte van de gegenereerde .exe- en .dll-bestanden verder moeten verkleinen.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
This website uses cookies
We use cookies to store session information to facilitate remembering your login information, to allow you to save website preferences, to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners.