Hatalar, hatalar, sorular - sayfa 921

 
sergeev :

- Broker, zaman göstergeli sipariş vermeyi destekliyor mu?

Bunu yapmak için F9'a basın ve saati ayarlayıp ayarlayamayacağınızı kontrol edin.


Burada her şey çalışıyor, yani. bekleyen tüm siparişler hatasız olarak yürütülür.
 
Merhaba, bir sorum var - Bir uzman satın aldım ve bilgisayarıma kurdum, ardından bir VPS sunucusu sipariş ettim ve aynı uzmanı kurdum. Sonuç olarak, komisyoncu ücretsiz bir hizmete sahip olduğu için kiralanan sunucuyu reddettim, ancak uzman üçüncü kez (üç ekipman için) kurulamaz. Ne yapmalıyım? Bir sunucuyu diğerinin lehine terk edebilir miyim? Nereye başvurulur? Teşekkür ederim!
 

Dosyalarla çalışma hakkında iki soru.

1. Dizeleri çeşitli dillerde (Japonca, Arapça vb. dahil) saklayan bir metin dosyası vardır. Buna göre, dosya kodlaması UTF8'dir. Dosyadaki veriler, takma adın her zaman İngilizce olduğu ve çevirinin başka bir dil olduğu "Alias=Çeviri" olarak yazılır. Okurken de FILE_UNICODE kullanılması gerektiğinden emindim. Ancak dosyayı şu şekilde açarsanız:

 int fileHandle = FileOpen (fileName, FILE_READ | FILE_TXT | FILE_UNICODE , 0 , CP_UTF8);

satırları okurken anlamsız bir dizi hiyeroglif elde ederiz. Bu şekilde açarsanız:

 int fileHandle = FileOpen (fileName, FILE_READ | FILE_TXT | FILE_ANSI , 0 , CP_UTF8);

daha sonra okur ve ardından normal şekilde çıktı verir (İngilizce, Rusça, Ukraynaca, Japonca, Arapça'yı kontrol ettim).

Peki, soru şu: neden FILE_ANSI bayrağını kullanmak zorundasınız? Sonuçta, ANSI tek baytlık karakterler içindir ve UTF8 bir Unicode karakter kodlamasıdır.


2. Böyle bir yöntemin olduğu bir sınıf var:

 string CTranslator::getTranslate( string str) {
//---
   int fileHandle = FileOpen (filename, FILE_READ | FILE_TXT | FILE_ANSI , 0 , CP_UTF8);
   
   if ( fileHandle == INVALID_HANDLE ) {
       return (str);
   }
//---
   string temp, alias, traslation;
   int delimiterPos;
      
   for ( ; ! FileIsEnding (fileHandle); ) {
      temp = FileReadString (fileHandle);
      delimiterPos = StringFind (temp, "=" );
      alias = StringSubstr (temp, 0 , delimiterPos);
      
       if ( StringCompare(str, alias, false ) == 0 ) {
         traslation = StringSubstr (temp, delimiterPos+ 1 );
          
         return (traslation);
      }   
   }
   FileClose (fileHandle);
//---
   return (str);
}

Dosya adı bir özelliktir ve nesne başlatıldığında bir değer atanır. Yani metodu çağırırken dosyayı açıyoruz, satır satır okuyoruz ve uygun bir satır bulur bulmaz alt dizisini döndürüyoruz. Dosya açılmazsa veya uygun bir dize yoksa, girilen dizeyi döndürürüz.

Yöntemi bir kez çağırırsak, her şey çalışır. Ancak arka arkaya birkaç kez ararsanız, yalnızca ilk seferde ve ikinci ve sonrakilerde - INVALID_HANDLE (baskı tarafından kontrol edilir) dosyasını açmaya çalıştığınızda çalışır. Sorun ne olabilir?

Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы - Документация по MQL5
 
Rone :

2. Böyle bir yöntemin olduğu bir sınıf var:

Dosya adı bir özelliktir ve nesne başlatıldığında bir değer atanır. Yani metodu çağırırken dosyayı açıyoruz, satır satır okuyoruz ve uygun bir satır bulur bulmaz alt dizisini döndürüyoruz. Dosya açılmazsa veya uygun bir dize yoksa, girilen dizeyi döndürürüz.

Yöntemi bir kez çağırırsak, her şey çalışır. Ancak arka arkaya birkaç kez ararsanız, yalnızca ilk seferde ve ikinci ve sonrakilerde - INVALID_HANDLE (baskı tarafından kontrol edilir) dosyasını açmaya çalıştığınızda çalışır. Sorun ne olabilir?

Belki de nedeni budur:

       if ( StringCompare(str, alias, false ) == 0 ) {
         traslation = StringSubstr (temp, delimiterPos+ 1 );
          
         return (traslation);
      }   
 
Rone :

...

2. Böyle bir yöntemin olduğu bir sınıf var:

Dosya adı bir özelliktir ve nesne başlatıldığında bir değer atanır. Yani metodu çağırırken dosyayı açar, satır satır okur ve uygun bir satır bulur bulmaz alt dizisini döndürürüz. Dosya açılmazsa veya uygun bir dize yoksa, girilen dizeyi döndürürüz.

Yöntemi bir kez çağırırsak, her şey çalışır. Ancak arka arkaya birkaç kez ararsanız, yalnızca ilk seferde ve ikinci ve sonrakilerde - INVALID_HANDLE (baskı tarafından kontrol edilir) dosyasını açmaya çalıştığınızda çalışır. Sorun ne olabilir?

Belki de "girilen dizeyi döndürürsek" dosya kapanmadığı için?
 

belki orada çalışır.

ama tarihi DC'nizle ayarlamak mümkün mü?

 
Contender :

Belki de nedeni budur:

...

tol64

...


Hızlı cevaplar için teşekkürler!

Pardon, gözden kaçmış, sigara içmeye çıkmış ve almış.

İşte burada:

       if ( StringCompare(str, alias, false ) == 0 ) {
         traslation = StringSubstr (temp, delimiterPos+ 1 );
         FileClose (fileHandle);

         return (traslation);
      }

Şu an çalışıyor. Ama ilk soru hala geçerli.

 
sergeev :

belki orada çalışır.

ama tarihi DC'nizle ayarlamak mümkün mü?

Bir haftadır komisyoncumdan anlaşılır bir şey duyamıyorum...rrrrrr....

 
Rone :


Hızlı cevaplar için teşekkürler!

Özür dilerim, gözden kaçmış, sigara içmeye çıkmış ve almış.

İşte burada:

Şu an çalışıyor. Ama ilk soru hala geçerli.

İlk soruda.

Dosya unicode olarak açılırsa, hiçbir dönüştürme yapılmaz (yani, CP_UTF8'iniz basitçe yok sayılır), veriler "olduğu gibi" okunur

Kod sayfası, ANSI modunda açılan bir metin dosyasından okunduğunda dahili unicode metnine ( string türündeki veriler) dönüştürüldüğünde etkindir.

 
Nikos52 :

Bir haftadır komisyoncumdan anlaşılır bir şey duyamıyorum...rrrrrr....


ve DC'nizin terminalindeki F9 bozuk mu?