Gå til innhold

Variabel med spesielle egenskaper etterlyst!


Anbefalte innlegg

Skrevet (endret)

Jeg trenger en variabel (med variabel mener jeg altså som: string, integer, boolean, osv) som kan lagre mange verdier (som en array), som raskt kan sjekke om den allerede inneholder en verdi (som en dictionary), som det kan legges til flere items uten mye om og men, som kan finne indexen til item (fra 0 til ubound()), og som kan sorteres (som en array).

 

Finnes dette?

 

Den skal brukes til å lagre en retteordliste til et skriveprogram jeg arbeider med, og må derfor kunne oppdateres når brukeren legger til nye ord, kunne finne indexen for å finne ord som ligger nærme dette ordet (for retteforslag) (derfor må det være sortert). Den må også kunne sjekke om et ord allerede eksisterer der før brukeren evt. får lov til å legge til et nytt.

 

Dersom det ikke finnes en slik variabeltype, ber jeg om forslag til hvordan jeg ellers kan løse problemet. Listboxer er laaaaaangt ute, siden det tar *alt* for lang tid å legge alle orda til i en slik (bortimot et minutt, stor ordliste!).

 

Hugeflis

Endret av Hugeflis
Videoannonse
Annonse
Skrevet

Hva med å bruke en database til dette?

 

Hvis du laster hele ordlisten inn i en Variabel blir jo alt liggende i minne på datamaskinen noe som ikke er bra...

 

Bruk en database...

Skrevet

Kan du forklare meg hvordan jeg evt gjør dette? Jeg har aldri brukt databaser før, skjønner du, så jeg ville likt å få forklart følgende:

 

Hvorfor (når) bør man bruke databaser?

Må brukeren ha noe spesielt installert for å bruke det?

Må jeg legge til flere referanser?

 

Hvordan bruker jeg egenskapene jeg etterlyste i første post når jeg har en database?

 

:)

Hugeflis

Skrevet (endret)

Listbox er vel bare en GUI kontroller hvis jeg ikke tar feil, så det å legge denne funksjonaliteten direkte i grensesnittet tror jeg ikke er å anbefale.

 

Tror jeg ville prøvd meg på å legge det inn i en ArrayList. Dette er en klasse som har metoder for søk, sortering, legge til nye, hente ut index av verdi, etc...

 

Bare legg til denne namespacen i topp:

using System.Collections;

 

og opprett en ArrayList slik:

private ArrayList myArrayList = new ArrayList();

 

 

Hvor mange ord er det snakk om sånn ca?

Endret av hpfarstad
Skrevet

Ca 100 000 ord. Kan du gi meg noen raske eksempler på hvordan jeg utfører oppgavene jeg spurte etter? Hvis ikke, så går jeg ut fra at det er enkelt å finne ut (kan ikke teste nå), og prøver neste gang jeg bruker VB.

 

Takk,

Hugeflis

Skrevet

Les f.eks. litt på denne siden:

 

ArrayList Tutorial in VB.NET

 

Kan lite VB syntax da jeg for det meste skriver i C#, men Arraylist har metoder som:

 

ArrayList.Add() // Legg til på slutten
ArrayList.Sort() // Sorter
ArrayList.BinerySearch() // Søk etter verdi
ArrayList.IndexOf() // Finn index til verdi
ArrayList.Insert() // Legg inn verdi på gitt index

 

Vet ikke om det er dette du er ute etter da, men forsto det sånn at du ville ha et objekt å lagre mange objekter i (hvor objektene er strenger).

Skrevet

Det ser ut til å være akkurat det jeg trenger. Jeg skal teste det når jeg får anledning.

 

Tusen takk for hjelpen!

 

Hugeflis

Skrevet

Joda, den funket flott den!

 

Men jeg støtte på et annet problem. Finnes det en eller annen smart funksjon i arraylist (eller en annen plass, eller kan noen lage) som jeg kan kalle med to stringer, og så returnerer den en integer med antallet forskjeller mellom desse to stringene?

 

Hugeflis

Skrevet (endret)

Nei, jeg mener ikke i forskjellen på posisjonene i arraylist, men forskjellen på stavingen av ordet.

Eks:

 

Katt

Hatt

=1

 

Rema

Mega

=3

 

Program

Pro

=4

 

Finnes dette i arraylist eller en annen plass/kan noen lage det? Jeg regner nemlig med at hvis jeg lager det, så blir det veldig tregt...

Endret av Hugeflis
Skrevet (endret)

Kan kanskje rettlede deg ved å si at en string er egentlig en array av typen char (bokstaver). Så du kan hente ut char fra en string på samme måte som du gjøre med en hvilken som helst annen array:

 

string s = "Hallo"

Console.Write(s[0])
Console.Write(s[4])

 

Vil gi output:

"Ho"

 

;)

 

Det jeg ville gjort er altså å lage funksjonen:" int GetDifference(string a, string b)", hvor jeg tok for meg første bokstav i a og sjekket mot alle bokstaver i b, så andre bokstav av a mot alle bokstaver i b, osv...

Endret av hpfarstad
Skrevet

Ja, det har jeg tenkt på, men vil ikke det ta fryktelig lang tid hvis jeg skal sjekke noen tusen stringer?

 

Jaja, jeg prøver.

Skrevet

Jo, det vil nok ta litt tid hvis du skal sjekke flere tusen. Men da er spørsmålet... hvorfor skal du gjøre dette? Hva skal du bruke den ferdige funksjonen til? Ser ikke helt for meg hvor dette er nyttig.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...