Forum » Programiranje » [VB 2005] branje teksta
[VB 2005] branje teksta
mNeRo ::
nasledni del programcka mi ne prebere celotnega besedila in ko zelim prebrano vpisat v textbox, mi to ne rata! zna kdo pomagat?
ce doda kdo se stevilke pred izpisom vrstice ( stevilko vrstice )...mu bom zelo hvalezen
oprostite se za butasta vprasanja, VB se ucim sele par dni...
edit: pri odpiranju novih tem v prihodnje upoštevaj PREBERI ME: označevanje topicov v oddelku programiranje! - snow
ce doda kdo se stevilke pred izpisom vrstice ( stevilko vrstice )...mu bom zelo hvalezen
Dim fileReader As System.IO.StreamReader fileReader = _ My.Computer.FileSystem.OpenTextFileReader("C:\test.txt") Do Dim stringReader As String stringReader = fileReader.ReadLine() MsgBox(stringReader) ListBox1.Items.Add(fileReader.ReadLine()) Loop Until fileReader.ReadLine() Is Nothing
oprostite se za butasta vprasanja, VB se ucim sele par dni...
edit: pri odpiranju novih tem v prihodnje upoštevaj PREBERI ME: označevanje topicov v oddelku programiranje! - snow
- spremenilo: snow ()
mHook ::
ListBox1 je verjetno ListBox in ne TextBox (ki bi verjetno bil TextBox1).
Kar je še treba pogledat pri TexBoxu, je lastnost MultiLine, ki mora biti true.
Za številko vrstice pa naredi približno takole:
Pred Do dodaj: Dim i as Int = 1
Pri ReadLine pa: i.ToString() + fileReader.ReadLine()
Kar je še treba pogledat pri TexBoxu, je lastnost MultiLine, ki mora biti true.
Za številko vrstice pa naredi približno takole:
Pred Do dodaj: Dim i as Int = 1
Pri ReadLine pa: i.ToString() + fileReader.ReadLine()
darkolord ::
pa tole
ListBox1.Items.Add(fileReader.ReadLine())
zamenjaj z
ListBox1.Items.Add(stringReader)
drugače ti doda samo vsako drugo vrstico
ListBox1.Items.Add(fileReader.ReadLine())
zamenjaj z
ListBox1.Items.Add(stringReader)
drugače ti doda samo vsako drugo vrstico
mNeRo ::
se vedno ne bere vseh vrstic ( jih preskakuje in nimam pojma zakaj...msgBox mi prikaze drugo in peto, v ListBox1 se mi dodajo prva in cetrta)... i se mi povecuje sele po dodanem ukazu 1+=1
Dim fileReader As System.IO.StreamReader
fileReader = _
My.Computer.FileSystem.OpenTextFileReader("C:\test.txt")
Dim i As Integer = 1
Dim stringReader As String
Do
stringReader = fileReader.ReadLine()
MsgBox(i.ToString() + fileReader.ReadLine())
ListBox1.Items.Add(i.ToString() + stringReader)
i += 1
Loop Until fileReader.ReadLine() Is Nothing
End Sub
Dim fileReader As System.IO.StreamReader
fileReader = _
My.Computer.FileSystem.OpenTextFileReader("C:\test.txt")
Dim i As Integer = 1
Dim stringReader As String
Do
stringReader = fileReader.ReadLine()
MsgBox(i.ToString() + fileReader.ReadLine())
ListBox1.Items.Add(i.ToString() + stringReader)
i += 1
Loop Until fileReader.ReadLine() Is Nothing
End Sub
mHook ::
Vsakič ko uporabiš ReadLine se prebere vrstica.
Če želiš, da ti bo delovalo, kot se spodobi, zamenjaj vse ReadLine() z stringReader (kot je že darkolord napisal), razen tam, kjer imaš
stringReader = fileReader.ReadLine()
Zaključek pa naredi z
Loop Until fileReader. EndOfStream
Če želiš, da ti bo delovalo, kot se spodobi, zamenjaj vse ReadLine() z stringReader (kot je že darkolord napisal), razen tam, kjer imaš
stringReader = fileReader.ReadLine()
Zaključek pa naredi z
Loop Until fileReader. EndOfStream
mNeRo ::
no seedaj imam program kjer mi prebere kar je vpisano v text file in mi to nalozi v listbox. kako sedaj to nadgraditi da mi prevere recimo samo doloceno vrstico, pa se to do dolocenega znaka?!?? ( do navednic recimo )
streamreader:
Dim fileReader As System.IO.StreamReader
fileReader = _My.Computer.FileSystem.OpenTextFileReader("C:\Info.txt")
Dim stringReader As String
Do
stringReader = fileReader.ReadLine()
ListBox1.Items.Add( stringReader)
End If
Loop Until fileReader.EndOfStream
streamreader:
Dim fileReader As System.IO.StreamReader
fileReader = _My.Computer.FileSystem.OpenTextFileReader("C:\Info.txt")
Dim stringReader As String
Do
stringReader = fileReader.ReadLine()
ListBox1.Items.Add( stringReader)
End If
Loop Until fileReader.EndOfStream
darkolord ::
Če fajl ni zelo velik, lahko prebereš vse, narediš split v array po vrsticah in potem prebereš določeno vrstico...
Dim vrstice() As String
vrstice() = vsebinaFajla.Split(vbCrLf)
' pokaze peto vrstico do (enojnih) navednic
MsgBox(vrstice(4).Substring(vrstice(4).IndexOf("'")))
Drugače pa pač daš en števec v loop za branje
Dim vrstice() As String
vrstice() = vsebinaFajla.Split(vbCrLf)
' pokaze peto vrstico do (enojnih) navednic
MsgBox(vrstice(4).Substring(vrstice(4).IndexOf("'")))
Drugače pa pač daš en števec v loop za branje
mNeRo ::
hvala darkolord! je pomagalo! no jst mam zdejle tale problem:
dim ukaz as integer
ukaz=1
dim ukazi() as string
Dim ukaziReader As System.IO.StreamReader
ukaziReader = _
My.Computer.FileSystem.OpenTextFileReader("C:\Ukazi.txt")
Dim stringUkaziReader As String
Do
stringUkaziReader = ukaziReader.ReadLine()
''''prebere kar je od vejice naprej, nato gre v drugo vrstico...kar mi prebere bi rad shranil....dal v pole...
ukazi(ukaz) = stringUkaziReader.Substring(InStrRev(stringUkaziReader, ",")) 'tu mi javi napako:
ukaz = ukaz + 1
Loop Until ukaziReader.EndOfStream
posamezne dele vrstic dam v polja... prva vrstica: ukazi(1)....druga: ukazi(2)...
tako da bi mi na zacetku program prebral textfile in kasneje bi samo klical: ukaz(5)...v dolocenih delih programa...nepa ponovno bral text file in gledal z zanko 5 vrstico...itd
napaka ki mi jo javlja: Object reference not set to an instance of an object.
dim ukaz as integer
ukaz=1
dim ukazi() as string
Dim ukaziReader As System.IO.StreamReader
ukaziReader = _
My.Computer.FileSystem.OpenTextFileReader("C:\Ukazi.txt")
Dim stringUkaziReader As String
Do
stringUkaziReader = ukaziReader.ReadLine()
''''prebere kar je od vejice naprej, nato gre v drugo vrstico...kar mi prebere bi rad shranil....dal v pole...
ukazi(ukaz) = stringUkaziReader.Substring(InStrRev(stringUkaziReader, ",")) 'tu mi javi napako:
ukaz = ukaz + 1
Loop Until ukaziReader.EndOfStream
posamezne dele vrstic dam v polja... prva vrstica: ukazi(1)....druga: ukazi(2)...
tako da bi mi na zacetku program prebral textfile in kasneje bi samo klical: ukaz(5)...v dolocenih delih programa...nepa ponovno bral text file in gledal z zanko 5 vrstico...itd
napaka ki mi jo javlja: Object reference not set to an instance of an object.
Zgodovina sprememb…
- spremenil: mNeRo ()
darkolord ::
ja, ukazi() je cel array, moraš mu povedat na kateri indeks boš shranil
ukazi(0) = "blabla" ' dela
ukazi() = "blabla" ' ne dela
ukazi(0) = "blabla" ' dela
ukazi() = "blabla" ' ne dela
delfy ::
zakaj se sploh mučiš tako??
StreamReader ima funkcijo ReadToEnd(), ki prebere fajl od začetka do konca. Torej preberi fajl v spremenljivko in uporabi funkcijo Split od String-a, pa boš imel vse v array-ju, s čimer pa lahko delaš, kar se ti zahoče.
V C# bi to zgledal nekako tako:
string Source = null;
using( System.IO.StreamReader sr = new System.IO.StreamReader( "pot do datoteke" ) )
{
Source = sr.ReadToEnd();
}
string[] Vrstice = Source.Split( '\n' );
potem pa lahko narediš:
Console.WriteLine( Vrstice[3] );
In tako dobiš potem ven tisto, kar želiš.
Teb pa javlja napako zato, ker ne podaš index-a, ko filaš v polje. Zmeraj, ko pokličeš
ukazi(index) = stringUkaziReader.Substring(InStrRev(stringUkaziReader, ","))
mu moreš podat še index. V VB.NET-u se začnejo indexi pri 1. Torej 1,2,3,4,5..... Če pa mu ti ne podaš index-a, pa on tud ne more vedet, na katero lokacijo v array naj on to da in zato zajamra.
StreamReader ima funkcijo ReadToEnd(), ki prebere fajl od začetka do konca. Torej preberi fajl v spremenljivko in uporabi funkcijo Split od String-a, pa boš imel vse v array-ju, s čimer pa lahko delaš, kar se ti zahoče.
V C# bi to zgledal nekako tako:
string Source = null;
using( System.IO.StreamReader sr = new System.IO.StreamReader( "pot do datoteke" ) )
{
Source = sr.ReadToEnd();
}
string[] Vrstice = Source.Split( '\n' );
potem pa lahko narediš:
Console.WriteLine( Vrstice[3] );
In tako dobiš potem ven tisto, kar želiš.
Teb pa javlja napako zato, ker ne podaš index-a, ko filaš v polje. Zmeraj, ko pokličeš
ukazi(index) = stringUkaziReader.Substring(InStrRev(stringUkaziReader, ","))
mu moreš podat še index. V VB.NET-u se začnejo indexi pri 1. Torej 1,2,3,4,5..... Če pa mu ti ne podaš index-a, pa on tud ne more vedet, na katero lokacijo v array naj on to da in zato zajamra.
mNeRo ::
delam tako, ker imam na zacetku vsake vrstice najprej komentar, ki ga ne potrebujem ampak ga imam da vem kaj imam v tisti vrstici. kar potrebujem je tisto za komentarjem...komentar se konca z vejico
dodal sem index ampak sevedno ista napaka
dim index as integer
index=1
dim ukazi() as string
Dim ukaziReader As System.IO.StreamReader
ukaziReader = _
My.Computer.FileSystem.OpenTextFileReader("C:\Ukazi.txt")
Dim stringUkaziReader As String
Do
stringUkaziReader = ukaziReader.ReadLine()
''''prebere kar je od vejice naprej, nato gre v drugo vrstico...kar mi prebere bi rad shranil....dal v pole...
ukazi(index) = stringUkaziReader.Substring(InStrRev(stringUkaziReader, ",")) '''' 'tu mi javi napako:
index = index + 1
Loop Until ukaziReader.EndOfStream
napaka ki mi jo javlja: Object reference not set to an instance of an object.
dodal sem index ampak sevedno ista napaka
dim index as integer
index=1
dim ukazi() as string
Dim ukaziReader As System.IO.StreamReader
ukaziReader = _
My.Computer.FileSystem.OpenTextFileReader("C:\Ukazi.txt")
Dim stringUkaziReader As String
Do
stringUkaziReader = ukaziReader.ReadLine()
''''prebere kar je od vejice naprej, nato gre v drugo vrstico...kar mi prebere bi rad shranil....dal v pole...
ukazi(index) = stringUkaziReader.Substring(InStrRev(stringUkaziReader, ",")) '''' 'tu mi javi napako:
index = index + 1
Loop Until ukaziReader.EndOfStream
napaka ki mi jo javlja: Object reference not set to an instance of an object.
Zgodovina sprememb…
- spremenil: mNeRo ()
mNeRo ::
ukazi(index) = stringUkaziReader.Substring(InStrRev(stringUkaziReader, ","))
joj...ne najdem...
index se mi lepo postavi na 0, InStrRev(stringUkaziReader, ",")...mi da stevilko kjer naj zacne subsring od tringUkaziReader
drugo pa zgleda OK. booo...
joj...ne najdem...
index se mi lepo postavi na 0, InStrRev(stringUkaziReader, ",")...mi da stevilko kjer naj zacne subsring od tringUkaziReader
drugo pa zgleda OK. booo...
darkolord ::
In kjer imaš inicializiran array?
Zakaj ne narediš raje tako kot sem ti napisal, da cel fajl prebereš?
Zakaj ne narediš raje tako kot sem ti napisal, da cel fajl prebereš?
delfy ::
če uporabljaš vs2005, piše, kje je problem. In sicer to, da ukazi array ni "instanciran". Ti si samo ustvaru prostor (spremenljivko), kamor naj bi se shranil array, ampak array-a pa nisi naredil. Torej je ukazi spremenljivka null oz. Nothing v VB.NET-u.
Rešitev:
Dim index As Integer = 0
Dim ukazi() As String
Dim ukaziReader As System.IO.StreamReader = My.Computer.FileSystem.OpenTextFileReader("F:\1.txt")
Dim stringUkaziReader As String
While Not ukaziReader.EndOfStream
ReDim Preserve ukazi(index)
stringUkaziReader = ukaziReader.ReadLine()
''''prebere kar je od vejice naprej, nato gre v drugo vrstico...kar mi prebere bi rad shranil....dal v pole...
ukazi(index) = stringUkaziReader.Substring(InStrRev(stringUkaziReader, ",")) '''' 'tu mi javi napako:
index += 1
End While
MessageBox.Show(ukazi.Length.ToString())
ReDim pomeni, da ustvari novo polje velikosti index. Preserver pa pomeni, da naj vrednosti iz prejšnjega polja ohrani v novem. To je to.
Rešitev:
Dim index As Integer = 0
Dim ukazi() As String
Dim ukaziReader As System.IO.StreamReader = My.Computer.FileSystem.OpenTextFileReader("F:\1.txt")
Dim stringUkaziReader As String
While Not ukaziReader.EndOfStream
ReDim Preserve ukazi(index)
stringUkaziReader = ukaziReader.ReadLine()
''''prebere kar je od vejice naprej, nato gre v drugo vrstico...kar mi prebere bi rad shranil....dal v pole...
ukazi(index) = stringUkaziReader.Substring(InStrRev(stringUkaziReader, ",")) '''' 'tu mi javi napako:
index += 1
End While
MessageBox.Show(ukazi.Length.ToString())
ReDim pomeni, da ustvari novo polje velikosti index. Preserver pa pomeni, da naj vrednosti iz prejšnjega polja ohrani v novem. To je to.
mNeRo ::
koncno dela!
se eno vpr...ob prvem zagonu programa mi zanka try catch ulovi napako pri ukazi(0)... ceprow sm nastavu index na 0! cudno to! morem se malo pogledat...
se eno vpr...ob prvem zagonu programa mi zanka try catch ulovi napako pri ukazi(0)... ceprow sm nastavu index na 0! cudno to! morem se malo pogledat...
mNeRo ::
ma nisem to ze naredil? kje prej? kako?
ta stvar res vcasih ne dela...
index=0
Dim ukaziReader As System.IO.StreamReader
ukaziReader = _
My.Computer.FileSystem.OpenTextFileReader("C:\Ukazi.txt")
Dim stringUkaziReader As String
Do
ReDim Preserve ukazi(index)
stringUkaziReader = ukaziReader.ReadLine()
ukazi(index) = stringUkaziReader.Substring(InStrRev(stringUkaziReader, ":"))
index = index + 1
Loop Until ukaziReader.EndOfStream
ta stvar res vcasih ne dela...
index=0
Dim ukaziReader As System.IO.StreamReader
ukaziReader = _
My.Computer.FileSystem.OpenTextFileReader("C:\Ukazi.txt")
Dim stringUkaziReader As String
Do
ReDim Preserve ukazi(index)
stringUkaziReader = ukaziReader.ReadLine()
ukazi(index) = stringUkaziReader.Substring(InStrRev(stringUkaziReader, ":"))
index = index + 1
Loop Until ukaziReader.EndOfStream
darkolord ::
Aha... no ko se ti ustavi oziroma dobiš napako, poglej vse parametre (samo miško daš čez), pa boš videl, kateri ne štima
delfy ::
V VB.NET-u se začnejo indexi pri 1. Torej 1,2,3,4,5.....
Torej je logično, da se zbuni pri 0.
delfy ::
Pri VB6 se je index začel pri 1, za .NET pa ne vem.
Povej, kakšno napako vrže. In pa predvsem pokaži prvo vrstico v TXT datoteki, da vidimo kakšne podatke ji daš.
Js sem sprobal z:
asdsadasdihsaduisahiuh, asiodhasodjasoidjasoidosijoasjdo
sadasdsaodhasoi, sadiosajdosiadjoisad
sadosaodasodiasdasd, siajdoasidjoiasjdoasdjoasijdoa
Pa je šlo uspešno skozi, tak da je skor ziher nekaj narobe s podatki.
Povej, kakšno napako vrže. In pa predvsem pokaži prvo vrstico v TXT datoteki, da vidimo kakšne podatke ji daš.
Js sem sprobal z:
asdsadasdihsaduisahiuh, asiodhasodjasoidjasoidosijoasjdo
sadasdsaodhasoi, sadiosajdosiadjoisad
sadosaodasodiasdasd, siajdoasidjoiasjdoasdjoasijdoa
Pa je šlo uspešno skozi, tak da je skor ziher nekaj narobe s podatki.
mNeRo ::
no sem resil problem. ze prej omenjena koda dela dobro... moj preblem je biw, da se kdaj ni zgodila in zato se mi je pojavljala Null napaka. zgodila se pa ni ker sm nalaganje (Form_Load) prekinil z enim drugim dejanjem in tako se tista koda vcasih ni zgodila. Moje zacetnisko znanje mi je nazalost govorilo da se Form-Load zgodi vedno v celoti.
no tudi s tega sm se nekaj naucil in bo mogoce komu prislo prau, kar sem napisal. hvala za pomoc vsem
LP
no tudi s tega sm se nekaj naucil in bo mogoce komu prislo prau, kar sem napisal. hvala za pomoc vsem
LP
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | C# pomoč pri razmišljanjuOddelek: Programiranje | 2302 (1446) | urozz |
» | [Java]: replace - slovar v txtOddelek: Programiranje | 1693 (1551) | Spura |
» | C# ProgramOddelek: Programiranje | 3098 (2021) | Spura |
» | VC# čitanje iz datoteke in shranjevanje v poljeOddelek: Programiranje | 1173 (986) | iceurb |
» | [VB] OpenOddelek: Programiranje | 1532 (1371) | Monster |