Poslao: 02 Dec 2011 16:20
|
offline
- Cushpajz
- Novi MyCity građanin
- 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
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 02 Dec 2011 20:24
|
offline
- Peki_92
- Elitni građanin
- 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??
|
|
|
|
|
Poslao: 03 Dec 2011 15:41
|
offline
- Srki94
- Mod u pemziji
- Pridružio: 14 Feb 2008
- Poruke: 12403
|
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.
|
|
|
|
Poslao: 03 Dec 2011 16:44
|
offline
- Peki_92
- Elitni građanin
- 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...
|
|
|
|
Poslao: 03 Dec 2011 18:35
|
offline
- Cushpajz
- Novi MyCity građanin
- 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...
|
|
|
|
Poslao: 03 Dec 2011 18:40
|
offline
- DachoSRB
- Novi MyCity građanin
- 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]
|
|
|
|
|
Poslao: 23 Jan 2012 00:47
|
offline
- Netsoft
- Novi MyCity građanin
- Pridružio: 23 Jan 2012
- Poruke: 1
|
Da se i ja upisem u forum
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
|
|
|
|
|