"MQL5'ten (MQL4) MySQL Veritabanına Nasıl Erişilir" makalesi için tartışma - sayfa 14

 
Pavel Kolchin:

her zaman ortaya çıkmaya başladı, bu ne anlama geliyor?

bu satırdaki kodumu çalıştırırken.

if(DB==-1){DB=MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);}

res = MySqlCursorOpen(DB, "SELECT id, account, symbol FROM `current` WHERE account="+account);

MQL'de tüm dizeler Unicode'dur ve bunları ANSI yerine geçirirsiniz.

Bu yüzden dllka çöküyor.

 
MetaQuotes Software Corp.:

MQL'de tüm dizeler Unicode'dur ve ANSI yerine bunları geçirirsiniz.

Bu yüzden dll çöküyor.

Koşulu kaldırırsam, her şey çalışır, genel olarak, farklı şekilde yeniden yapabilirsiniz, sadece neden çöktüğünü anlamıyorum.

//if(DB==-1){

DB=MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);

//}

res = MySqlCursorOpen(DB, "SELECT id, account, symbol FROM `current` WHERE account="+account);

 
MetaQuotes Software Corp.:

MQL'de tüm dizeler Unicode'dur ve ANSI yerine bunları geçirirsiniz.

Bu yüzden dll çöküyor.

DLL'de yeniden kodlama gerçekleştirilir
 
Pavel Kolchin:

Koşulu kaldırırsam, her şey çalışır, genel olarak, farklı şekilde yeniden yapabilirsiniz, sadece neden çöktüğünü anlamıyorum

//if(DB==-1){

DB=MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);

//}

res = MySqlCursorOpen(DB, "SELECT id, account, symbol FROM `current` WHERE account="+account);

Mantık nedir? Bu koddan önce bir bağlantınız var mı? Koşuldan önce DB neye eşit? DB değişkeni başlatılmamışsa, muhtemelen bu yüzdendir.

Ve son örnekte veritabanına normal bir bağlantı açıyorsunuz ve bu yüzden imleç de çalışıyor

DLL ile birlikte verilen komut dosyaları çalışıyor mu?
 

Selamlar Eugene!

Senaryo için teşekkür ederim. Projemde uygulamaya karar verdim. Ancak projeye eklediğiniz komut dosyalarını test etme aşamasında, net olmayan 1 hatam var. ReadIni çalışmıyor. Belki yanlış bir şey yapıyorum, ancak ini'den her zaman boş değerler döndürüyor. Bunun sebebi ne olabilir? Dosyayı belirtilen yolda bulamadığından şüpheleniyorum, ancak farklı dizinlerden kontrol ettim her şey doğru ve yerinde.

Koddaki bağlantı için verileri doğrudan reçete edersem, her şey yolunda gider.

Mt4 kullanıyorum.
 
Ve işte başka bir sorun: Rusça metin karakaziaby'ye ekleniyor. Tabii ki dll'in yeniden kodlandığını anlıyorum, ancak veritabanım UTF-8. Okunabilir Rusça metin eklemek için ne yapmalıyım...? Bu hayatımı çok daha kolaylaştıracak...?
 
Anton Gaisin:

Selamlar Eugene!

Senaryo için teşekkür ederim. Projemde uygulamaya karar verdim. Ancak projeye eklediğiniz komut dosyalarını test etme aşamasında, net olmayan 1 hatam var. ReadIni çalışmıyor. Belki yanlış bir şey yapıyorum, ama ini'den her zaman boş değerler döndürüyor. Bunun sebebi ne olabilir? Dosyayı belirtilen yolda bulamadığından şüpheleniyorum, ancak farklı dizinlerden her şeyin doğru ve yerinde olduğunu kontrol ettim.

Koddaki bağlantı için verileri doğrudan reçete edersem, her şey yolunda gider.

Mt4 kullanıyorum.

Yolları kontrol etmelisiniz ... UAC büyük olasılıkla etkiler. INI için hangi yolu ayarladınız? Terminal dizinine mi yoksa Verilere mi?

 
Anton Gaisin:
Ve işte başka bir sorun: Rusça metin karakaziaby'ye ekleniyor. Tabii ki dll'in yeniden kodlandığını anlıyorum, ancak veritabanım UTF-8. Okunabilir Rusça metin eklemek için ne yapmalıyım...? Bu hayatımı çok daha kolaylaştıracak...?

Evet, ASCII'ye dönüşüm devam ediyor, Çinli meslektaşlarımdan da bu konuda bir açıklama var. Zamanım olur olmaz düzeltmeye çalışacağım.

 
Eugeniy Lugovoy:

Yolları kontrol etmeniz gerekiyor... UAC muhtemelen bunu etkiliyordur. INI için hangi yolu ayarladınız? Terminal dizinine mi yoksa Data'ya mı?

Arşivinizde örnekler var... onlarda her şeyi olduğu gibi bıraktım. Ben sadece ini'yi değiştirdim.

Sorun çözüldü. Kendim aptallık ettim. Daha önce MT4 klasörü ve veri klasörü birleştirildi. Şimdi veri klasörü Windows'un özel bir bölümünde saklanıyor. Şimdi yol TerminalPath() yerine TerminalInfoString(TERMINAL_DATA_PATH) almak için doğru.

 
Anton Gaisin:

Arşivinizde örnekler var... onlarda her şeyi olduğu gibi bıraktım. Sadece ini'yi değiştirdim.

Sorun çözüldü. Kendim aptallık ettim. Daha önce MT4 klasörü ve veri klasörü birleştirildi. Şimdi veri klasörü Windows'un özel bir bölümünde saklanıyor. Şimdi yol TerminalPath() yerine TerminalInfoString(TERMINAL_DATA_PATH) almak için doğru.

Hmm... eski kütüphanede bir yerdeydi, en son sürümlerde (tartışmada yayınlandı) hafızam beni doğru yanıltmıyorsa düzelttim :)

Tamam. o zaman UTF sorunu devam ediyor. bu hafta hafta sonuna kadar çözmeye çalışacağım, eğer çok çalışmazsam.