Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Case i C#

Postades av 2003-04-25 11:29:48 - Benni Svensson, i forum c# (c-sharp), Tråden har 8 Kommentarer och lästs av 1172 personer

Jo nu är jag här igen...
Jag försöker mig på att konvertera en funktion som jag gjort i VB till C#.
Jag får dock en del problem när jag skall ge mig på en case-sats.(det är kanske inte där felet ligger?)
<code>
if(textBoxTelefon.Text.Length>0)

{

int helaTelefon=textBoxTelefon.Text.Length;
int lngPos = textBoxTelefon.Text.IndexOf("-");
int riktNr = lngPos;
int teleFon = helaTelefon - (riktNr +1);
string formatTelefon;
switch (teleFon)

{
case 5:
formatTelefon =textBoxTelefon.Text.Substring(1,3).ToString();
break;
case 6:
break;
case 7:
break;
case 8:
break;
}

string totalTelefon=riktNr.ToString() + "-" + formatTelefon;
MessageBox.Show (totalTelefon.ToString());
</code>
Som det nu är, så har jag bara aktiverat den första case (5) men jag får följande fel:
<code>
E:\C#\SAW\SAW\frmKunder.cs(1244): Use of unassigned local variable 'formatTelefon'
</code>
Jag förstår inte vad som menas, gör ni??


Svara

Sv: Case i C#

Postades av 2003-04-25 11:57:43 - Patrik Löwendahl

string formatTelefon = "";


det är parsen innan kompileringen som inte antar att ngn av dina case händer, alltså skulle din variabel i teoring kunna vara oinstancierad när du sedan använder den längre ner.

Det här gäller all block scope inte bara för SWITCH


Svara

Sv: Case i C#

Postades av 2003-04-25 12:26:05 - Benni Svensson

Tack Patrik.
Tyvärr så verkar det som om jag har mera problem. Jag har skrivit om lite:
<code>
string formatTelefon;
int helaTelefon=textBoxTelefon.Text.Length;
int lngPos = textBoxTelefon.Text.IndexOf("-"); //vias antal tecken
string riktNr = textBoxTelefon.Text.Substring(0,lngPos); //visar riktnummer OK
int teleFonLangd=helaTelefon-lngPos-1;
string teleFon=textBoxTelefon.Text.Substring(lngPos+1,teleFonLangd);
formatTelefon = teleFon.Substring(0,2) + " " + teleFon.Substring(3,teleFonLangd);

MessageBox.Show(riktNr + "-" + formatTelefon.ToString());
</code>
Så kastar han ett undantag.
Det är vid raden teleFon.
<ode>
An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll

Additional information: Index and length must refer to a location within the string.
</code>
Ibland så undrar jag om det är värt besväret att försöka att lära sig ett nytt språk??


Svara

Sv: Case i C#

Postades av 2003-04-25 12:35:09 - Johan Bovin

du går utanför strängens längd i denna: string teleFon=textBoxTelefon.Text.Substring(lngPos+1,teleFonLangd);
(teleFonLangd är ju total antalet bokstäver i textBoxTelefon.Text...) alltså om textBoxTelefon.Text är 1234567 (är ju teleFonLangd=7) du säger: "börja på lngPos+1 och gå 7 tecken framåt".... inte så bra... lösning:
string teleFon=textBoxTelefon.Text.Substring(lngPos+1); //börjar på lngPos+1 och går till slutet...



Svara

Sv: Case i C#

Postades av 2003-04-25 12:54:42 - Benni Svensson

Jag är inte säker på att jag förstår dig...

string formatTelefon = "";//här ser jag till att variablen är tom
int helaTelefon=textBoxTelefon.Text.Length; //detta är det totala antal tecken
int lngPos = textBoxTelefon.Text.IndexOf("-"); //vias antal tecken för riktnr
string riktNr = textBoxTelefon.Text.Substring(0,lngPos); //visar riktnummer OK

int teleFonLangd=helaTelefon-lngPos-1;//här är telefonnr längd
string teleFon=textBoxTelefon.Text.Substring(lngPos+1,teleFonLangd);//detta är länden på telefonnummeret.

Har svårt att förstå nogot annat.
Mitt problem är när jag sedan skall formatera(ett f-siffrigt vill jag ha som 111 11)
det är då som det spökar.
Första delen är inga problem
formatTelefon = teleFon.Substring(0,2)
men så fort som jag kommer till andra delen så bråkar det.
formatTelefon = teleFon.Substring(0,2) + " " + teleFon.Substring(3,5);
Det är tänkbart att du har rätt med längden, men jag ser inte var.


Svara

Sv: Case i C#

Postades av 2003-04-25 12:58:55 - Johan Bovin

nä, jag kollade på fel. variabel sorry...
men .hur som helst så går du utanför strängens längd...
testa
formatTelefon = teleFon.Substring(0,3) + " " + teleFon.Substring(3);

problemet är att jag tror du gör ett tankefel... Substring tar antingen en eller två parametrar den med en parameter betyder börja på detta index och gå till slutet.
Den med två parametrar (Substring(x,y) säger börja på index x och gå y steg framåt...
eftesom din sträng har 5 tecken (eller?) och du säger Substring(3,5) så börjar den ju på position 3 och tar fem steg framåt (alltså förbi slutet på strängen)

<code>
string teleFon="11111";
string formatTelefon = teleFon.Substring(0,3) + " " + teleFon.Substring(3);
</code>
formatTelefon är nu "111 11";


Svara

Sv: Case i C#

Postades av 2003-04-25 13:14:15 - Benni Svensson

Jamenvisst.
Tack för din hjälp.

Men, säg den lycka som varar.
Nu skulle jag lägga in den i min class-fil(kontroller)

public static string KollaTelefon(string fileName) osv
koden här är den samma som innan, och nu är den kanon.

Jag anropar classen:
kontroller.KollaTelefon(textBoxTelefon.Text);
kontroller.KollaTelefon(textBoxMobil.Text);
kontroller.KollaTelefon(textBoxFax.Text);

Borde väll inte vara några problem, men mitt error säger:
<code>
E:\C#\SAW\SAW\kontroller.cs(44): 'SAW.kontroller.KollaTelefon(string)': not all code
paths return a value
</code>
Även här är jag frågande.

Jag försökte också göra så att om telefonnummret redan är formaterat, så skulle ingenting hända.
<code>
if(fileName.IndexOf("-"))
{
//ingenting skall hända
}
else
{
//Här skall koden komma
}
</code>
Men detta fungerar inte heller.
Hur bör jag göra?


Svara

Sv: Case i C#

Postades av 2003-04-25 14:14:32 - Johan Bovin

Om ingenting skall hända då skall du ju bara returnera det du får in... alltså
<code>
if(fileName.IndexOf("-"))
{
return fileName;
}
else
{
//Här skall koden komma
}
</code>


Svara

Sv: Case i C#

Postades av 2003-04-25 20:51:04 - Benni Svensson

Tusen tack, men jag fick ett error:
<code>
E:\C#\SAW\SAW\kontroller.cs(48): Cannot implicitly convert type 'int' to 'bool'
</code>

Du har inget svar på detta error???
<code>
E:\C#\SAW\SAW\kontroller.cs(44): 'SAW.kontroller.KollaTelefon(string)': not all code paths return a value
</code>


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 838
27 960
271 761
511
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies