Şimdi Ara

[Vb6]Input Past End Of File Hatası

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
13
Cevap
0
Favori
1.805
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Bir türlü çözemedim anlamadım..Gerçekten acil yardıma ihtiyacım var..Proje bitti bu hatayı aldım..
    Debug da hatayı write ini modülünde gösteriyor...
    Temp = Input$(LOF(NF), NF)
    Bu kısımda...

    Modül iste bu şekilde...

    Option Explicit 

    Public Function WriteIniValue(INIpath As String, PutKey As String, PutVariable As String, PutValue As String)
    Dim Temp As String
    Dim LcaseTemp As String
    Dim ReadKey As String
    Dim ReadVariable As String
    Dim LOKEY As Integer
    Dim HIKEY As Integer
    Dim KEYLEN As Integer
    Dim VAR As Integer
    Dim VARENDOFLINE As Integer
    Dim NF As Integer
    Dim x As Integer

    AssignVariables:
    NF = FreeFile
    ReadKey = vbCrLf & "[" & LCase$(PutKey) & "]" & Chr$(13)
    KEYLEN = Len(ReadKey)
    ReadVariable = Chr$(10) & LCase$(PutVariable) & "="

    EnsureFileExists:
    Open INIpath For Binary As NF
    Close NF
    SetAttr INIpath, vbArchive

    LoadFile:
    Open INIpath For Input As NF
    Temp = Input$(LOF(NF), NF)
    Temp = vbCrLf & Temp & "[]"
    Close NF
    LcaseTemp = LCase$(Temp)

    LogicMenu:
    LOKEY = InStr(LcaseTemp, ReadKey)
    If LOKEY = 0 Then GoTo AddKey:
    HIKEY = InStr(LOKEY + KEYLEN, LcaseTemp, "[")
    VAR = InStr(LOKEY, LcaseTemp, ReadVariable)
    If VAR > HIKEY Or VAR < LOKEY Then GoTo AddVariable:
    GoTo RenewVariable:

    AddKey:
    Temp = Left$(Temp, Len(Temp) - 2)
    Temp = Temp & vbCrLf & vbCrLf & "[" & PutKey & "]" & vbCrLf & PutVariable & "=" & PutValue
    GoTo TrimFinalString:

    AddVariable:
    Temp = Left$(Temp, Len(Temp) - 2)
    Temp = Left$(Temp, LOKEY + KEYLEN) & PutVariable & "=" & PutValue & vbCrLf & Mid$(Temp, LOKEY + KEYLEN + 1)
    GoTo TrimFinalString:

    RenewVariable:
    Temp = Left$(Temp, Len(Temp) - 2)
    VARENDOFLINE = InStr(VAR, Temp, Chr$(13))
    Temp = Left$(Temp, VAR) & PutVariable & "=" & PutValue & Mid$(Temp, VARENDOFLINE)
    GoTo TrimFinalString:

    TrimFinalString:
    Temp = Mid$(Temp, 2)
    Do Until InStr(Temp, vbCrLf & vbCrLf & vbCrLf) = 0
    Temp = Replace(Temp, vbCrLf & vbCrLf & vbCrLf, vbCrLf & vbCrLf)
    Loop

    Do Until Right$(Temp, 1) > Chr$(13)
    Temp = Left$(Temp, Len(Temp) - 1)
    Loop

    Do Until Left$(Temp, 1) > Chr$(13)
    Temp = Mid$(Temp, 2)
    Loop

    OutputAmendedINIFile:
    Open INIpath For Output As NF
    Print #NF, Temp
    Close NF

    End Function







  • F8 ile kontrol ettim..
    quote:

    While Not EOF(NF)
    Line Input #NF, Temp
    LcaseTemp = LCase$(Temp)
    If InStr(LcaseTemp, "[") <> 0 Then ReadyToRead = False
    If LcaseTemp = KEY Then ReadyToRead = True
    If InStr(LcaseTemp, "[") = 0 And ReadyToRead = True Then
    If InStr(LcaseTemp, Variable & "=") = 1 Then
    ReadIniValue = Mid$(Temp, 1 + Len(Variable & "="))
    Close NF: Exit Function
    End If
    End If
    Wend


    bu kısım read ini modülünde ...
    Form1de de read write ini ve database kullanıyorum ama hata almıyorum..
    Ama Form2 de alıyorum..Form2 de daha fazla read ve write vaar...
    Birde hata form açılr açılmaz birşeye basmadan geliyor..Form load larda hiç write ini yok..Database ile ilgili birşeyde yok..Sadece read ini var..
    O yüzden kesin sorun burada..
    Nasıl halledebilirim bu sorunu???



    < Bu mesaj bu kişi tarafından değiştirildi ghost7wolf -- 9 Nisan 2010; 0:22:58 >




  • Merhaba ,
    Sıralı erişimde dosyayı okuma/yazma modunda açıyorsanız başka bir işlem için dosyanın açık olmadığından emin olmalısınız.
    Başka bir yordamın içinde kullanıp dosyayı close # yapmadıysanız hata oluşabilir.
  • Form1 de niye hata vermiyor..Aynı şeyleri kullandım..
    Write yazıp daha sonra okuyabiliyorum..
    Başka ini dosyasına geçebiliyorum..Modül den bunu düzeltebilir miyiz?
  • Merhaba ,

    Kodunuzu biraz inceledim bir functionun içerisinde bir çok alt parça kod işletmişsiniz. Bu şekilde bir kod yazımı bence çok sağlıklı değil , tabi bazı şeyler kodu yazan kişinin insiyatifindedir, ama ben bu tarz konularda hep biraz daha fazla kodlama yapıp işlemin düzenli olmasını tercih ederim. Aşağıdaki gibi ADDkey , ADDvariable gibi aynı kodun içerisinde karmaşık bir şekilde işleteceğinize bu işlemler için ayrı ayrı functionlar tanımlamak, hatanızı daha kolay betimlemenizi sağlayabilir.

    Public Function WriteIniValue(INIpath As String, PutKey As String, PutVariable As String, PutValue As String)
    Dim Temp As String
    Dim LcaseTemp As String
    Dim ReadKey As String
    Dim ReadVariable As String
    Dim LOKEY As Integer
    Dim HIKEY As Integer
    Dim KEYLEN As Integer
    Dim VAR As Integer
    Dim VARENDOFLINE As Integer
    Dim NF As Integer
    Dim x As Integer

    AssignVariables:
    NF = FreeFile
    ReadKey = vbCrLf & "[" & LCase$(PutKey) & "]" & Chr$(13)
    KEYLEN = Len(ReadKey)
    ReadVariable = Chr$(10) & LCase$(PutVariable) & "="

    EnsureFileExists:
    Open INIpath For Binary As NF
    Close NF
    SetAttr INIpath, vbArchive

    LoadFile:
    Open INIpath For Input As NF
    Temp = Input$(LOF(NF), NF)
    Temp = vbCrLf & Temp & "[]"
    Close NF
    LcaseTemp = LCase$(Temp)

    LogicMenu:
    LOKEY = InStr(LcaseTemp, ReadKey)
    If LOKEY = 0 Then GoTo AddKey:
    HIKEY = InStr(LOKEY + KEYLEN, LcaseTemp, "[")
    VAR = InStr(LOKEY, LcaseTemp, ReadVariable)
    If VAR > HIKEY Or VAR < LOKEY Then GoTo AddVariable:
    GoTo RenewVariable:

    AddKey:
    Temp = Left$(Temp, Len(Temp) - 2)
    Temp = Temp & vbCrLf & vbCrLf & "[" & PutKey & "]" & vbCrLf & PutVariable & "=" & PutValue
    GoTo TrimFinalString:

    AddVariable:
    Temp = Left$(Temp, Len(Temp) - 2)
    Temp = Left$(Temp, LOKEY + KEYLEN) & PutVariable & "=" & PutValue & vbCrLf & Mid$(Temp, LOKEY + KEYLEN + 1)
    GoTo TrimFinalString:

    RenewVariable:
    Temp = Left$(Temp, Len(Temp) - 2)
    VARENDOFLINE = InStr(VAR, Temp, Chr$(13))
    Temp = Left$(Temp, VAR) & PutVariable & "=" & PutValue & Mid$(Temp, VARENDOFLINE)
    GoTo TrimFinalString:

    TrimFinalString:
    Temp = Mid$(Temp, 2)
    Do Until InStr(Temp, vbCrLf & vbCrLf & vbCrLf) = 0
    Temp = Replace(Temp, vbCrLf & vbCrLf & vbCrLf, vbCrLf & vbCrLf)
    Loop

    Do Until Right$(Temp, 1) > Chr$(13)
    Temp = Left$(Temp, Len(Temp) - 1)
    Loop

    Do Until Left$(Temp, 1) > Chr$(13)
    Temp = Mid$(Temp, 2)
    Loop

    OutputAmendedINIFile:
    Open INIpath For Output As NF
    Print #NF, Temp
    Close NF

    End Function




  • Modülü nette buldum..Kendi kodlarım değil..
    Senin yazdığını denedim gene aynı hatayı verdi..
    Başka modülleride deneyemiyorum..Çünkü bütün kodları baştan değiştirmek gerekiyor..
    WriteIniValue yazan kısım hepsinde farklı oluyor..
    Üst kısım yani kodda kullanılacak kısım aynı olacak şekilde düzgün..write ini ve read ini modül paylaşırsanız sevinirim..



    < Bu mesaj bu kişi tarafından değiştirildi ghost7wolf -- 14 Nisan 2010; 19:57:13 >
  • Merhaba ,

    Write ini bölümünde herhangi bir hata görünmüyor , Okuma yaptığınız bölüm hatalı gibi o kısımın kodlarını paylaşırsanız vaktim ölçüsünde inceleyip yardımcı olmaya çalışabilirim.
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • Buda read modülü..

    Option Explicit 

    Public Function ReadIniValue(INIpath As String, KEY As String, Variable As String) As String
    Dim NF As Integer
    Dim Temp As String
    Dim LcaseTemp As String
    Dim ReadyToRead As Boolean

    AssignVariables:
    NF = FreeFile
    ReadIniValue = ""
    KEY = "[" & LCase$(KEY) & "]"
    Variable = LCase$(Variable)

    EnsureFileExists:
    Open INIpath For Binary As NF
    Close NF
    SetAttr INIpath, vbArchive

    LoadFile:
    Open INIpath For Input As NF
    While Not EOF(NF)
    Line Input #NF, Temp
    LcaseTemp = LCase$(Temp)
    If InStr(LcaseTemp, "[") <> 0 Then ReadyToRead = False
    If LcaseTemp = KEY Then ReadyToRead = True
    If InStr(LcaseTemp, "[") = 0 And ReadyToRead = True Then
    If InStr(LcaseTemp, Variable & "=") = 1 Then
    ReadIniValue = Mid$(Temp, 1 + Len(Variable & "="))
    Close NF: Exit Function
    End If
    End If
    Wend
    Close NF
    End Function




  • Merhaba ,

    her iki kod ile de deneme yaptım ama bende bir problem görünmüyor. Ben kendi çalıştığım küçük örneği webe yükledim sizde indirip göz gezdirebilirsiniz. Belki dosya yolu yada localinizden kaynaklanan bir sorun olabilir diye düşünüyorum yada kayıt yaptığınız ini dosyası içerisine beklenmedik hatalı bir veri kayıt edilmiş olabilir.

    http://r a p i d s h a r e.com/files/376132638/test_vb.rar.html

    iyi çalışmalar.
  • Dostum sorun kesinlikle read ini modülünde..
    Benimde başta hata vermiyordu..
    Ama şimdi veriyor 6 tane form var..Hepsinde read ini kullanıldı..Ama 2.sinde hata vermiyor..

    Diğerlerinde veriyor..İni dosyasında gerekli kısımlar var ama bulmuyor..F8 ile kontrol ettiğimde modülde burada takılıp kalıyor..

    While Not EOF(NF)
    Line Input #NF, Temp
    LcaseTemp = LCase$(Temp)
    If InStr(LcaseTemp, "[") <> 0 Then ReadyToRead = False
    If LcaseTemp = KEY Then ReadyToRead = True
    If InStr(LcaseTemp, "[") = 0 And ReadyToRead = True Then
    If InStr(LcaseTemp, Variable & "=") = 1 Then
    ReadIniValue = Mid$(Temp, 1 + Len(Variable & "="))
    Close NF: Exit Function
    End If
    End If
    Wend
  • Yok bu sefer eminim..Ama hala çözemedim..
    Ben form1 de hem okuyup yazıyorum..Ama sadece bir tane ini dosyası kullanıyorum..
    Ama diğer hata veren formlarda load larında..
    3 tane ayrı ini dosyasını okuyup yazmaya çalışıyorum o yüzden hata veriyor..
    Bu sorunu nasıl halledebilirim..
  • Merhaba ,

    Eğer sakıncası yok ise programınızın komple kodunu paylaşırsanız o yönde inceleyebiliriz. Aslında mevcut kodda syntax hatası yok , ben ağırlıklı olarak sizin kodlamada bazı noktaları gözden kaçırdığınızı düşünüyorum.

    iyi çalışmalar.
  • Kaç haftadır sinir oldum...
    Derleyicide programımı açıyorum hata vermiyor..Exe ye dönüştürüp çalıştırıyorum.Hata veriyor..Bir türlü çözemedim..Derleyici microsoftun olmasa laf atacamda microsoftun
    Çok basit ini yazma okuma kodları..
    Bu hataları vermesi çok komik..ilginç..
    Arkadaşımla kodları teker teker kontrol ettik çözemedik..
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.