Avatar billede tdaugaard Nybegynder
16. december 2000 - 17:42 Der er 17 kommentarer og
1 løsning

Læs tekstfil, fjern duplicates, overskriv samme fil

Som titlen siger. En Sub der gør ovenstående, er der nogle der har sådan en, eller vil lave en ?

Den SKAL være hurtig.

For lidt point ? just ask!
Avatar billede tdaugaard Nybegynder
16. december 2000 - 17:44 #1
(vedr. \"for lidt point\" .. relativt! blazer kunne godt finde på at kræve 20000 for det *lol*)
Avatar billede blazer Nybegynder
16. december 2000 - 17:45 #2
nejnej..det kunne jeg ikke..*fløjter*
Avatar billede tdaugaard Nybegynder
16. december 2000 - 17:56 #3
Lige en lille note:

1. Ingen listboxe til at gemme temp info i!
2. Ingen STORE arrays (der kan være over 32000 entries i filerne)

Måske en \"swap fil\" ville være en idé .. dunno
Avatar billede driis Nybegynder
16. december 2000 - 18:13 #4
Jeg tror, det er hurtigst / nemmest at lave det med et stort array - selvom det stadig kommer til at tage ret lang tid...
Avatar billede tdaugaard Nybegynder
16. december 2000 - 18:18 #5
driis:> jeg KAN ikke lave det med et array. Lad os sige at hvert entry er 255 bytes langt så vil det kræve ~7 MB RAM at lave sådan et array ..

men jeg kan da prøve .. kan du lave det for mig ? Jeg gider ikke sidde og bryde mit lille trætte hovede med det nu ..
Avatar billede driis Nybegynder
16. december 2000 - 18:22 #6
Har du en fil, jeg kan prøve med?
Avatar billede tdaugaard Nybegynder
16. december 2000 - 18:25 #7
har lige sendt dig en ..
Avatar billede driis Nybegynder
16. december 2000 - 19:13 #8
Dim Buffer As String
Dim Content(256000) As String
Dim I As Long
Dim X As Long

Sub Main()
Open \"D:\\_level3.txt\" For Input As 1

Do
    Line Input #1, Buffer
    For X = 0 To I
    If Content(X) = Buffer Then GoTo NextLine
    Next X
    Content(I) = Buffer
    I = I + 1
    \'DoEvents
NextLine:
Loop Until EOF(1)

I = I - 1
Close 1

Open \"D:\\_level3.txt\" For Output As 1
For X = 0 To I
    Print #1, Content(X)
Next X

MsgBox \"Finished\"

End Sub
Avatar billede driis Nybegynder
16. december 2000 - 19:15 #9
Hvor lang tid må det tage? Ovenstående tager 34 sekunder at udføre (uden DoEvents). Jeg prøver lige at compile det, og se om det hjælper.
Avatar billede driis Nybegynder
16. december 2000 - 19:21 #10
Det tager 20 sekunder at udføre efter compile. Jeg tror, det bliver en ret kompliceret affære at optimere yderligere.

Der er i øvrigt _ret_ mange dubletter, filen fylder ca. ½-delen bagefter.
Avatar billede tdaugaard Nybegynder
16. december 2000 - 19:29 #11
ARRGG!! det var noget af et EL GRANDE array du bruger der ... men det gør nok ikke så meget .. jeg prøver

Og tjaa .. 34 sekunder .. det er vel OK for en fil på over 16000 linier
men hvor lang tid tager det med DoEvents ? (den er lidt essentiel når man vil bruge en progressbar)

men jeg prøver..
Avatar billede driis Nybegynder
16. december 2000 - 19:33 #12
50 seks. med DoEvents, ukompileret.

Det kommer sikkert i nærheden af 30 sekunder efter compile.
Avatar billede driis Nybegynder
16. december 2000 - 19:35 #13
Array\'et kan selvfølgelig sættes ned i størrelse, hvis man er nogenlunde sikker på størrelsen af filen. Men hvis der ellers er hukommelse nok, gør det intet, performance-mæssigt.
Avatar billede tdaugaard Nybegynder
16. december 2000 - 19:36 #14
driis:> i know .. med arrayet .. jeg sidder lige og tester/kigger på det.
Avatar billede tdaugaard Nybegynder
16. december 2000 - 19:41 #15
hmm ... hvor hurtig er din computer ? for her på min Cyrix 266\'er kører det LIDT langsomt ;-)
Avatar billede driis Nybegynder
16. december 2000 - 19:59 #16
Mig: PIII 667, 256 MB RAM, Win2000
Avatar billede tdaugaard Nybegynder
16. december 2000 - 20:02 #17
ARRG! Sygt .. så er det jo nok derfor det går så stærkt ..jeg kigger videre i morgen, jeg skal i seng nu .. ses
Avatar billede tdaugaard Nybegynder
17. december 2000 - 15:04 #18
Nå .. ja, jeg kan godt se det er det hurtigste vi kommer op på. Det er også ligemeget det er et program der bare skal stå og \"lave noget\" .. der er ingen der skal bruge den computer det kommer til at køre på.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester