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 :/

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12346

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 646 korisnika na forumu :: 9 registrovanih, 5 sakrivenih i 632 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: ALBION101, branko7, dragoljub11987, hooraay, kybonacci, Raptor1, raskoljnikov, Simon simonović, VJ