Jag försöker att läsa in en fil via binary till en richtextbox. Hej, Hej Johan. Typså här: Jag skrev alltså såsom du visade: Du missade 2 saker. För det första måste du ha en stream som din BinaryReader ska använda. Sedan måste du ange längden på ditt dokment. Något i den här stilen: Hej Jikko. myStream skulle du deklarerat (Stream myStream;) "ovanför" och fyllt den med data. Tack, så långt lyckades det.Binary read
<code>
FileStream fs = new FileStream(filnamn, FileMode.Open,FileAccess.Read);
BinaryReader r = new BinaryReader(fs);
while ((r)!=null)
{
rText.Text = r.ReadString();
}
fs.Close();
</code>
Jag får fölljande error:
Det går inte att läsa till slutet av stömmen.
Skulle vara tacksam för hjälp.Sv: Binary read
Du kan använda dig av .ReadBytes istället, detta gör att du får alla din text direkt till en Array av bytes, dessan ovandlar du till en sträng via Encoding.ASCI.ToString...
du kan även nyttja Read().
Mvh JohanSv: Binary read
Har du möjlighet att visa ett exempel?
Jag har letat överalt, men bara misslyckats....Sv: Binary read
<code>
BinaryReader binReader = new BinaryReader(...BaseStream...);
byte[] arrayOfStream = binReader.ReadBytes( <Längden på din Inlästa ström> );
string text = Encoding.ASCI.ToString(arrayOfStream);
</code>
Mvh JohanSv: Binary read
<code>
BinaryReader binReader = new BinaryReader();
byte[] arrayOfStream = binReader.ReadBytes();
string text = Encoding.ASCI.ToString(arrayOfStream);
rText.Text = text;
</code>
Error:
<code>
E:\C#-koder\MiniOrd\MiniOrd\Form1.cs(578): No overload for method 'BinaryReader' takes '0' arguments
//********************
E:\C#-koder\MiniOrd\MiniOrd\Form1.cs(579): No overload for method 'ReadBytes' takes '0' arguments
//*******************
E:\C#-koder\MiniOrd\MiniOrd\Form1.cs(581): 'System.Text.Encoding' does not contain a definition for 'ASCI'
</code>
Jag är alltså väldigt grön, när det gäller C#. Jag kanske borde förstå error, men gör inte det.Sv: Binary read
<code>
BinaryReader binReader = new BinaryReader(myStream);
byte[] arrayOfStream = binReader.ReadBytes(myStream.Length);
string text = Encoding.ASCII.ToString(arrayOfStream);
rText.Text = text;
</code>
Sista felet berode på ett enkelt stavfel, det ska vara ASCII med 2 st I.Sv: Binary read
Jag missar säkert flera saker.
myStream var kommer den ifrån? Skall den vara lika med filnamn(min variabel)?
I vilket fall som helst så får jag en massa error.
Jag öppnar alltså upp så här:
<code>
filnamn=openFileDialog1.FileName;
</code>
Om jag gör som jag misstänker att du vill
<code>
System.IO.StreamReader myStream = new System.IO.StreamReader(openFileDialog1.FileName);
BinaryReader binReader = new BinaryReader(myStream);
byte[] arrayOfStream = binReader.ReadBytes(myStream.Length);
string text = Encoding.ASCII.ToString(arrayOfStream);
rText.Text = text;
</code>
Då blir error:
<code>
E:\C#-koder\MiniOrd\MiniOrd\Form1.cs(582): The best overloaded method match for 'System.IO.BinaryReader.BinaryReader(System.IO.Stream)' has some invalid arguments
************
E:\C#-koder\MiniOrd\MiniOrd\Form1.cs(582): Argument '1': cannot convert from 'System.IO.StreamReader' to 'System.IO.Stream'
**************
E:\C#-koder\MiniOrd\MiniOrd\Form1.cs(583): 'System.IO.StreamReader' does not contain a definition for 'Length'
**************
E:\C#-koder\MiniOrd\MiniOrd\Form1.cs(584): No overload for method 'ToString' takes '1' arguments
**************
</code>
Det känns som om jag är helt ute och reser...Sv: Binary read
Du kan även testa den här koden, den borde funka:
<code>
Stream myStream;
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.InitialDirectory = openFileDialog.InitialDirectory = Directory.GetCurrentDirectory();
openFileDialog.FilterIndex = 1;
openFileDialog.RestoreDirectory = true;
if(openFileDialog.ShowDialog() == DialogResult.OK)
{
if((myStream = openFileDialog.OpenFile())!= null)
{
Byte[] myBytes = new Byte[myStream.Length];
int i = myStream.Read(myBytes,0,myBytes.Length);
rText.Text = System.Text.Encoding.UTF8.GetString(myBytes);
myStream.Close();
}
}
</code>Sv: Binary read
Nu kan jag ladda in en hel del filer, dock inte STY som bara visas med ett "1" tecken.
Jag vill minnas att man var tvungen att göra en replace.
I VB ser det ut så här:
<code>
strText = Replace(strRow, vbNullChar, "")
</code>
Men här får jag inte till det.
Vad tror du?