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

Trenutno ucitavanje velikog txt fajla u textbox, listbox...

[es] :: Visual Basic 6 :: Trenutno ucitavanje velikog txt fajla u textbox, listbox...
(Zaključana tema (lock), by Aleksandar Ružičić)

[ Pregleda: 3344 | Odgovora: 11 ] > FB > Twit

Postavi temu

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

rgdrajko
Beograd

Član broj: 117734
Poruke: 710
80.93.249.*



+3 Profil

icon Trenutno ucitavanje velikog txt fajla u textbox, listbox...14.07.2007. u 22:12 - pre 204 meseci
Kako da trenutno ucitam veliki txt fajl u textbox, listbox...
rgdrajko
 
0

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 900
195.252.116.*



+7 Profil

icon Re: Trenutno ucitavanje velikog txt fajla u textbox, listbox...14.07.2007. u 23:03 - pre 204 meseci

Citat iz MSDN-a
"
The Text setting for a TextBox control is limited to 2048 characters unless the MultiLine property is True, in which case the limit is about 32K.
"
Prevod
Tekst podesavanje TextBox kontrole je ograniceno na 2048 karaktera ukoliko MultiLine osobina nije True , u tom slucaju limit je oko 32K
 
0

Shadowed
Vojvodina

Član broj: 649
Poruke: 12848



+4784 Profil

icon Re: Trenutno ucitavanje velikog txt fajla u textbox, listbox...15.07.2007. u 00:14 - pre 204 meseci
A i listbox ce poceti da koci posle 1-2 hiljade stavki.
 
0

icobh
Igor Pejašinović
Network Admin
Navigo SC d.o.o.
Banja Luka

Član broj: 18738
Poruke: 1319
*.inecco.net.

Sajt: www.nsc.ba


+4 Profil

icon Re: Trenutno ucitavanje velikog txt fajla u textbox, listbox...15.07.2007. u 00:37 - pre 204 meseci
Evo da se ja javim poslije xxx dana, još malo pod čokom, ali mislim da će biti sasvim OK ono što ću da kažem. Tj. samo prenesem nečiju ideju za listview ali koju je moguće primjeniti i na textbox. Naime ideja je sljedeća:
U textbox učitavaš samo onoliko linija koliko može korisnik da vidi. Mali algoritam za šetanje kroz taj text napraviš i eto rješenja problema. Nije sporo, efekat je isti i svi srećni na kraju
I ♥ ♀

Ovaj post je zlata vrijedan!
 
0

rgdrajko
Beograd

Član broj: 117734
Poruke: 710
80.93.249.*



+3 Profil

icon Re: Trenutno ucitavanje velikog txt fajla u textbox, listbox...15.07.2007. u 08:34 - pre 203 meseci
Hvala. Sve sto ste rekli je u redu, to je poznato. Veci fajl od 32kB cu podeliti na vise delova po 32 kB i po potrebi ucitavati te delove u text box da ne bih pravio sopstveni editor. Kako da trenutno ucitam iz tekstualnog fajla tih 32KB u text box jer ucitavanje preko line input traje nekoliko sekundi.
rgdrajko
 
0

goranvuc
Goran Vucicevic
Novi Sad

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



+41 Profil

icon Re: Trenutno ucitavanje velikog txt fajla u textbox, listbox...15.07.2007. u 11:47 - pre 203 meseci
Koristi Microsoft RichText controlu, koja nema tih problema, i njenu metodu "LoadFile", kao npr:
Code:

RichTextBox1.LoadFile "c:\Test.txt", rtfText
 
0

rgdrajko
Beograd

Član broj: 117734
Poruke: 710
80.93.249.*



+3 Profil

icon Re: Trenutno ucitavanje velikog txt fajla u textbox, listbox...15.07.2007. u 20:30 - pre 203 meseci
re GoranVuc
Hvala ti Gorane, zaboravio sam na RichText kontrolu jer je odavno nisam koristio. Inace ona, za razliku od textboxa koji moze ucitati do 64KB, ona nema ogranicenja. Ipak sa tim ne resavam pitanje brzog ucitavanja u listbox.

Citat:
icobh
U textbox učitavaš samo onoliko linija koliko može korisnik da vidi. Mali algoritam za šetanje kroz taj text napraviš i eto rješenja problema. Nije sporo, efekat je isti i svi srećni na kraju :)

Tako sam i uradio i za textbox i za listbox.

Hvala vam svima, ali resio sam problem otvarajuci tekstualni fajl kao binarni. Skoro trenutno ucitava 60K(oko 10.000 redova) iz txt fajla "ilustracije.txt" u textbox i u listbox. Ucitavanje preko Line input je sporo i traje desetak i vise sekundi.

Evo kratkog primera, na brzinu, za brzo ucitavanje 60KB tekstualnog fajla u textbox i listbox.

Code:

Private Sub Form_Load()
    Const slog = 30000
    Dim ocitanoizfajla As String * slog
    
    novarec = ""
    Open "c:\proba\ilustracije.txt" For Binary As #1 Len = slog
        duzinafajla = LOF(1)
        For n = 1 To duzinafajla Step slog
            Get #1, n, ocitanoizfajla
            novarec = novarec & ocitanoizfajla
        Next n
    Close
    
    ostatak = duzinafajla Mod slog
    
    druganovarec = ""
    Open "c:\proba\ilustracije.txt" For Binary As #1 Len = ostatak
        Get #1, duzinafajla - ostatak + 1, ocitanoizfajla
        druganovarec = druganovarec & ocitanoizfajla
    Close
    
    sadrzajfajla = novarec & druganovarec
    
    Text1.Text = sadrzajfajla
    
    niz = Split(sadrzajfajla, vbCrLf)
    For n = 0 To UBound(niz)
        List1.AddItem niz(n)
    Next n
    
    
    Label1.Caption = Label1.Caption & UBound(niz)
    
End Sub

rgdrajko
Prikačeni fajlovi
 
0

BinLaden
Ni na nebu ni na zemlji

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

Sajt: www.sove-soft.rs.ba


Profil

icon Re: Trenutno ucitavanje velikog txt fajla u textbox, listbox...17.07.2007. u 15:20 - pre 203 meseci
Posto vidim da neznas rad sa fajlovima kod binarnog pristupa objasnicu ti gdje grijesis.

1. Kada otvaras fajl naredbom (Open "C:\test.txt" For Binary As #1) argument (Len = neki_broj)
se zanemaruje odnosno duzina zapisa ne moze da se odredi pri binarnom pristupu
nekoj datoteci. Duzinu procitanog zapisa odredjujes formatiranjem Varijable u
koju ocitavas zapis odnosno odredjivanjem njene duzine. Recimo mozes ovako:
"ocitanoizfajla = String(20, " ")"
2. Pri otvaranju fajla nije sigurno koristiti broj kao pokazivac na fajl (#1) jer
nemora da znaci da je (#1) slobodan handle, odnosno bolje je napraviti varijablu, recimo
"iFile" cjelobrojnog tipa i onda komandom (iFile = FreeFile) dobijas prvi
slobodni handle za file koji ces da otvaras. Posle u naredbama Open, Get, Input...
prosledjujes Varijablu "iFile" umjesto direktnog broja(#1).
3. Kod zatvaranja naredbom "Close" treba da se naglasi koji fajl zatvaras odnosno
treba napisati (Close #1) ili jos bolje (close #iFile) ili mozes da koristis komandu
"Reset" koja zatvara sve fjlove otvorene naredbom "Open".

S onom for petljom si bezveze zakomplikovao kod, evo pojednostavljeno kako mozes
pravilno i mnogo brze da uradis to sto ti treba, a i izbacen je nepotrbni
kod koji si postovao u prethodnoj poruci:
Code:
    Dim iFile As Long
    Dim sOut As String
    Dim iLen As Long
    
    iFile = FreeFile
    
    Open App.Path & "\ilustracije.txt" For Binary As #iFile
    iLen = LOF(iFile)

    sOut = String(iLen, " ")
    Get #iFile, 1, sOut
    Close iFile
    Text1.Text = sOut
    sOut = ""
    
    iFile = FreeFile
    Open App.Path & "\ilustracije.txt" For Input As #iFile
    
    Do Until EOF(iFile)
        Line Input #iFile, sOut
        List1.AddItem sOut
    Loop
    Close iFile
    
    Label1.Caption = Label1.Caption & List1.ListCount

A sto se tice komande "Line Input", nije ona spora odnosno, ne usporava ona
toliko program, nego samo upisivanje u listbox odnosno njegova komanda
"List1.AddItem" koja se nalazi u petlji koja se izvrsava nekoliko hiljada puta
oduzima najvise procesorskog vremena. A sto se tice brzine: Petlje "Do .... Loop"
su gotovo uvijek brze od petlje (For ... Next).

Ero S Onoga Sveta
 
0

rgdrajko
Beograd

Član broj: 117734
Poruke: 710
80.93.249.*



+3 Profil

icon Re: Trenutno ucitavanje velikog txt fajla u textbox, listbox...17.07.2007. u 17:31 - pre 203 meseci
Citat:
BinLaden: Posto vidim da neznas rad sa fajlovima kod binarnog pristupa pristupa objasnicu ti gdje grijesis

Hvala ti, mnogo si mi pomogao. Tek sada vidim koliko toga drugi znaju?

Citat:
BinLaden
1. Kada otvaras fajl naredbom (Open "C:\test.txt" For Binary As #1) argument (Len = neki_broj)
se zanemaruje odnosno duzina zapisa ne moze da se odredi pri binarnom pristupu
nekoj datoteci. Duzinu procitanog zapisa odredjujes formatiranjem Varijable u
koju ocitavas zapis odnosno odredjivanjem njene duzine. Recimo mozes ovako:
"ocitanoizfajla = String(20, " ")"

Odovor: Pa da li ti znas sta je ovo?
Citat:
rgdrajko:
Const slog = 30000
Dim ocitanoizfajla As String * slog


Citat:
BinLaden
2. Pri otvaranju fajla nije sigurno koristiti broj kao pokazivac na fajl (#1) jer
nemora da znaci da je (#1) slobodan handle, odnosno bolje je napraviti varijablu, recimo
"iFile" cjelobrojnog tipa i onda komandom (iFile = FreeFile) dobijas prvi
slobodni handle za file koji ces da otvaras. Posle u naredbama Open, Get, Input...
prosledjujes Varijablu "iFile" umjesto direktnog broja(#1).
3. Kod zatvaranja naredbom "Close" treba da se naglasi koji fajl zatvaras odnosno
treba napisati (Close #1) ili jos bolje (close #iFile) ili mozes da koristis komandu
"Reset" koja zatvara sve fjlove otvorene naredbom "Open".

S onom for petljom si bezveze zakomplikovao kod

Odgovor: Pa procitaj sta je dole napisano.
[/quote]
Citat:
rgdrajko
Evo kratkog primera, na brzinu, za brzo ucitavanje 60KB tekstualnog fajla u textbox i listbox.


Inace ako nisi znao, binarni fajl se moze otvarati slicno i kao random fajl sto je gore kod mene demonstrirano.

A sada i ja tebe da naucim kako se radi sa binarnim fajlovima(mada ne volim da ispravljam tudje programe);

Code:

Private Sub Form_Load()
    Dim iFile As Long
    Dim sOut As String
    Dim iLen As Long
    
    iFile = FreeFile
    
    Open App.Path & "\ilustracije.txt" For Binary As #iFile
        iLen = LOF(iFile)

        sOut = String(iLen, " ")
        Get #iFile, 1, sOut
    Close iFile
    
    Text1.Text = sOut
    
    niz = Split(sOut, vbCrLf)
    
    For n = 0 To UBound(niz)
        List1.AddItem niz(n)
    Next n
    
    Label1.Caption = UBound(niz)
End Sub


Mnogo je krace i prakticnije.




[Ovu poruku je menjao rgdrajko dana 17.07.2007. u 21:20 GMT+1]
rgdrajko
Prikačeni fajlovi
 
0

rgdrajko
Beograd

Član broj: 117734
Poruke: 710
80.93.249.*



+3 Profil

icon Re: Trenutno ucitavanje velikog txt fajla u textbox, listbox...17.07.2007. u 21:25 - pre 203 meseci
Citava ova gornja prica moze se napisati u 8 redova sa Richtextboxom koji je nevidljiv da bi upis bio u textboxu kao u zadatku. Uopste nema potrebe za textboxom jer je richtextbox bolji i nema ogranicenje od 64KB.

Code:

Private Sub Form_Load()
    RichTextBox1.Visible = False
    RichTextBox1.LoadFile App.Path & "\ilustracije.txt", 1
    savtekst = RichTextBox1.Text
    Text1.Text = savtekst
    niz = Split(savtekst, vbCrLf)
    For n = 0 To UBound(niz)
        List1.AddItem niz(n)
    Next n
End Sub

rgdrajko
Prikačeni fajlovi
 
0

BinLaden
Ni na nebu ni na zemlji

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

Sajt: www.sove-soft.rs.ba


Profil

icon Re: Trenutno ucitavanje velikog txt fajla u textbox, listbox...17.07.2007. u 23:31 - pre 203 meseci
Al smo se napalili... heheh

Kao prvo napisao sam gdje grijesis pri koristenju naredbi (Open, Get, Close.....)
Citat:
Const slog = 30000
Dim ocitanoizfajla As String * slog
To i jeste zakomplikovano, kako sam rekao, jer je glupost
unaprijed odrediti duzinu varijable proizvoljno i kasnije u drugu varijablu smijestati pojedinacno
po 30000 znakova, pa onda izracunavati ostatak i dodavati jos taj dijeo. Pored ostalog time si potrosio ~60 KB
memorije za varijablu koja sadrzi cijeli fajl i jos ~30 KB za tu varijablu na kojoj ucitavas pojedinacno podatke iz fajla.
Citat:
Inace ako nisi znao, binarni fajl se moze otvarati slicno i kao random fajl sto je gore kod mene demonstrirano.
To nije tacno jer se binarni i radnom pristup fajlu potpuno razlikuju po pristupu bajtovima
koji su zapisani u datoteci.
Citat:
A sada i ja tebe da naucim kako se radi sa binarnim fajlovima(mada ne volim da ispravljam tudje programe);
Kao prvo to nije rad sa binarnim fajlom, svaki fajl je isti, nego je razlika u
pristupu fajlu naredbom "Open" odnosno u zavisnosti dali mu se pristupa sa (Binary ili Random ili Input, Output, Append)
mijenja se nacin iscitavanja i upisivanja podataka u fajl. A to sto si izmijenio u odnosu na moj code (sto pokusavas
da me naucis) nije uopste rad sa binarnim pristupom fajlu nego rad sa nizovima i stringovima.
Citat:
Mnogo je krace i prakticnije.
Ako sam dobro shvatio pitanje trazio si brzinu a ne duzinu koda
i u prethodnoj poruci vec sam ti objasnio gdje se gubi najvise vremena.
Citat:
rgdrajko: Citava ova gornja prica moze se napisati u 8 redova sa Richtextboxom koji je nevidljiv da bi upis bio u textboxu kao u zadatku. Uopste nema potrebe za textboxom jer je richtextbox bolji i nema ogranicenje od 64KB. ..............

Pitanje:
Ako vec koristis RichTextBox, zasto onda jednostavno umjesto textboxsa na formu ne stavis RichTextBox
umjesto sto ucitavas fajl u skriveni RTB pa onda u varijablu pa u TextBox. Onda ces imati samo jednu liniju
koda kako ti je @goranvuc rekao negdje na pocetku teme.

Jos nesto sto nisam rekao a tice se brzine: Pozeljno je uvijek definisati Promjenjivu prije njene upotrebe jer
ne definisana promjenjiva uvijek je tipa Varijan koji je procesoru najsporiji za obradu, a kasnije u zavisnosti
koja se vrijednost promjenjivoj dodjeljuje ta promjenjiva se prebacuje u tip podataka koji joj je dodijeljen.
Ero S Onoga Sveta
 
0

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: Trenutno ucitavanje velikog txt fajla u textbox, listbox...18.07.2007. u 00:14 - pre 203 meseci
ok momci, dosta prepucavanja. vec je izneto nekoliko resenja za ovaj problem, nema potrebe dalje raspravljati o bilo cemu. lock!
 
0

[es] :: Visual Basic 6 :: Trenutno ucitavanje velikog txt fajla u textbox, listbox...
(Zaključana tema (lock), by Aleksandar Ružičić)

[ Pregleda: 3344 | Odgovora: 11 ] > FB > Twit

Postavi temu

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