Hei
Ohjelma kerää numerosarjat numerot() as string muuttujaan ja ongelmani on miten saan tietueesta poistettua tyhjät ja samat numerosarja
Dim apu As String = "" For i = 0 To k - 1 ' + 1 For j = i + 1 To k - 1 ' + 1 If numerot(j) = "" Then GoTo xxc If numerot(j) <> numerot(i) Then apu = numerot(i) numerot(i) = numerot(j) numerot(j) = apu End If xxc: Next j Next i
yllä olevaa olen säätänyt jo ihan tarpeeksi, joten ehtisikö joku auttamaan mikä on väärin
Numerot = Numerot.Where(Function(a) a <> "").Distinct().ToArray()
Jos lähdetään tuolle alkuperäiselle tee-se-itse-linjalle, yksinkertainen ratkaisu olisi ensin järjestää taulukko (tuo alkuperäinenhän on melkein kelpo lajittelu, otetaan vain ensimmäinen If pois ja laitetaan toiseen pelkkä < vertailuksi) ja sitten soveltaa jotain tällaista:
ylin = -1 For i = 0 To k - 1 If numerot(i) = "" Or (ylin <> -1 And numerot(i) = numerot(ylin)) Then Continue ylin = ylin + 1 numerot(ylin) = numerot(i) Next i ReDim Preserve numerot(ylin)
SUURI KIITOS GREZ
Lausettasi en saanut toimimaan, mutta muutin sen muotoon
Numerot = Numerot.Distinct().ToArray()
tietueeseen jää vain yksi tyhjä muuttuja, jonka saan suljettua pois myöhemmin if lausekkeella.
Aivan käsittämätöntä, että tuon kaiken jonka kanssa olen taistellut useita tunteja voi hoitaa yhdellä rivillä !!
Mistä vastaavia toimintoja voi etsiä, ettei jatkossa tule tehtyä turhaa työtä?
Suuri kiitos vielä Grez, pelastit päivän!
jokke568 kirjoitti:
Lausettasi en saanut toimimaan
Hämmentävää, ainoa syy mikä tulee mieleen olisi jos a on jo käytössä, jossa tapauksessa tietysti eri nimisen parametrin käyttö ratkaisisi ongelman.
Itse tosiaan tein kokonaan uuden projektin testaamista varten ja koodi kokonaisuudessaan on
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim Numerot() As String = {"Moi", "Moi", "joo", ""} Numerot = Numerot.Where(Function(a) a <> "").Distinct().ToArray() End Sub End Class
Ja tuo toimi (numerot-taulukossa oli lopussa "Moi" ja "joo")
MSDN:stähän nuo dokumentaatiot löytyy. Eli esimerkiksi Enumerable luokalle ja sitä kautta myös Arraylle löytyy mm. nämä
Hei Grez
Nyt toimii ensiksi antamasi lauseke. Ottaa tyhjänkin pois tietueesta, joten en tarvitse erillistä If lauseketta sen poistamiseksi. Mulla oli sotkuja seassa, jotka tuli siivottua lauseketta sovellettaessa. Ja lopulta alkuperäinenkin toimi, ja vieläpä täydellisesti. Olisi pitänyt paljon aikaisemmin putkaan kysymään apuja.
Lauseke kokonaisuudessa on minulle uutta. Erittäin kivaa oppia uutta, jota sitten pääsee soveltamaan ja laajentamaan ko. luokan käyttöä.
Kiitos, Kiitos myös Metabolix vaihtoehdosta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.