Hatalar, hatalar, sorular - sayfa 2566
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Bu döküm ile veri kaybı olmaz. 0 veya 0 değil.
Başka bir şey, double kullanıldığında -> herhangi bir tamsayı türü (int32'ye kadar ve dahil)
Uyarılarla oynadığınız bir şey bence, yargılarda yeterli tutarlılık yok
Uyarılarla oynadığınız bir şey bence , yargılarda yeterli tutarlılık yok
Kabul ediyorum
Burada da bu anlamda veri kaybı olmaz ( 0 olsun veya olmasın 0 olsun)
ama bir uyarı var. Tek tip yaklaşım bekleniyor
Aynı sınıfın statik bir işlevinden bir sınıf örneğinin özelliğine erişme girişiminin sonucu:
Derleyici daha önce sessizdi.Terminal sıfır ile boş bir dize başlatmaz.
Sonuç
beklenen
StringInit işlevinin yardımında not edin
Aslında dağıtım yok.
yani bu şekilde dağıtım, on boşluk
Aynısı değil
Ve bir şekilde yardım metninde kırmızı ile vurgulanan davranış mantığı birleşmiyor.
Uyarılarla oynadığınız bir şey bence, yargılarda yeterli tutarlılık yok
boole uyarı işlemleri için çalışmıyor, şimdi yanlışlıkla kodumda bir yazım hatası fark ettim, burada yeniden oluşturdum:
Terminal sıfır ile boş bir dize başlatmaz.
Sonuç
beklenen
StringInit işlevinin yardımında not edin
Aslında dağıtım yok.
yani bu şekilde dağıtım, on boşluk
Aynısı değil
Ve bir şekilde yardım metninde kırmızı ile vurgulanan davranış mantığı birleşmiyor.
StringBufferLen işlevini kaçırdınız - ayrılan arabelleğin boyutunu döndürür. StringLen, dizgenin uzunluğunu, yani en başındaysa sırasıyla terminal karakterine kadar olan uzunluğu döndürür - uzunluk 0. Tampon != dize.
StringBufferLen işlevini kaçırdınız - ayrılan arabelleğin boyutunu döndürür. StringLen, dizgenin uzunluğunu, yani en başındaysa sırasıyla terminal karakterine kadar olan uzunluğu döndürür - uzunluk 0. Tampon != dize.
Ve kendisi bilmiyor
StringBufferLen işlevini kaçırdınız - ayrılan arabelleğin boyutunu döndürür.
StringLen, dizgenin uzunluğunu, yani en başındaysa sırasıyla terminal karakterine kadar olan uzunluğu döndürür - uzunluk 0. Tampon != dize.
Bu anlaşılabilir bir durumdur, bir dizgeyi sıfır uçlarıyla başlatmaktan bahsediyoruz.
Neden StringInit(str, 10, 0); on terminal sıfırı ile doldurmuyor musunuz? Ve dizenin gerçek uzunluğunu döndürün.
Boş bir dize başlatmanız gerekiyorsa, dolgu yok! örneğin 100 karakter,
sonra ya str = "klavyeye çok fazla dürtme" biçiminde 100 boşluk bırakın ya da çöp StringInit(str, 100, 65) ile başlatın
Neden çöple başlatıldığını anlamıyorum, zaten yeterli))
Bu anlaşılabilir bir durumdur, bir dizgeyi sıfır uçlarıyla başlatmaktan bahsediyoruz.
Neden StringInit(str, 10, 0); on terminal sıfırı ile doldurmuyor musunuz? Ve dizenin gerçek uzunluğunu döndürün.
Boş bir dize başlatmanız gerekiyorsa, dolgu yok! örneğin 100 karakter,
sonra ya str = "klavyeye çok fazla dürtme" biçiminde 100 boşluk bırakın ya da çöp StringInit(str, 100, 65) ile başlatın
Neden çöple başlatıldığını anlamıyorum, zaten yeterli))
Ve doldurulmadığını nereden çıkardın? Sadece dizedeki uzunluk mikrolitre cinsinden saklanmaz, ancak terminal sıfır tarafından tanınır.
olumsuzluk?
Ve tam olarak sıfırlara ihtiyacınız varsa, o zaman μl std'nin bağırsaklarında bir yerde bir String sınıfı vardır.
Doldurulmadığını da nereden çıkardın? Sadece dizedeki uzunluk mikrolitre cinsinden saklanmaz, ancak terminal sıfır tarafından tanınır.
olumsuzluk?
Ve tam olarak sıfırlara ihtiyacınız varsa, o zaman μl std'nin bağırsaklarında bir yerde bir String sınıfı vardır.
Hayır. Bu da sıfır döndürür. Ve üçüncü parametre olan ushort, bir tamsayı karakter kodu gerektirir.
Eğer str = " " biçiminde başlatırsam; ve sonra verileri dll'den aktarıyorum, sonra her şey yolunda.
Ve eğer StringInit(str, 10, 0)'ı başlatırsam hiçbir veri alınmaz. Çünkü gerekli boyutta bir dize için bellek ayrılmamıştır .
Bir boşluk kodu olsaydı işe yarayabilirdi ama bir şekilde farklı tablolarda böyle bir kod bulamadım.
Daha sonra zaten başlatılmış, boş bir dizgeye gidecek olan gelecekteki karakterlerin sayısı için bellek ayırmak gerekir.
Ama bir dizgeyi başlatmak için çöp, comme il faut değil.
Bu nedenle StringInit(str, 100, 0); terminal sıfırları ile doldurulmalı ve 100 uzunluğunda döndürülmelidir.