Vymazání položky z Array vlastní struktury   zodpovězená otázka

VB.NET

Zdravím,

ve VB2008 teprve začínám neb jsem se rozhodl přejít z VB6 a mám takový dotaz. Mam vytvořeno poleno vlastní struktury

structure tPoradi
  dim id as integer
  dim soubor as string
end structure

dim poradi(5) as tPoradi

a potřeboval bych z tohoto pole určitý řádek na určité pozici (indexu) vymazat tak aby se pole posunulo celé nahoru od místa vymazání a posléze zase na nějakou jinou danou pozici vložit nový záznam tak aby v místě vložení se zbytek pole posunul o dolu.

Snad jsem to napsal srozumitelně o co mi jde...

Předem moc díky Martin

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Na tohle se nepoužívá pole, ale třída List. Je velmi jednoduchá na použití.

Dim seznam As New List(Of tPoradi)

'přidání položky do seznamu
Dim polozka As tPoradi
polozka.id = 15
polozka.soubor = "hello.txt"
seznam.Add(polozka)  

'odebrání položky ze seznamu (ty za ní se posunou nahoru)
seznam.RemoveAt(3)

'procházení seznamu
For i As Integer = 0 To seznam.Count - 1
    seznam(i).id = seznam(i)id * 2
Next

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ještě se zeptám to přidání do seznamu se přidá na konec toho listu nebo se dá nějak určit aby to vložil třeba mezi 2 a 3 záznam z celkových třeba 10

Dík Martin

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Add vkládá na konec, metoda Insert vkládá dovnitř na místo, které si zvolíte, ostatní položky odsune. Čísluje se od nuly.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Na Insert už jsem přišel akorát mě teď zaráží že jednou se mi položka vloží za a jednou před mojí požadovanou pozici? Jak by měla být správně definice?

 poradi.insert (Index_kam_chci_vlozit, Nova_polozka)

Kterým směrem s posouvají položky při insertu?

Předem dík

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak už jsem na to přišel když jsem si vymazal index nad pozici kam chci vkládat tak se mi ty indexy přečíslujou a v tom byl problém. Takže tímto je mi tento problém jasný.

Ještě jednou díky za radu

Martin

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud máte v Listu třeba hodnoty "jabko", "hruška", "švestka" a dáte Insert na pozici 1 (tzn. 2 položka, čísluje se od nuly), přičemž vkládáte třeba hodnotu "pomeranč", pořadí bude "jablko", "pomeranč", "hruška", "švestka". Prostě se položka vrazí na daný index a to, co tam bylo původně plus to, co bylo za tím, se o jedno místo šoupne.

Pokud chcete nahradit položku na určité pozici, je to stejné jako u pole, prostě seznam(1) = jinaPolozka.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To je přesně to, co za vás udělá třída List, nemusíte při vkládání pole realokovat a posunovat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ještě se zeptám když pak budu chtít tento seznam

Dim seznam As New List(Of tPoradi)

uložit do binárního souboru abych mohl po např. spuštění programu načíst celou strukturu jak sem jí uložil jak na to ?

U pole jsem napsal fileput (1, seznam) a bylo a pak jsem to tak u nacetl ale u listu mi to nejde ani kdyz dam fileputobject?

Predem diky moc

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No, seznam jen tak binárně neuložíte, jedině byste použil binární serializaci. Doporučuji pro jednoduchost do souboru zapsat počet položek a pak jednotlivé položky, to by mělo být nejjednodušší řešení.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback