Polusi Memori MT4 DLL - Page 3
Halaman 3 dari 465 FirstFirst 12345 TerakhirTerakhir
Results 21 to 30 of 41

Thread: Polusi Memori MT4 DLL

  1. #21
    Harap diingat bahwa saya mencengkeram sedotan karena kurangnya info yang mencoba memikirkan mengapa DLL Anda masih ngadat.
    Quote Originally Posted by ;
    Cara saya menulisnya, jika deinit () tidak dipanggil, objek tidak akan dibebaskan. Tetapi selain dari kebocoran memori yang seharusnya tidak menyebabkan crash karena objek kedua akan memiliki memori baru, benar?
    Ya benar. Jadi DLL Anda harus mengambil tanggung jawab atas apa yang dilakukannya jika terjadi crashpenggunaan buruk oleh aplikasi panggilanbahasa panggilan tidak dapat diandalkan (MQL4)atau untuk memudahkan penggunaan aplikasi panggilan. Jika DLL sedang diturunkan dan beberapa dari Deinit () Anda belum dieksekusi maka seperti yang Anda katakan objek tesis tidak akan dibebaskan jadi ... Ini adalah pengalaman saya (fitur tidak terdokumentasi!) - dan akal sehat akan mendukungnya - bahwa: Baik fungsi Init () dan DeInit () dalam EA dieksekusi dalam Thread Aplikasi MT4 Utama. Jadi implementasi InitDeInit Anda tidak perlu aman. Hanya Fungsi Mulai () yang dijalankan oleh utas lainnya. Selama Anda tidak memanggil Init () atau DeInit () dari dalam MT4 Anda Mulai () Fungsi Semua akan beres, dan Anda dapat menggunakan Daftar sederhana untuk tujuan tersebut. Ini sedikit berlebihan tetapi praktik yang baik tidak kurang. Jika tidak ada yang lain yang mengingatkan Anda untuk berpikir tentang membersihkan. Jadi dengan pemikiran di atas Anda dapat melakukan sesuatu seperti: Perpustakaan kode Dimasukkan YourDLL; menggunakan SysUtils, Classes; ketik tyourobject = class (tobject) nama pribadi: string; akhir; var SaveExit: Pointer; objs: tlist; fungsi YourNormal_InitObj (pairname: pchar): longint; stdcall; var tmpobj: tyourobject; mulai tmpobj: = tyourobject.create; objs.Add (tmpobj); tmpobj.name: = string (pairname);/lakukan hasil init lainnya: = longint (tmpobj); akhir; fungsi YourNormal_DEInitObj (objptr: longint): longint; stdcall; begin objs.remove (pointer (objptr)); tyourobject (objptr) .free; hasil: = 0; akhir; prosedur LibExit; mulai coba ketika obj.Count gt; 0 mulai//diedit objek Anda (objs # 91; 0 # 93 .gratis; objs.delete (0);//ujung yang diedit;//diedit objs.Free; akhirnya ExitProc: = SaveExit;/kembalikan rantai keluar prosedur akhir; akhir; mengekspor indeks YourNormal_InitObj 1, indeks YourNormal_DEInitObj 2 Anda; mulai SaveExit: = ExitProc;/simpan rantai keluar prosedur ExitProc: = @LibExit;/instal keberatan prosedur keluar LibExit: = tlist.create; akhir.

  2. #22
    Quote Originally Posted by ;
    Harap diingat bahwa saya mencengkeram sedotan karena kurangnya info mencoba memikirkan mengapa DLL Anda masih macet ...
    suci omong kosong programmer delphi lain

  3. #23
    Quote Originally Posted by ;
    tidak dibebaskan karena DeInit () mungkin tidak dipanggil
    Ini adalah sesuatu yang saya optimalkan dengan menganggap EA saya berjalan selamanya
    . Berhenti berdagang sama sekali bukan milik use case normal EA saya, itu hanya terjadi ketika saya mematikan MT4 sepenuhnya (reboot, akhir pekan). Saya juga telah menemukan bahwa deinit () disebut sangat andal setiap kali EA tidak diinisialisasi (timeframe switch) selama operasi normal, satu-satunya hal yang benar-benar bermasalah adalah pembongkaran dll itu sendiri. Dalam mode backtesting MT4 bahkan tidak akan mencoba untuk membongkarnya.

  4. #24
    Quote Originally Posted by ;
    atau Lazarus

  5. #25
    Quote Originally Posted by ;
    Sudah pengalaman saya (fitur tidak terdokumentasi!) - dan akal sehat akan mendukung hal ini - bahwa: Baik fungsi Init () dan DeInit () dalam EA dieksekusi dalam Thread Aplikasi MT4 Utama. Jadi implementasi InitDeInit Anda tidak perlu aman. Hanya Fungsi Mulai () yang dijalankan oleh utas lainnya. Selama Anda tidak memanggil Init () atau DeInit () dari dalam MT4 Anda Mulai () Fungsi Semua akan beres, dan Anda dapat menggunakan Daftar sederhana untuk tujuan tersebut.
    Ini, teman saya, sangat baik untuk diketahui
    .

  6. #26
    Quote Originally Posted by ;
    Saya menggunakan Delphi 2009. Bagaimana dengan kalian? Saya telah mengembangkan di Delphi sejak tahun 1998 (versi 3), mulai menulis MT4 EA pada tahun 2005, dan menggabungkan keduanya tahun lalu. Menggunakan DLL dengan MT4 sebagian muncul dari kebutuhan pelanggan saya untuk mengamankan logika mereka dan menggunakan lisensi klien-server, tetapi fitur pengkodean tambahan tidak ada salahnya
    .

  7. #27

    Quote Originally Posted by ;
    Saya pikir saya hanya akan mengunduh Lazarus .... omong-omong, apa kelebihan yang dimiliki Lazarus dan Delphi? jadi tentang kode: ketika saya melakukan ini: [code] function foo (x: double; y: PChar): PChar; stdcall; var ...
    Apakah Anda mencoba saran saya dengan ansistring (y), bukan y? Anda juga dapat mencoba mendeklarasikan variabel tipe ansistring dan mengisi variabel ini dengan ansistring (y) dan kemudian melakukan string conenation dengan variabel itu alih-alih menggunakan y secara langsung. Akan menarik untuk tidak menyerah begitu saja dan bukannya mencoba mencari tahu apa yang diperlukan untuk membuat kode ini berjalan dengan Delphi, ini akan memberikan beberapa wawasan yang menarik. Dua keuntungan utama Lazarus daripada Delphi adalah bagi saya: itu adalah open source dan ini berarti akan ada selamanya dan tidak tiba-tiba menghilang atau tidak tersedia atau tidak dapat digunakan seperti itu mau tidak mau terjadi pada semua produk perangkat lunak komersial cepat atau lambat. (Petunjuk: Kylix) ini tersedia pada lebih banyak platform daripada hanya windows, tersedia untuk Linux (penting bagi saya) dan Mac dan untuk arsitektur prosesor berbeda yang paling umum digunakan dan saya dapat dengan mudah mengkompilasi program yang sama tanpa perubahan atau prasyarat khusus lainnya pada salah satu platform yang didukung.

  8. #28
    Hai 7bit! Saya mencoba semuanya tanpa solusi! juga, dll memproduksi di delphis adalah 4 kali lebih besar dari yang (kode yang sama) dari lazarus ... tapi ini bukan itu intinya, saya hanya ingin kode sesuatu bekerja dan efisien. Jadi sampai sekarang saya coding pada kedua sistem ... sepertinya keduanya memiliki kelebihan dan kekurangan pada akhirnya ... jadi sampai saya punya dll yang berfungsi ... Saya punya pertanyaan: Saya mengunduh versi beta dari lazarus terakhir (yang sepertinya menjadi satu-satunya yang tersedia), apakah ini stabil?

  9. #29

    Quote Originally Posted by ;
    unduh versi beta dari lazarus terakhir (yang sepertinya menjadi satu-satunya yang tersedia), apakah ini stabil?
    Lazarus cukup stabil. Pencipta Lazarus adalah perfeksionis yang berjuang untuk kesempurnaan. Tampaknya kesempurnaan untuk beberapa dari mereka didefinisikan sebagai V1.0 tetapi setiap perfeksionis juga tahu bahwa kesempurnaan tidak pernah dapat dicapai, jadi saya pikir mereka akan berada di 0,9.99.99999 kandidat pelepas 8 dalam sepuluh tahun sementara perangkat lunak itu sendiri akan layak pemasaran nomor versi ramah 5.0 sudah bertahun-tahun yang lalu jika itu adalah proyek komersial. Sudah ada banyak diskusi tentang ini di milis tetapi mereka semua tampaknya menderita sindrom perfeksionisme, tetapi ini harus dilihat sebagai kualitas positif dari pengembang perangkat lunak dan sebagai tanda untuk perangkat lunak yang sangat baik. Compiler itu sendiri, yang merupakan proyek terpisah, sudah pada 2.5 dan 2.4.3 digunakan dalam membangun Lazarus terbaru. Proyek Lazarus hanya IDE dan Perpustakaan Komponen Lazarus, klon yang kompatibel dan implementasi ulang lintas-platform dari VCL Borland. Anda juga dapat mencoba membuka situs web snapshots harian:
    http://www.hu.freepascal.org/lazarus/dan unduh snapshot terbaru. Untuk windows 32 bit saat ini akan menjadi: Lazarus fpc 2.4.3 win32
    ftp://ftp.hu.freepascal.org/pub/laza...0710-win32.exePerbaikan Lazarus fpc 2.4.0 adalah cabang yang lebih tua, seharusnya lebih stabil daripada yang terbaru setiap malam tetapi dengan hanya perbaikan bug yang penting digabung ke dalamnya, tapi saya baru-baru ini membaca sesuatu di milis bahwa ada masalah dengan cabang perbaikan dan itu tidak bekerja sama sekali selama beberapa waktu. Saya biasanya mengunduh salah satu pendarahan terbaru yang dibuat setiap malam dari waktu ke waktu dan menggunakannya sampai saya menemukan yang lebih baru yang berfungsi sama baiknya dengan yang sebelumnya atau memiliki beberapa bug yang diperbaiki atau perbaikan lainnya. Bangunan malam ini biasanya sangat stabil, mereka adalah versi yang digunakan pengembang itu sendiri (untuk bekerja pada Lazarus sendiri, Lazarus sepenuhnya ditulis dalam Lazarus), mereka mencoba untuk menjaga cabang ini selalu bekerja sebaik mungkin, sebagian besar tenaga kerja adalah terkonsentrasi di sana.

  10. #30

    Quote Originally Posted by ;
    juga, dll memproduksi di delphis adalah 4 kali lebih besar dari yang (kode yang sama) dari lazarus
    Jika Anda ingin mengurangi lebih lanjut ukuran kode lihat ke opsi proyek di bawah Menghubungkan matikan semua informasi debug dan nomor baris dan nyalakan simbol strip untuk rilis terakhir. Juga selalu mengaktifkan tautan pintar dan tautan pintar. Ini selanjutnya akan mengurangi ukuran file .exe dan .dll yang dihasilkan.

Izin Posting

  • Anda tidak boleh memposting thread baru
  • Anda tidak boleh memposting balasan
  • Anda tidak boleh memposting lampiran
  • Anda tidak boleh menyunting postingan Anda
  •  
  • Kode BB Aktif
  • Smilies Aktif
  • Kode [IMG] Aktif
  • Kode [VIDEO] Aktif
  • Kode HTML tidak aktif
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.