
C# - remove - celý řádek ze souboru / nebo z listu
Dobrý den.
Potřeboval bych poradit.
Mám třídu List -
class List
{
public List<string> listecek = new List<string>();
Random rand = new Random();
StreamWriter sw;
StreamReader sr;
public void Generuj ()
{
using (sw = new StreamWriter("@soubornahcisel.txt", true))
{
for (int i = 0; i < 10; i++)
{
string nahodnycislo = rand.Next(0, 100).ToString();
listecek.Add(nahodnycislo);
sw.WriteLine(nahodnycislo);
}
}
}
string line;
public List<string> SoubordoListu() // muzu se k tyhle metode chovat jako k LISTU
{
using (sr = new StreamReader("@soubornahcisel.txt"))
{
while ((line = sr.ReadLine()) != null)
{
listecek.Add(line);
}
}
return listecek;
}
public void Odtsran(string ID) // zavolám Console.Readline()
{
}
}
- ve které si vygeneruju 10 náhodných čísel. Současně uložim do listu i do souboru.
Když někdy jindy otevřu program - metodou SoubordoListu zajistim, že se mi všechno ze souboru uloží do listecku, abych s tim mohl zrovna pracovat.
A pak tam mám metodu Odstraň.
Pokud mám v listu pouze ta vygenerovaná čísla
59
60
13
1
31
funguje kód
listecek.Remove(ID)
Pokud však za čísla v souboru zadam nějaký text - např. to bude vypadat takto ->
59 sdsdf
60 dsffsd
13
příkaz Remove už nefunguje.
Co bych nejspíš potřeboval je, jak vymažu celý řádek. Buď z listu a nebo tedy se souboru(který bych si do toho listecku pak třeba zpět nkopiroval)
Budu vám vděčný za každou radu. Už si opravdu nevím rady.
Co presne znamena "nefunguje"? Pouzi debugger a pozri sa co mas pred a po v liste a premennych.
Co presne zadavas tomu Remove do parametra? (daj sem ten kod ktorym volas metodu odstran resp. remove)
... alebo pouzivat RemoveAt
https://msdn.microsoft.com/de-de/library/5cw9x18z% 28v=vs.110%29.aspx
a ne Remove co je principialne IMHO hovadina.
No vida ... :/
RemoveAt mě vůbec nenapdalo použít.
Pokud za ty čísla přidám nějaký string (nebo cokoliv) - už mi to funguje a odstraní to celý řádek na zadanym indexu. :)
(Nefungovalo -> program chybu nehlásil ... prostě šlapal, zadal jsem mu přes Console.Readline() to ID - program doběhl do konce ale když sme si list opět na konci vypsal, prvek tam stále byl.)
Tak logicky nemohl ze seznamu odstranit něco, co tam nebylo.
Myslel jsem, že funguje na principu jako Contains
Pokud se nepletu, ten by zareagoval.
Je mi jasný, že Remove byla špatná volba - když mi nefungoval - chtěl jsem pouze uvést o co jsem se snažil :D
Tak nefunguje. K veciam ktore pouzivas si treba citat referenciu, t.j. MSDN, kde to je presne napisane co ktora kniznicna funkcia robi a jak presne to robi a jake ma navratove hodnoty apod. Bez citania MSDN nieco programovat je sialenstvo.
Tak si do toho remove daval asi blby parameter. Nauc sa pouzivat debugger - nastav si niekde na nejakom riadku breakpoint (cez pravy klik) - a z menu debug - start, zastane to na breakpointe a vidis co sa deje v programe a v premennych, mozesi si potom step over alebo step into krokovat atd.
Program sam od seba chyby nevypisuje (az na nejake extremne chyby ktore su osetrene v runtime kniznici), navratove hodnoty funkcii si mas osetrovat sam a vypisovat si hlasky sam kedy potrebujes.
Díky všem ... teď už se s tím snad poperu! :)
Mimochodem, rozhodne bych rozdelil to generovani a ukladani do souboru. Protoze pokud s tim budes dal nejak pracovat, tak to nactes a pro dalsi ulozeni budes psat duplicitni kod. Nemluve o tom, co ti to udela, pokud budes mit dve instance te tridy a budes postupne generovat radky do jedne a druhe napreskacku ...