Jag har vill läsa in rad för rad ifrån en fil. Till och börja med ska den leta reda på raden som det står [Prod] på. Jag har använt tidigare: Här är ett exempel på hur du ska göra... Hej jag upplevde samma buggiga nyinläsning vid stegandet för varje rad!???? Hm.. ett liten fundering bara. Den klarar inte att läsa in åäö. går detta att fixa också? Jodå, du måste bara ställa in vilken Encoding den ska använda... Kalas! Tack! > Är inte säker på om UTF-8 stödjer svenska tecken Ville minnas det, har dock haft lite lustiga erfarenheter med UTF-8 kodningen då et inte fungerat med svenska tecken... Jo, om texten inte är skriven i utf-8 så är det ju en annan sak. Men om man skriver någon ny text någon gång så är det bättre att hålla sig till utf-8 (då den börjar bli lite standard överallt, dessutom är den smidig och bakåtkompatibel mot i alla fall ascii (ansi?)) eftersom att utf-8 är ju just en unicode-variant, dumt att behöva begränsa sin programvara till antingen alfabet x eller alfabet y när man kan ha både och i sin applikationFilhantering
FileOpen(3, "..\DATA\textfil.dat", OpenMode.Input, OpenAccess.Read, OpenShare.Default, -1)
Do Until EOF(3)
If FileSystem.LineInput(3) = "[Prod]" Then
Material = True
End If
Loop
Mitt problem är att den inte hittar raden. när jag stegar med igenom koden och följer värdet på lineinput så läser den in en ny rad för VARJE steg!
Jag har testat att använda filestream men när jag försöker dimma variabeln vill systemet inte känna vid filestream trots att jag har lagt till references scripting runtime.
Vad är det för fel?!
//Mia
Sv: Filhantering
Är dock inte säker på om det fungerar med en sökväg som inte är hel, men du får prova dig fram...
<code>
Dim FS As New IO.FileStream("..\DATA\textfil.dat", IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.ReadWrite)
Dim SR As New IO.StreamReader(FS)
Do Until FS.Position = FS.Length
Dim Line As String = SR.ReadLine
If Line = "[Prod]" Then
Material = True
'Exit Do <-- Om du inte behöver läsa längre
End If
Loop
SR.Close()
FS.Close()
</code>
[EDIT]
Du kan också läsa in hela filen direkt och sedan leta reda på informationen du behöver med olika metoder, eller så kör du bara en Select Case för varje inläst rad och agerar därefter...Sv: Filhantering
fileopen verkar vara lite kinkigt och läser gärna in nya rader utan att man bett om det!!!!
hursom helst funkar koden bra men som den är skriven nu så kommer material
alltid returnera sista radens resultat. Vad ska hända vid en träff? ska du fortsätta
läsa vidare efter nya träffar sen?Sv: Filhantering
//MiaSv:Filhantering
Är inte säker på om UTF-8 stödjer svenska tecken, men default tar akuella inställningar i ditt OS och det brukar fungera fint...
Annars kan du själv ange en iso standard du vill använda...
<code>
Dim FS As New IO.FileStream("..\DATA\textfil.dat", IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.ReadWrite)
Dim SR As New IO.StreamReader(FS, System.Text.Encoding.Default)
Do Until FS.Position = FS.Length
Dim Line As String = SR.ReadLine
If Line = "[Prod]" Then
Material = True
'Exit Do <-- Om du inte behöver läsa längre
End If
Loop
SR.Close()
FS.Close()
</code>Sv: Filhantering
Vd skulle man göra om man inte hade pellesoft med alla hjälpsamma människor! ;-)
//Mia Sv: Filhantering
UTF-8 stödjer alla tecken ;) Unicode :)Sv:Filhantering
Men det beror ju också på med vilken Encoding texten är skapad...Sv: Filhantering