Kapatılmamış dosyalar içeriyorsa klasör silinmez - sayfa 3

 
Реter Konow :
Bildiğim kadarıyla, dosya işlevleri (örneğin, FileWrite()) kullanılarak dosyada herhangi bir değişiklik yapılmadıysa, kapatmaya gerek yoktur. FileOpen() işlevi yalnızca yeni bir dosya oluşturur ve bu işlem dosyanın kapatılmasını gerektirmez (bu işlevin belgeleri ayrıca dosyanın oluşturulduktan sonra kapatılması gerektiğini söylemez).

Hata! Hikaye anlatıcısı https://docs.mql4.com/ru/files/fileopen


//--- "dosya sanal alanında" çalışmanın doğru yolu
    resetLastError ();
filehandle= FileOpen ( "fraktals.csv" , FILE_WRITE | FILE_CSV );
    if (filehandle!= INVALID_HANDLE )
{
       FileWrite (dosya tanıtıcısı, TimeCurrent (), Symbol (), EnumToString ( ENUM_TIMEFRAMES ( _Period ));
       FileClose (dosya tanıtıcı);
       Yazdır ( "FileOpen OK" );
}
    başka   özel

FileOpen - Файловые операции - Справочник MQL4
FileOpen - Файловые операции - Справочник MQL4
  • docs.mql4.com
FileOpen - Файловые операции - Справочник MQL4
 
Rashid Umarov :

Hata! Hikaye anlatıcısı https://docs.mql4.com/en/files/fileopen


Benim söylediğimin tersi nedir?

Söyledim, -

Peter Konow'un fotoğrafı.
Bildiğim kadarıyla, dosya işlevleri (örneğin, FileWrite()) kullanılarak dosyada herhangi bir değişiklik yapılmadıysa, kapatmaya gerek yoktur. FileOpen() işlevi yalnızca yeni bir dosya oluşturur ve bu işlem dosyanın kapatılmasını gerektirmez (bu işlevin belgeleri ayrıca dosyanın oluşturulduktan sonra kapatılması gerektiğini söylemez).


Ve örneğinizde, dosya oluşturulduktan hemen sonra FileWrite() işlevi kullanılır. Ve sonra kullanıldı FileClose (dosya tanıtıcı);


Ayrıca yukarıdaki script koduna açık bir kapatma ekledim ama bu hiçbir şeyi çözmedi...

 
Реter Konow :

Aynen öyle. Halihazırda alt klasörler ve dosyalar içeren bir klasörü silmeye çalıştığımda, önce dosyaları siliyorum. Yalnızca alt klasörler kalır. Bunları FolderClean() ile temizlemeye çalışıyorum ve ardından FolderDelete()'i çağırıyorum. Bununla birlikte, sonuç olarak, boş olan alt klasörler iyi bir şekilde silinir, ancak alt klasörlerin içinde daha fazla alt klasör varsa bunlar silinmez. Bundan sonra, MetaEditor'daki dosya gezgininden klasörleri manuel olarak silmeye çalışıyorum, ancak terminal onları silmiyor ve şu pencereyi açıyor:

"Devam"a tıklıyorum, değişiklikleri kabul ediyorum, ancak klasör hala silinmedi. Terminali tamamen kapatıp yeniden açtıktan sonra, silinmesi gereken klasörler ya kendiliğinden kaybolur ya da kaybolmaz, ancak yukarıdaki pencere olmadan manuel olarak zaten silinebilirler.

İşte bazı tuhaflıklar...

Bu tür şeyleri birçok kez gördüm. Bir noktada, tüm alt klasörleri ve dosyaları içeren Dosyalar klasörünün salt okunur özniteliği aldığını öğrendim. Bu bayrağı elle kaldırmak yardımcı olmuyor. Ancak terminali yeniden başlatmak her zaman yardımcı olur. Oynatmayı başaramadım (denemedim), bu yüzden SD'ye bildirmedim.

 
A100 :

Hata (5022) yalnızca FILE_COMMON öğesini ayarlarsanız oluşur.

Klasör temizlenir ancak silinmez.

Bu bayrağı ayarlamanız gerekmez, aksi takdirde dosya paylaşılan klasörde aranır ve hata yanlış dizin adının belirtildiğini söyler.

Dosya yolu

 "\\MQL4\\Files" ;

bu bayrağın ayarlanmasını gerektirmez. Yani her şey doğru.

 
fxsaber :

Bu tür şeyleri birçok kez gördüm. Bir noktada, tüm alt klasörleri ve dosyaları içeren Dosyalar klasörünün salt okunur özniteliği aldığını öğrendim. Bu bayrağı elle kaldırmak yardımcı olmuyor. Ancak terminali yeniden başlatmak her zaman yardımcı olur. Oynatmayı başaramadım (denemedim), bu yüzden SD'ye bildirmedim.

Teşekkür ederim. Bu sorunu yaşayan tek ben olmadığıma sevindim. Bu sorunu çözmek için "burnumu kanamam" gerekiyor (kullanıcının dosya gezginini onsuz tamamlayamıyorum). Servis masasına yazdım. Ama her ihtimale karşı buraya yazıyorum. Boşuna olmadığı ortaya çıktı.)
 
Реter Konow :

Bu bayrağı ayarlamanız gerekmez, aksi takdirde dosya paylaşılan klasörde aranır ve hata yanlış dizin adının belirtildiğini söyler.

ve FILE_COMMON ile ve olmadan - çalışır (başlangıçta, kontrol ederken, bu bayrağı son if'ye koymayı unuttum). FILE_COMMON ile tüm işlemlerde olduğu ima edildi

 
Реter Konow :

Bu bayrağı ayarlamanız gerekmez, aksi takdirde dosya paylaşılan klasörde aranır ve hata yanlış dizin adının belirtildiğini söyler.

Dosya yolu

bu bayrağın ayarlanmasını gerektirmez. Yani her şey doğru.

Bütün bunlar garip. MQL4 klasörlerine giden yolda kodu .ex4 olarak yeniden derledim ve garip bir şekilde kodun hatasız çalıştığını fark ettim. Kapatılan dosyayı kaldırdı ve

 2017.08 . 28 17 : 36 : 18.525 Demo_FolderDelete EURUSD.e,H4: Не удалось удалить папку nonempty. Код ошибки= 5025
2017.08 . 28 17 : 36 : 16.985 Demo_FolderDelete EURUSD.e,H4: Не удалось очистить папку nonempty. Код ошибки= 5026

Ardından, düzeltmeler olmadan MT5'te başlattım ve garip bir şekilde MQL4 klasöründen bahsedilmedi. Klasörler ve dosya MQL5 klasöründe oluşturulmuştur. Ayrıca, her şey MT4'te kontrol etmeye benzer. Kapatılmamış dosya silinmez...

 2017.08 . 28 17 : 50 : 45.328 Demo_FolderDelete (CADJPY,H4)   Не удалось очистить папку nonempty. Код ошибки= 5025
2017.08 . 28 17 : 50 : 47.958 Demo_FolderDelete (CADJPY,H4)   Не удалось удалить папку nonempty. Код ошибки= 5024
 
Servis Masası yanıtladı. Dosya oluşturulduktan sonra kapatılması gerektiğini söylediler. Ama kapatıyorum ama sorun devam ediyor ... Ne yazık ki ... (
 
Alexey Viktorov :

Bütün bunlar garip. MQL4 klasörlerine giden yolda kodu .ex4 olarak yeniden derledim ve garip bir şekilde kodun hatasız çalıştığını fark ettim. Kapatılan dosyayı kaldırdı ve

Ardından, düzeltmeler olmadan MT5'te başlattım ve garip bir şekilde MQL4 klasöründen bahsedilmedi. Klasörler ve dosya MQL5 klasöründe oluşturulmuştur. Ayrıca, her şey MT4'te kontrol etmeye benzer. Kapatılmamış dosya silinmez...

Yani, bir senaryodan danışman yaptın ve onu çalıştırmayı denedin mi?

 
Реter Konow :
Ama kapatıyorum ama sorun devam ediyor ... Ne yazık ki ... (
Ve her yere FILE_COMMON koymayı deneyin
Neden: