Får felmedelande "The name 'loByteBuffer' does not exist in the class or namespace 'Bostad.WebData'". prova att deklarera byte[] loByteBuffer innan try.. Ok, provade med att lägga in följande innan try-satsen: Sorry.. >byte[] loByteBuffer = new byte[0];Strulande felhantering (Compiler Error CS0103)
Felet markeras på raden "string result = Encoding.ASCII.GetString(loByteBuffer);".
Tar jag bort try & catch-satserna fungerar det fint.
Webadressen som skickas in till GetHtml är "http://www.sunet.se/".
Någon som kan förklara vad jag gör för fel?
Tack på förhand,
//Martin
<code>
using System;
using System.Net;
using System.Text;
namespace Bostad
{
/// Klass som hanterar data från webben.
public class WebData
{
//Metod som hämtar källkoden för inskickad webadress.
//Returnerar källkoden i stringformat.
public string GetHtml(string address)
{
//Skapa objekt av WebClient
WebClient loWC = new WebClient();
//Hämta och ta emot källkod.
try
{
byte[] loByteBuffer = loWC.DownloadData(address);
}
catch(Exception e)
{
Console.Write(e.Message);
Console.Read();
}
//Omvandla resultatet från byte-array till string.
string result = Encoding.ASCII.GetString(loByteBuffer);
return result;
}
}
}
</code>Sv: Strulande felhantering (Compiler Error CS0103)
kolla också så att den inte är tom.. vet inte vad som händer annars..
<code>
namespace Bostad
{
/// Klass som hanterar data från webben.
public class WebData
{
//Metod som hämtar källkoden för inskickad webadress.
//Returnerar källkoden i stringformat.
public string GetHtml(string address)
{
//Skapa objekt av WebClient
WebClient loWC = new WebClient();
byte[] loByteBuffer
//Hämta och ta emot källkod.
try
{
loByteBuffer = loWC.DownloadData(address);
}
catch(Exception e)
{
Console.Write(e.Message);
Console.Read();
}
//Omvandla resultatet från byte-array till string.
string result = Encoding.ASCII.GetString(loByteBuffer);
return result;
}
}
</code>Sv: Strulande felhantering (Compiler Error CS0103)
<code>
byte[] loByteBuffer = new byte[0];
</code>
Ändrade samtidigt till följande i try-satsen:
<code>
loByteBuffer = loWC.DownloadData(address);
</code>
Nu verkar det funka.
Men vad är det som händer egentligen? Har jag inte just deklarerat en byte-array med plats för en byte? Som resultat får jag hela källkoden för aktuell webadress... (vilket är vad jag vill ha, men ändå...)
Dimentionerar arrayen om sig automatiskt? Det verkar ju uppenbarligen så.
En förklaring till detta vore bussigt!Sv: Strulande felhantering (Compiler Error CS0103)
Jag hade precis börjat skriva svaret, när jag var tvungen att sticka så det blev lite slarvigt skrivet..
men..
Jag kan inte allt om varför det inte fungerar men efter variblen loByteBuffer var deklarerad inne i try blocket så är den inte åtkomlig för det sista anropet som du gör med den variablen, dvs string result = Encoding.ASCII.GetString(loByteBuffer);
Den jag sedan menade med att du skall kolla så att den inte är tom, där syftade jag på samma rad som ovan. Sv: Strulande felhantering (Compiler Error CS0103)
Jag skulle använda
<code>
byte[] loByteBuffer = null;
</code>
istället. Det är ganska meningslöst att skapa en ny byte[] med plats för null element.
>Men vad är det som händer egentligen? Har jag inte just deklarerat en byte-array med plats för en byte?
Noll byte.
>Som resultat får jag hela källkoden för aktuell webadress... (vilket är vad jag vill ha, men ändå...)
Men jag gissar att du får problem om källkoden skulle innehålla några tecken som inte får plats i 7-bitars ASCII. Jag rekommenderar att du läser
http://www.joelonsoftware.com/articles/Unicode.html
>Dimentionerar arrayen om sig automatiskt? Det verkar ju uppenbarligen så.
Nej, du får tillbaka en ny array.
MS