Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

brisanje istih (duplih) linija iz txt fajla ... vb6

[es] :: Visual Basic 6 :: brisanje istih (duplih) linija iz txt fajla ... vb6

Strane: 1 2

[ Pregleda: 6214 | Odgovora: 25 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kristina11

Član broj: 169303
Poruke: 4
195.252.79.*



Profil

icon brisanje istih (duplih) linija iz txt fajla ... vb614.01.2008. u 12:38 - pre 197 meseci
sve iskusne u vb6 molim za pomoc

imam txt file koji izgleda ovako

primer

aaaaaaa
bbbbbbb
ccccccc
aaaaaaa
aaaaaaa
acacaca

treba da uklonim sve duplikate iz fajla tako da ostanu samo unique linije

trazila sam po netu 2 dana a uglavnom to sto sam nasla nije radilo

hvala
 
Odgovor na temu

Aleksandar Vasic
Web Administrator, Uspon d.o.o
Čačak

Član broj: 91692
Poruke: 1226
*.dynamic.sbb.co.yu.

Sajt: www.vasictech.net


+1 Profil

icon Re: brisanje istih (duplih) linija iz txt fajla ... vb614.01.2008. u 14:50 - pre 197 meseci
Najbolje bi bilo da taj fajl ucitas u textbox ili listbox,pa onda da izbaci duplikate pa da stvori txt fajl

Ucitavanje u textbox:

Code:
Open "C:\tekst.txt" For Input As #1
Do Until EOF(1)
Line Input #1, LineOfText$
Text$ = Text$ & LineOfText$ & vbCrLf & Wrap$
Loop
Text1.Text = Text$         'gde ti je Text1 ime textbox-a


Ucitavanje u listbox

Code:
Open "C:\tekst.txt" For Input As #1
Do
Input #1, a
List1.AddItem a     'gde ti je List1 ime Listbox-a
Loop Until EOF(1)


Snimanje fajla iz textbox-a

Code:
Open "C:\tekst.txt" for Output as #2
Print #2, Text1.Text
Close #2


Snimanje fajla iz listbox-a

Code:
Open "C:\tekst.txt" For Output As #2
For i = 0 To List1.ListCount
Print #2, List1.List(i)
Next i


e a za izbacivanje duplikata ces morati da sacekas na odgovor nekog od iskusnijih ;)
 
Odgovor na temu

djpero.84
Pero Knezevic
Prijedor

Član broj: 120188
Poruke: 190
*.teol.net.

Sajt: www.littlefrog.ba


Profil

icon Re: brisanje istih (duplih) linija iz txt fajla ... vb614.01.2008. u 14:52 - pre 197 meseci
Mislim ne znam u kojoj mjeri odgovor zelis, ali da li si malo razmislila kako to treba da radi i pokusala ista uraditi?

Po meni ono sto bi trebalo je splitovati fajl koji ucitas po vbcrlf u array string i uporedjivati najnoviju liniju sa prethodnim linijama, i ako prodje kao unique upisivati u novi tekst fajl liniju po liniju.



P.S. ili bi "parce koda" :) | Ili pak, kako rece jedan od uvazenih kolega ovog foruma, najbolje bi bilo da napisete block koda koji se odnosi na to jer neki govore kako neznaju gdje bi to ubacili ili pak prekopiraju kod a nemaju kontrola na formi i sl. :) pa eto razumite i nas koji se pomalo (koliko znaju i umeju) trude da vam odgovore ......
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: brisanje istih (duplih) linija iz txt fajla ... vb614.01.2008. u 15:58 - pre 197 meseci
Pa za to ti i ne treba VB 6.0 dovoljan je Excel: Importuj tekst, idi na Data/Filter/Advanced Filter i obelezi "Unique records only"
 
Odgovor na temu

kristina11

Član broj: 169303
Poruke: 4
195.252.79.*



Profil

icon Re: brisanje istih (duplih) linija iz txt fajla ... vb614.01.2008. u 16:50 - pre 197 meseci
pa znam da netreba ali meni treba
moze da se uradi i sa ultraedit-om
ali ja hocu da se na jedan click to urdi samo

---------------

evo sad probam neki cod
ima pomaka ali mi jos tu dosta stvari nije jasno
naprimer uspela sam da odstranim neke duplikate ali i ne sve nekoliko parova ostane
nastavicu da pokusavam pa cu da se javim kasnije

hvala svima na pomoci
 
Odgovor na temu

djpero.84
Pero Knezevic
Prijedor

Član broj: 120188
Poruke: 190
87.250.103.*

Sajt: www.littlefrog.ba


Profil

icon Re: brisanje istih (duplih) linija iz txt fajla ... vb614.01.2008. u 16:58 - pre 197 meseci
Pa postavi taj "bugoviti" kod da vidimo :)
 
Odgovor na temu

kristina11

Član broj: 169303
Poruke: 4
195.252.79.*



Profil

icon Re: brisanje istih (duplih) linija iz txt fajla ... vb614.01.2008. u 17:21 - pre 197 meseci
ovo sam uzela kao primer
cod ispod brise prazne redove is txt-a

Code:

    Dim sBuff As String
    Dim sTemp As String
    
    Open "c:\test.txt" For Input As #1     
    Open "c:\output.txt" For Output As #2  
    
    Do Until EOF(1) 'read in file until done
        Line Input #1, sBuff
        If Trim(sBuff) = "" Then      
            sTemp = "i love ars"     
            Do Until Trim(sTemp) = ""
                Line Input #1, sTemp
                DoEvents
            Loop
        Else
            Print #2, sBuff           
        End If
        DoEvents
    Loop
    Close #1
    Close #2




a ovo je izmenjeni prvi koji brise ali ne sve

Code:

Dim sBuff As String
    Dim sTemp As String
    
    Open "c:\1a.txt" For Input As #1     
    Open "c:\11.txt" For Output As #2  
    
  Do Until EOF(1) 'read in file until done
        Line Input #1, sBuff
        If Trim(sBuff) = sTemp Then      
            sTemp = "jejeje"     
            Do Until Trim(sBuff) = sTemp
                Line Input #1, sTemp
                DoEvents
            Loop
        Else
            Print #2, sBuff          
        End If
        DoEvents
    sTemp = sBuff
    Loop
    
    Close #1
    Close #2


e sad ovaj prvi radi jer je "" konstanta
a meni sbuff treba da uzima novu vrednost
kako god ovo je napredak nadam se da cu uspeti da uradim nesto



[Ovu poruku je menjao Aleksandar Ružičić dana 14.01.2008. u 19:02 GMT+1]
 
Odgovor na temu

steve585
Stevan Stanić
Project Manager
Zagreb

Član broj: 131815
Poruke: 281
*.xnet.hr.



+1 Profil

icon Re: brisanje istih (duplih) linija iz txt fajla ... vb614.01.2008. u 17:32 - pre 197 meseci
Da li je ikako moguce posmatrtai taj file kao tabelu nad kojom je moguce izvrsiti SQL upit. Na taj nacin ces Distinct upitom ocistiti duple vrijednosti :-)
steve585
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: brisanje istih (duplih) linija iz txt fajla ... vb614.01.2008. u 18:27 - pre 197 meseci
evo nesto na brzaka:
Code:

Public Sub RemoveDuplicatatedLines(Filename As String, Optional Compare As VbCompareMethod = vbBinaryCompare)

    Dim fIn         As Integer
    Dim fOut        As Integer
    Dim sTemp       As String
    Dim sLine       As String
    Dim sBuffer()   As String
    Dim lLineCount  As Long
    Dim i           As Long
    Dim bDuplicate  As Boolean
    
    sTemp = Filename & ".~" & CStr(Int(Rnd * 99999))
    
    fIn = FreeFile
    
    ReDim sBuffer(1 To 50)
    lLineCount = 0
    
    Open Filename For Input Access Read As #fIn
        
        fOut = FreeFile
        
        Open sTemp For Output Access Write As #fOut
        
            While Not EOF(fIn)
                
                Line Input #fIn, sLine
                
                bDuplicate = False
                
                For i = 1 To lLineCount
                    If StrComp(sLine, sBuffer(i), Compare) = 0 Then
                        
                        bDuplicate = True
                        Exit For
                        
                    End If
                Next
                
                If Not bDuplicate Then
                    
                    Print #fOut, sLine
                    
                    If lLineCount >= UBound(sBuffer) Then
                        
                        ReDim Preserve sBuffer(1 To lLineCount + 50)
                    
                    End If
                    
                    lLineCount = lLineCount + 1
                    sBuffer(lLineCount) = sLine
                
                End If
            
            Wend
        
        Close #fOut
        
    Close #fIn
    
    FileCopy sTemp, Filename
    
    On Error Resume Next
    
    Kill sTemp
    
    On Error GoTo 0

End Sub

nije bas najefikasnije resenje ni najbolje (recimo, podrzava samo PC textualne fajlove, tj fajlove u kojima je kraj reda oznacen za CRLF karakterima) ali recimo da je "zlatna sredina" i da ce odgovarati za 90% slucajeva (na windows masini)

a koristi se ovako:
Code:

RemoveDuplicatatedLines "c:\test.txt"

 
Odgovor na temu

kristina11

Član broj: 169303
Poruke: 4
195.252.79.*



Profil

icon Re: brisanje istih (duplih) linija iz txt fajla ... vb614.01.2008. u 19:30 - pre 197 meseci
aleksandre radi super

hvala ti ko bratu :)

takodje hvala svima koji su pomagali
pozdrav
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: brisanje istih (duplih) linija iz txt fajla ... vb614.01.2008. u 20:54 - pre 197 meseci
Krcko, nisam 100% siguran (al' 99.9 :)), ali mi se cini da brze ide ako se prvo sve ucita, zatim sortira, a onda jednim prolazom izbace duplikati (poredis susedne). S' tim da je potrebno koristiti neke liste/kolekcije za to (polako zaboravljam sta od toga ima u 6ici) da ne bi resize-ovao nizove. Naravno, kakav sam lenj, opet me mrzi da pisem kod, samo teoretisem :)
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: brisanje istih (duplih) linija iz txt fajla ... vb614.01.2008. u 21:48 - pre 197 meseci
heh da sam se kladio da ces da se javis da "kritikujes" kod (i pri tom pomenes kako u 6ici nema nista u poredjenu sa .net-om) dobio bi, doduse malo pare posto bi kvota bila mala :D

LM, na mestu je tvoj komentar, zato sam i rekao da ono nije najefikasnije resenje, samo sam znao da onakav kod mogu da napisem iz glave, bez testiranja, a sa kolekcijama (da, ima ih u 6ici, mada one ugradjene nisu nesto, al zato postoji par SuperCollection resenja) bih morao da pokrecem vb da proveravam kod :)
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: brisanje istih (duplih) linija iz txt fajla ... vb614.01.2008. u 22:29 - pre 197 meseci
Ih, pa mogao si valjda da napravis jedan sorted binary tree iz glave :P
Taman i ne moras posle da ga sortiras. Mada, merge sort radi brze nad obicnom listom nego bin. tree (sto je mene iznenadilo, iskreno receno).
 
Odgovor na temu

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 900
91.148.115.*



+7 Profil

icon Re: brisanje istih (duplih) linija iz txt fajla ... vb616.01.2008. u 00:09 - pre 197 meseci
Mozes i ovako
Code:

Private Sub RemoveLines(strFileName As String)
On Error GoTo Err
Dim hFile As Integer, strLine As String, strBuffer As String
hFile = FreeFile
Open strFileName For Input As #hFile
Do Until EOF(hFile)
Line Input #hFile, strLine
If strBuffer = "" Then
strBuffer = strLine & vbCrLf
Else: If InStr(1, strBuffer, strLine) = 0 Then strBuffer = strBuffer & strLine & vbCrLf ' ako ga nemamo u string bufferu onda dodajemo
End If
Loop
Close #hFile
hFile = FreeFile
Open strFileName For Output As #hFile
Print #hFile, strBuffer
Close #hFile
Exit Sub
Err:
Debug.Print Err.Description
End Sub

Private Sub Command1_Click()
RemoveLines "c:\text.txt"
End Sub


Usput, resenja za ovako proste probleme mozes da nadjes samo na forumima (ne na sajtovima sa free kodom)
Pozdrav
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: brisanje istih (duplih) linija iz txt fajla ... vb616.01.2008. u 00:37 - pre 197 meseci
Mislim da je ovo jos sporije.
Bilo bi zanimljivo napraviti benchmark i poredjenje (cisto ako je iko raspolozen, prvobitni problem je ionako resen). Ako stignem napravicu moju varijantu (read, sort, loop and delete).
Fajl za testiranje se moze napraviti tako sto se generise npr. 10000 slucajnih celih brojeva od 1 do 100000. Tako ce otprilike 10% biti duplirano.
 
Odgovor na temu

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 900
91.148.115.*



+7 Profil

icon Re: brisanje istih (duplih) linija iz txt fajla ... vb616.01.2008. u 12:51 - pre 197 meseci

Nema sta tu da se misli.
Imate VB6 projekat za testiranje brzine pa ako neko hoce da testira svoju neka ga skine i doda svoju fn (ubacio sam nase dve).
Inace, brzina zavisi od duzine linija i broja ponavljanja.
Pozdrav
Prikačeni fajlovi
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: brisanje istih (duplih) linija iz txt fajla ... vb616.01.2008. u 13:32 - pre 197 meseci
Evo i fajlova sa slucajnim brojevima. Ima jedan od 10 000, jedan od 100 000 i jedan od 1 000 000 redova. Morao sam na rapidshare okaciti posto je prevliki .rar za upload...
http://rapidshare.com/files/84245437/RndNumbers.rar
 
Odgovor na temu

BinLaden
Ni na nebu ni na zemlji

Član broj: 147476
Poruke: 102
*.teol.net.

Sajt: www.sove-soft.rs.ba


Profil

icon Re: brisanje istih (duplih) linija iz txt fajla ... vb617.01.2008. u 22:31 - pre 197 meseci
Kad je takmicenje u pitanju to ne moze da prodj bez mene. heheheh...
Code:
Private Sub BinLaden(FileName As String)
Dim sFile As String, sFined As String, sOst As String
Dim lEnd As Long, lStart As Long
Dim hFile As Long
Const lCr = 2

    hFile = FreeFile
    Open FileName For Input As #hFile
    sFile = StrConv(InputB(LOF(hFile), hFile), vbUnicode)
    Close hFile
    
    lStart = 1
    lEnd = InStr(lStart, sFile, vbCrLf)
    
    Do While Not lEnd = 0
        sFined = Mid(sFile, lStart, lEnd - lStart + lCr)
        sOst = Replace(sFile, sFined, "", lEnd + lCr)
        sFile = Left(sFile, lEnd + 1) & sOst
        lStart = lEnd + lCr
        lEnd = InStr(lStart, sFile, vbCrLf)
    Loop
    
    On Error Resume Next
    Kill FileName
    
    hFile = FreeFile
    Open FileName For Append As #hFile
    Print #hFile, sFile
    Close hFile
    
End Sub

U vecini slucajeva ovaj kod je najbrzi, mada bi mjerodavnije bilo da se testiraju na istom file-u sve tri funkcije.

@Shadowed: onaj rar sto si okacio u prethodnoj poruci ne valja, ne mogu da ga otvorim.
Ero S Onoga Sveta
Prikačeni fajlovi
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: brisanje istih (duplih) linija iz txt fajla ... vb617.01.2008. u 22:50 - pre 197 meseci
Ja sam ga sada skinuo, uporedio sa onim koji sam i poslao, identicni su. Zatim sam taj skiuti i raspakovao bez problema (total commander-om). Verovatno je tebi ostecen prilikom skidanja. MD5 je 3bc6850e2fcfa412b199d41c2fb85abc
 
Odgovor na temu

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 900
91.148.114.*



+7 Profil

icon Re: brisanje istih (duplih) linija iz txt fajla ... vb618.01.2008. u 00:37 - pre 197 meseci
Citat:

U vecini slucajeva ovaj kod je najbrzi, mada bi mjerodavnije bilo da se testiraju na istom file-u sve tri funkcije.

Jeste , narocito kad je kompajlovan u exe.
Tako da , ako nekom treba ovo resenje, neka koristi trecu funkciju.
Isto kad smo kod performansi (tek sam ovde to primetio) velika je razlika kad se testira iz VB IDE i iz exe verzije.
Ne samo sto je iz IDE malo sporije nego neka fn moze da radi brze u njemu a sporije (od neke druge) u kompajlovanom programu.


 
Odgovor na temu

[es] :: Visual Basic 6 :: brisanje istih (duplih) linija iz txt fajla ... vb6

Strane: 1 2

[ Pregleda: 6214 | Odgovora: 25 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.