Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Jak odczytać plik od tyłu?
zbyszekxv




Typ: neutral
Postów: 39
Zarejestrowany: Mar 2004
Jak odczytać plik od tyłu?

Witam
Może ktoś wie jak odczytać dane z pliku zaczynając od końca do początku?

28-11-2004 09:51
Pokaż profil zbyszekxv  Wyślij email do zbyszekxv   
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003
Normalnie

Rozumiem, że chodzi Ci o to, że w pliku znajdują się jakieś dane, np.:

Normalnie w pliku masz:
Ala ma kota.
Kot ma Alę.


Odwrotnie w pliku masz:
.atok am alA
.ęlA am toK


Nic prostszego.

Odczytujesz linijkę, pobierasz jej długość i w pętli odczytujesz, np.:

Sub Czyt()
    CzytajOdwrotnie ("C:\Moje dokumenty\test.txt"
End Sub

Sub CzytajOdwrotnie(fileName As String)
Dim numFile As Long, dl As Long, i As Long
Dim strTmp As String, newTmp As String

numFile = FreeFile
Open fileName For Input As #numFile
    Do While Not EOF(numFile)
        Line Input #numFile, strTmp
        dl = Len(strTmp)
        For i = dl To 1 Step -1
            newTmp = newTmp & Mid(strTmp, i, 1)
        Next i
        MsgBox "Przed :" & vbTab & strTmp & vbCr & "Po :" & vbTab & newTmp, vbInformation, "Komunikat"
        newTmp = ""
    Loop
Close #numFile
End Sub



_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

28-11-2004 12:31
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003
Chyba, że chodziło Ci o to...

Chyba, że chodziło Ci o to, by ustawić pozycję od odczytu na końcu pliku i czytać plik linijka po linijce od końca do początku...


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

28-11-2004 12:41
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
zbyszekxv




Typ: neutral
Postów: 39
Zarejestrowany: Mar 2004

Chyba, że chodziło Ci o to, by ustawić pozycję od odczytu na końcu pliku i czytać plik linijka po linijce od końca do początku...

No właśnie o to mi chodzi - jak to zrobić?

28-11-2004 15:03
Pokaż profil zbyszekxv  Wyślij email do zbyszekxv   
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003
OK...

OK, ale daj więcej szczegółów:
Jak zapisujesz dane do pliku?
Jak są zorganizowane?

Odpowiedź uzależniona jest od powyższego.


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

29-11-2004 20:54
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
zbyszekxv




Typ: neutral
Postów: 39
Zarejestrowany: Mar 2004

Struktura pliku wygląda tak:
aaaaa  - pierwsza linijka zapisana przz Line Input
aaaaa  - druga linijka zapisana przez Line Input
a,a,a,a,a,  - trzecia linijka zapisana przez
              For x=1 To 5
              Input#1,a
I znowu od początku te same trzy linijki i chcę zacząć czytać plik od tej ostatniej linijki aż do góry.

29-11-2004 22:16
Pokaż profil zbyszekxv  Wyślij email do zbyszekxv   
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003

Myślę, że coś pomieszałeś z tym zapisem...

Ale ideę rozumiem i proponuję byś czytał plik normalnie i ładował poszczególne elementy do tablicy. Następnie odczytywał tablicę od tyłu.

Co do szczegółów pomęcz się sam...


Sub Czyt_1()
    CzytajOdTylu ("C:\Moje dokumenty\test.txt"
End Sub


Sub CzytajOdTylu(fileName As String)
Dim numFile As Long, poz As Long, i As Long
Dim strTmp As String, newTmp As String
Dim TablicaZnakow() As String

numFile = FreeFile
Open fileName For Input As #numFile
    Do While Not EOF(numFile)
        Line Input #numFile, strTmp
        'zwiększ rozmiar tablicy
        ReDim Preserve TablicaZnakow(poz)
        'przypisz odczytaną wartość
        TablicaZnakow(poz) = strTmp
        poz = poz + 1
    Loop
Close #numFile

'czytaj od końca
For i = UBound(TablicaZnakow) To LBound(TablicaZnakow) Step -1
    strTmp = TablicaZnakow(i)
    MsgBox strTmp, vbInformation, "Komunikat"
Next i

End Sub


Może nie jest to najszczęśliwsze rozwiązanie, ale nic innego mi w tej chwili do głowy nie przychodzi.


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

30-11-2004 21:09
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
zbyszekxv




Typ: neutral
Postów: 39
Zarejestrowany: Mar 2004

Sorry, jasne że pomieszałem odczytywałem te dane z drugiego pliku do zmiennych i zapisywałem przez Write. Dzięki za podpowiedź, będę musiał jeszcze nad tym pokombinować.
Pozdrawiam

01-12-2004 06:48
Pokaż profil zbyszekxv  Wyślij email do zbyszekxv   
Wszystkich odpowiedzi: 7 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1