2016-04-04 27 views
-3

Kullanıcı için bir ".txt seçmek ve okumak için QfileDialog (statik bir dosya olarak) kullanmaya çalışıyorum aşağıdaki gibi "dosyası: m_scanPos VisOCMConfig.h başlatılmış bir QByteArray olan"Myprogram.exe içinde 0x000007FEFD5D7C8A (ole32.dll) işlenmeyen özel durum: 0xC0000005: Erişim ihlali okuma konumu 0xFFFFFFFFFFFFFF"

void VisOCMConfig::readNmbTiles() 
{ 
    QString m_findFile; 
    m_findFile = QFileDialog::getOpenFileName(0, tr("Open TextFile"), 
               QDir::homePath(), tr("Text files (*.txt)")); 

    QFile myfile(m_findFile); 
    if (!myfile.open(QIODevice::ReadOnly | QIODevice::Text)) 
     return; 
    else 
     while (!myfile.atEnd()) 
     { 
      m_scanPos = myfile.readLine(); 
      m_nmbofLines++; 
     } 

    myfile.close(); 
    qDebug() << "Scan Positions: (" << m_scanPos.size() << "): " << m_scanPos; 
    m_nmbofScan->setText(QString("#Tiles: %1").arg(m_nmbofLines)); 
} 

. Ben programm çalıştırdığınızda bir mola aşağıdaki iletiyle aniden gerçekleşene kadar

, O düzgün çalışır:

VisOCMConfig.exe içinde 0x000007FEFD5D7C8A (Ole32.dll) de

işlenmeyen özel durum: 0xc0000005: erişim ihlali okuma konum 0xFFFFFFFFFFFFFFFF

nedeniyle null işaretçi kullanımına bu olabilir diğer sorular okumak ama hala bu konuda kayboldum. Hatamı tespit edebilir misin?

+0

uygulamaktır:

Benzer bir sorun burada tarif edilir? – HadeS

+4

_ ++ 'da C++' da bir yenisi var ve bu forumda da var. Eh, ilk hatanın var - SO is ** not ** bir forum. _n ** null pointer kullanımı nedeniyle ** olabileceği gibi diğer soruları okuyacağım ama hala bu konuda kaybettim. Eh, hata mesajına bakarak, değeri daha düşük olan bir dereferencing işaretçisine -1_ olarak ayarlayın. –

+0

Erişim ihlali nerede oluşur? Bir hata ayıklayıcısında adım atmanız gerekir. –

cevap

1

Aynı sorunu yaşıyorum. Bayrak olarak "DontUseNativeDialog" kullanmayı deneyin. Bunun kazayı çözdüğüne inanıyorum, ama sonra doğal olmayan bir diyalog ile kaldınız.

1

Aynı problemim var. Çözüm ayrıca yerel olmayan bir QFileDialog kullanmaktır. Aslında yalnızca Hata Ayıklama modunda görünür. Yayınlama modunda evrim iyi.

Aynı kod QT4.8 altında çalışıyor. Her nasılsa QT5.6 kullanırken değil.

+0

Çok benzer bir sorun olduğumu doğrularım. Benzer şekilde (QFileDialog :: getOpenFileName (...)) statik çağrısını kullanmadan çözebilirim. Yine de, bunun Qt geliştiricileri tarafından bilinen veya raporlanması gereken bir hata olup olmadığını merak ediyorum. Resmi bir Qt hatası referansı olan var mı? – Dominik

0

Bu soruyu reddedenler (onu destekledim), bu cevabımı da reddetmekten memnuniyet duyarlar.

QtileDialog :: getOpenFileName() - kullanıldıktan hemen sonra ancak 10 - 60 saniye sonra Qle 5.2.1 - ole32.dll aynı istisna ile aynı sorunu var. Uygulamaya devam edersem VEYA eğer dosya açıldıktan sonra hiçbir şey yapmazsa olur, sadece biraz bekle. @aeson ve @guest tarafından önerilen "DontUseNativeDialog" kullanımı bu sorunu önlemektedir. Umarım bu bilgiler başkalarına yardımcı olabilir. başvurum ayıklama modunda çöktü -

@MartinBonner Sorun açıkça ben aynı hata vardı o

-1

ilişkilidir çünkü etiket geri QFileDialog değiştirildi gerektiğini düşünüyorum.

Bu sorun oluştuğunda arama yığınını incelerseniz, sorununun NetworkItemFactory.dll bileşeniyle ilişkili olduğunu fark edersiniz. Unhandled exception in marshal.cxx under VS2013

Microsoft bu sabit, yani çözüm ayıklama adresinin gözlem vardı ne Microsoft'un düzeltme Windows6.1-KB2718841

İlgili konular