Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  11 2122
Hvordan kan jeg bruke "inputbox" i en array dvs legge inn hva som skal være i en array selv ikke "hardkode".
m0b
m0b's Avatar
DonorAdministrator
Hva er det du prater om?
Hei,
Det er fint mulig å definere ett array og så putte inn data inn i dette selv.
Nå kommer mye av det jeg skrive frem som vbscript, men kodegrunnlaget er det samme selv om det ikke blir definert på samme måten. Jeg regner også med at du har litt peiling og gidder google deg litt frem til svar.

si du har:

Kode

inputbox = ObjInput
array = ArrInput(3) 
'Det er fint mulig å deklarere fler spots i array og til og med fler "dimensjoner" om du vil: x,y feks så får du neover og bortover, hvis du vil tenke på det på den måten.

Sub inputbox 'det skal nok være noe (on event vbreturnkey) eller lignende.
ObjInput.text=ArrInput(CounttFreeArrSpot(ArrInput(3)))
End sub

Function CounttFreeArrSpot(StrArray)
'Brukes til å finne første ledige spotten i arrayet som ikke har noe i seg
dim result 'as variant i vb
  For x=lbound(StrArray) to ubound(StrArray) 'teller fra første plasseringen i arrayet til siste.
    If StrArray(x)="" then
      result=1
      exit for 'x=plasseringen din i arrayet, så hvis det ikke ligger noe på den plaseringen hopper den ut av For loopen og gir tallet tilbake igjen
    End if
  Next

  if result <> 1 then 'Plukker opp feil hvis arrayet ikke har ledig plass
    echo "Fant ikke ledig plass i arrayet. Kanskje du skal utvide det?"
    Exit Function
  End if
  CounttFreeArrSpot = x
End function
Nå har ikke jeg definert hvordan du Velger at teksten du har skrevet faktisk kommer inn i arrayet. om du trykker på en ok knapp eller trykker endter mens du er i inputvinduet, men håper min vbs kode hjalp deg med å forstå litt, så kan du heller spørre nærmere om det er noe du er usikker på.
:(){ :|:& };:
tripflag's Avatar
Hvis du ikke har kommet dypere i VB-verden enn dynamisk initialisering av arrays så er det fortsatt ikke for sent å snu. Se heller på noen mer fornuftige språk som C# eller Python, hvorav C# er det jeg foretrekker (og samtidig har visse likheter med VB).

Spørsmålet ditt kan uansett tolkes på alt for mange måter. Ønsker du å forlenge arrayet over tid og sette inn ett og ett objekt, eller ønsker du å legge til en haug med verdier på en gang, for eksempel oppdelt med mellomrom? Løsningen kan variere veldig basert på tolkning.

EDIT: én løsning for å legge til ett element om gangen kan f.eks. være System.Collections.Generic.List. Dersom du heller ønsker å legge til flere elemtner på en gang kan du se på Convert.ToInt32() og string.split().
Sist endret av tripflag; 27. april 2013 kl. 02:17. Grunn: eksempler
Vb er jo ett kjempefint verktøy hvis man vil være å programere. Kodespråket er enkelt og forstå og man slepper å forholde seg til alt mulig at systemlibraries. Så lenge han forstår god kodestruktur og hvordan programering virker, så har det ikke noe å si hva han begynner med. Språk kan jo alltid byttes etterpå (sitter å lærer c# as we speak )


En eventuell løsning på spørsmålet kan være å rett og slett telle +1 på en counter hver gang legger noe i arrayet. og så bruker du den counteren til å legge inn info i neste plasseringen på arrayet. Det kan nok genere feil hvis du overskrider antall plasser arrayet har, men hvis du bare skal teste hvordan ett array funker er det nok grei metode å bruke.
▼ ... over en uke senere ... ▼
Det er VB.Net? Har ikke det også da System.GenericCollections.List<T>?
▼ ... noen uker senere ... ▼
Trådstarter
93 5
for og utdype litt mer.

La oss si vi skal lage en array/matrise men vi vet ikke hvor mange array den kommer til og bli. Vi kunne sette fk.s 10 men siden vi ikke vet det så setter vi () uten og definere hvor mange.

PS. Ja! C++ here I come! :d
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Eller C#, som er en god del lettere å jobbe med. Det er samme systemet bak C# som bak VB.NET, og du har allerede verktøyet du trenger (Visual Studio). Regner med du ikke bruker crappy VB6 fra 1998...
Trådstarter
93 5
Sitat av robhol Vis innlegg
Eller C#, som er en god del lettere å jobbe med. Det er samme systemet bak C# som bak VB.NET, og du har allerede verktøyet du trenger (Visual Studio). Regner med du ikke bruker crappy VB6 fra 1998...
Vis hele sitatet...
Nei!, Vb 2010
Sitat av trixx Vis innlegg
La oss si vi skal lage en array/matrise men vi vet ikke hvor mange array den kommer til og bli. Vi kunne sette fk.s 10 men siden vi ikke vet det så setter vi () uten og definere hvor mange.
Vis hele sitatet...
Høres ut som et problem du kan løse med ArrayList.
Trådstarter
93 5
Sitat av Nichotin Vis innlegg
Høres ut som et problem du kan løse med ArrayList.
Vis hele sitatet...
nei, vi bruker Redim for og utvide matrise lengden.
Sitat av trixx Vis innlegg
Hvordan kan jeg bruke "inputbox" i en array dvs legge inn hva som skal være i en array selv ikke "hardkode".
Vis hele sitatet...
Sitat av trixx Vis innlegg
for og utdype litt mer.

La oss si vi skal lage en array/matrise men vi vet ikke hvor mange array den kommer til og bli. Vi kunne sette fk.s 10 men siden vi ikke vet det så setter vi () uten og definere hvor mange.

PS. Ja! C++ here I come! :d
Vis hele sitatet...
Litt vanskelig å få med seg hva du vil, har du fått løst det?
Hvis ikke, alt du trenger å gjøre er å spørre bruker om input, validere input, iterere gjennom array og legge til på første ledige plass. Hvis det ikke er ledig plass, utvid array.
For å ta imot flere elementer til arrayen samtidig, bestem deg for et "deletegn"(delimiter), ta imot input, del input basert på deletegn, valider og legg i array.

Har ikke kodet i VB selv, men metodene du trenger finner du mest sannsynlig ved å google; "vb read input from user", "vb iterate through array", "vb declare array", "vb split string" og "vb validate user input".