Avatar billede groyk Novice
26. november 2008 - 15:40 Der er 8 kommentarer og
1 løsning

Flytte linie i en tekstfil til toppen, eller simpel database

Hej Eksperter

Hvordan flytter jeg en linie i en tekstfil fra linie x til linie y?

Skal bruges da jeg søger efter varer i en tekstfil med over 100.000 linier.

Så vil tekstfilen med tiden ændre sig således at de vare jeg søger oftest vil stå i starten af filen og dermed kunne søges hurtigere.

Ja, jeg ved godt jeg burde bruge en database i stedet, men vil gerne kunne køre programmet ex. direkte fra en flashpen eller lign.

Hvis dette kan gøres med en eller anden form for database kunne det også være en fed løsning.

Bruger SharpDevelopment og VS2005 til at kode i.
Avatar billede arne_v Ekspert
26. november 2008 - 16:18 #1
Skift til database. En embedded database, saa du kun har din app + database fil.

Hvis alle linier er lige lange i filen, saa kan du overskrive linier, men det er noget gris.

Hvis alle linier ikke er lige lange, saa er du noedt til at laese hele filen
ind i memory, rette og skrive den ud igen.

Sidstnaevnte gaar maaske. 100000 linier af 100 bytes er kun 10 MB og selv med
Unicode og lidt data struktur overhead er det <25 MB. det kan godt haandteres i
memory.
Avatar billede groyk Novice
26. november 2008 - 16:44 #2
Hej Arne

Tak for det hurtige svar. Min fil fylder p.t. 24Mb.

Tror jeg hælder til embedded database.

Men hvordan?

Jeg har udelukkende erfaring med MySQL, hvilket ville være kanon pga. hastighed.

Men den kan jeg jo ikke køre som embedded.

Hvilken database skal jeg vælge, og hvordan kommer jeg igang.

databasen skal helst være gratis at benytte.
Avatar billede arne_v Ekspert
26. november 2008 - 16:59 #3
MySQL findes faktisk i en embedded usgave, men jeg kender ingen som bruger den.

Oplagte muligheder:
- MS Access (ikke gratis men mange har den)
- SQLServer CE
- Firebird
- SQLite
Avatar billede groyk Novice
26. november 2008 - 17:26 #4
Takker endnu en gang

Har dog stadig et spørgsmål

Kører en embedded database direkte fra en fil? (Som du skriver tidligere)
Skal der ikke installeres noget software på maskinen?

Som sagt skulle mit program gerne spille direkte fra en usb pen eller lign. uden setup.

Hvilken en af databaserne foretrækker du? (Ikke MS Access)
Avatar billede arne_v Ekspert
26. november 2008 - 17:30 #5
Ja.

Din EXE + nogle DLL for databasen + database filen med data, saa koerer det.
Avatar billede arne_v Ekspert
26. november 2008 - 17:32 #6
Der er ikke den store forskel paa dem. Jeg ville nok tage SQLServer CE.
Avatar billede arne_v Ekspert
26. november 2008 - 17:34 #7
Der er en muligvis relevant diskussion og noget C# kode her:
  http://www.eksperten.dk/spm/852481
Avatar billede groyk Novice
26. november 2008 - 21:27 #8
Hej igen Arne

Mange tak for hjælpen, Venligst smid et svar så vi kan få lukket spørgsmålet

Tror jeg vælger SQLite af følgende årsager

1. Open source
2. Bedre mulighed for at køre linux "mondo" (tror jeg)
3. Flere steder at søge hjælp

En simpel søgning her på exp.dk giver kun et hit på SQLServer CE men utallige på SQLite (Kunne jeg selvfølgelig have gjort før jeg spurgte hvilken jeg skulle vælge :-)
Avatar billede arne_v Ekspert
26. november 2008 - 21:30 #9
Hvis det skal virke med mono på Linux så er valget indskrænket til SQLite og Firebird.

SQLite er generelt mere brugt end SQLServer CE, men hvis det specifikt er fra .NET, så
tror jeg at SQLServer CE er mindst lige så udbredt.

Og et svar.
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