Brisanje samo jedne linije iz txt fajla

1

Brisanje samo jedne linije iz txt fajla

offline
  • Ognjen
  • Pridružio: 16 Nov 2011
  • Poruke: 20
  • Gde živiš: Novi Sad

Pozdrav, imam problem, evo o cemu se radi. Imam jedan listbox i u njemu imam nesto ispisano, sve to sto imam u listboxu ja imam i u txt fajlu, mene zanima kako mogu da obrisem ono sto sam obelezio u listboxu, da mi se obrise i iz txt fajla, ali samo ta linija, pokusavao sam nesto ovako
 int brojlinije = Convert.ToInt32(listBox1.SelectedIndex), prom = 0;             string izbrisi = null;             StreamReader reader = new StreamReader("korisnici.txt");             while ((izbrisi = reader.ReadLine()) != null)             {                 prom++;                   if (prom == brojlinije)                     continue;             }             reader.Close();             StreamWriter sw = new StreamWriter("korisnici.txt");             sw.WriteLine(izbrisi);             sw.Close();
ali obrise mi sve zato sto je na kraju streamwriter, problem je sto izgleda ne mogu u isto vreme i streamwriter i streamreader na isto mesto, ako neko moze da mi pomogne bio bih jako zahvalan Smile



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 26 Okt 2008
  • Poruke: 1560
  • Gde živiš: Sremski Mihaljevci

ne razumem ovaj kod jer radim u vb. ja bi to mozda uradio tako da ti txt fajl ucita u listbox, i onda jedan mali i izmenjeni deo koda iz change background programa koji sam pravio

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click         ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)         Dim savef As New System.IO.StreamWriter(Application.StartupPath & "\Images.txt")         For I As Integer = 0 To ListBox1.Items.Count - 1             savef.Write(ListBox1.Items(I).ToString & ControlChars.NewLine)         Next         savef.Close()     End Sub

znaci prvi deo koda ti brise red koji selektujes a drugi deo te sve redove u listboxu cuva u txt fajl bez obzira sta ti je ranije pisalo. ok??



offline
  • Ognjen
  • Pridružio: 16 Nov 2011
  • Poruke: 20
  • Gde živiš: Novi Sad

Pokusavao sam i ja tako, ali ne uspevam :/

online
  • Pridružio: 14 Feb 2008
  • Poruke: 12391

Ovo što je Peki dao radi u teoriji.
Šta Pekijev kod radi?
- Briše unos iz liste
- Sačuva listu
- tako što provuče sve unose kroz petlju i u isto vreme dodaje posle svakog unosa
- Petlja radi tako što ponavlja isti kod sve dok indeks liste ne bude -1 , zašto -1? Zato što je prvi indeks u listi uvek 0.

Možeš da koristiš StreamWriter i StreamReader u isto vreme ali moraš da ih deklarišeš posebno.


Nađoh online servis koji verovanto ne konvertuje dobro ali poslužiće da te uputi u ovo

private void  // ERROR: Handles clauses are not supported in C# Button1_Click(System.Object sender, System.EventArgs e) {    ListBox1.Items.RemoveAt(ListBox1.SelectedIndex);    System.IO.StreamWriter savef = new System.IO.StreamWriter(Application.StartupPath + "\\Images.txt");    for (int I = 0; I <= ListBox1.Items.Count - 1; I++) {       savef.Write(ListBox1.Items(I).ToString + ControlChars.NewLine);    }    savef.Close(); } //======================================================= //Service provided by Telerik (www.telerik.com) //Conversion powered by NRefactory. //Twitter: @telerik, @toddanglin //Facebook: facebook.com/telerik //=======================================================

http://converter.telerik.com/

@ Peki
Nisam ni rekao da briše sve i ponavlja, rekao sam da ide od poslednjeg indeksa do -1 tj, do indeksa 0 što je stavka 1 u listi.

Kod koji čuva nema veze sa brisanjem iz tvog primera, on samo briše jednu stavku iz liste posle čega sledi pisanje cele liste.


Kod koji radi isto u vb.net-u je :

 Dim pisi_ime_liste As New IO.StreamWriter(Application.StartupPath & "\Plejliste\Lista.lst")             Dim i2 As Integer             For i2 = 0 To ListBox1.Items.Count - 1                 pisi_ime_liste.WriteLine(ListBox1.Items.Item(i2))             Next             pisi_ime_liste.Close()

Ja koristim ovaj deo za Shampoo Club

LM Možeš i da učitaš tekst u niz i posle obrišeš posebnu stavku niza u zavisnosti od indeksa liste.

offline
  • Pridružio: 26 Okt 2008
  • Poruke: 1560
  • Gde živiš: Sremski Mihaljevci

ne ponavlja se dok ne pobrise sve odnosno dok ne stigne do -1 vec samo jedan index brise i tako cuva...

offline
  • Ognjen
  • Pridružio: 16 Nov 2011
  • Poruke: 20
  • Gde živiš: Novi Sad

@Srki94 nece da radi daje mi error ovde:

(ListBox1.Items(I).ToString + ControlChars.NewLine);

kod .items, a i verovatno trebam nesto da includujem za controlchars...

offline
  • Pridružio: 16 Nov 2011
  • Poruke: 8
  • Gde živiš: Novi Sad

Cushpajz ::@Srki94 nece da radi daje mi error ovde:

(ListBox1.Items(I).ToString + ControlChars.NewLine);

kod .items, a i verovatno trebam nesto da includujem za controlchars...


Stavi umesto obicnih zagrada kod ovoga ListBox1.Items(I).ToString, probaj ListBox1.Items[I]

offline
  • Ognjen
  • Pridružio: 16 Nov 2011
  • Poruke: 20
  • Gde živiš: Novi Sad

probao sam i tako i nece..

offline
  • Pridružio: 23 Jan 2012
  • Poruke: 1

Da se i ja upisem u forum Smile


Princip:
1. Loadujemo listu u Form_Load eventu
2. Obrisemo neki item iz liste
3. Sacuvamo listu u isti fajl
4. loadujemo fajl nazad (nije neophodno ali je pozeljno)

Koristicemo 2 funkcije odnosno sub-a, LoadData i SaveData.

U namespace (vrh modula):
Imports System.IO
LoadData(ByVal Path as String) gde je Path putanja do tekstualnog fajla kojeg cemo citati:
Public Sub LoadData(ByVal Path as String) If File.Exists(path) Then 'proveravamo da li fajl postoji.     Listbox1.Items.Clear() 'obrisacemo listu svaki put kada budemo pravili izmene.     Dim r As New StreamReader(path) 'definisemo streamreader za citanje naseg fajla     Do While Not r.EndOfStream 'ponavljamo loop sve dok ne dodjemo do kraja fajla.         Listbox1.Items.Add(r.ReadLine) 'dodajemo svaku liniju fajla u listu.     Loop 'govorimo aplikaciji da se vrati na Do While sve dok ne zavrsi citanje,             'a zatim nastavi na sledecu liniju koda:     r.Close() ' zatvaramo fajl koji citamo (obavezno na kraju citanja/pisanja) Else     'fajl ne postoji, izbaci gresku:     MsgBox("Fajl " & Path & " ne postoji.", MsgBoxStyle.Critical, "Greska") End If End Sub
SaveData(ByVal Path as String) gde je Path takodje putanja do tekstualnog fajla u koji cemo pisati:
Public Sub SaveData(ByVal Path as String)     Dim w As New StreamWriter(path) 'definisemo streamwriter za pisanje u fajl     For i = 0 to Listbox1.Items.Count -1 'ponavljamo loop sve dok ne dodjemo do kraja liste.         Listbox1.Items.Add(r.ReadLine) 'dodajemo svaki item iz liste u nas fajl.     Next 'govorimo aplikaciji da se vrati na For sve dok ne zavrsi dodavanje u fajl,             'a zatim nastavi na sledecu liniju koda:     w.Close() ' zatvaramo fajl u koji pisemo (obavezno na kraju citanja/pisanja) End Sub
Koriscenje:
Form_Load event:
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load LoadData(Application.StartupPath & "\lista.txt") 'ovde prepravi putanju do tvog fajla. End Sub
Button1_Click event:
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click ListBox1.Items.RemoveAt(ListBox1.SelectedIndex) SaveData(Application.StartupPath & "\lista.txt") 'ovde prepravi putanju do tvog fajla. LoadData(Application.StartupPath & "\lista.txt") 'ovde prepravi putanju do tvog fajla. End Sub

offline
  • Pridružio: 26 Okt 2008
  • Poruke: 1560
  • Gde živiš: Sremski Mihaljevci

odlicno. najbolje ovako Smile

Ko je trenutno na forumu
 

Ukupno su 877 korisnika na forumu :: 46 registrovanih, 5 sakrivenih i 826 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _Rade, aleksmajstor, Apok, bestguarder, bojcistv, bokisha253, Brana01, Bubimir, darios, Denaya, Dimitrije Paunovic, DonRumataEstorski, draggan, FOX, Frunze, havoc995, ivica976, Karla, Kibice, kjkszpj, Kubovac, kybonacci, laurusri, Lord Nem, Magistar78, mercedesamg, Mercury, Mi lao shu, mikrimaus, milenko crazy north, mnn2, Nemanja.M, oldtimer, opt1, procesor, robertino, Smiljke, Sokic, Srki94, Srle993, suton, uruk, vathra, Vlad000, vladaa012, voja64