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


evighets loop?

Postades av 2005-01-20 02:24:42 - Joakim Åhl, i forum c# (c-sharp), Tråden har 13 Kommentarer och lästs av 968 personer

Denna kod körs men han hoppar alldrig ur loopen.Om man kollar Visual studio med break point på if (strLine == "") så ser man att han kör X antal gånger.Men när kan har kört klar hoppar han aldrig ut ur loopen och kör kommandot return test;

StreamReader sr = new StreamReader(Gns, System.Text.Encoding.UTF8);
            string test = "";
            string strLine;
            while ((strLine = sr.ReadLine()) != "")
            {
                // Ignore blank lines
                if (strLine == "")
                {
                    break;
                }
                if (strLine.Length > 0)
                {
                    test=test + strLine;
                }
                else
                {
                    break;
	            }
 

            }
            return test;


Svara

Sv: evighets loop?

Postades av 2005-01-20 06:38:14 - Johan Normén

Hej,

Lite nyfiken varför du gör så här?

while ((strLine = sr.ReadLine()) != "")

och inte

while (sr.Read())

sr.Read() kommer att läsa igenom hela filen när det inte finns mer att läsa hoppar den ur.

försök även att undvika detta:

test=test + strLine;

och använd en StringBuillder med dess Append istället så får du upp hastigheten på din loop.
varje gång du gör test=test + strLine; så skapas nya objekt som fylls upp, StringBuildern ser till så
samma sträng bara utökas. Man kan tro att test=test+strLine gör samma sak men så är inte fallet.

Mvh Johan


Svara

Sv: evighets loop?

Postades av 2005-01-20 09:59:43 - Johan Bovin

Du skall nog inte kolla om den är skiljt från "" utan om den är skiljt från null
Vidare kan du ju kolla i dokumentationen http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemIOStreamReaderClassReadLineTopic.asp?frame=true

Edit:
Ett litet förslag baserat på Johan N's förslag nedan...

StreamReader sr = new StreamReader(Gns, System.Text.Encoding.UTF8);
StringBuilder test = new StringBuilder();
string strLine;
while (sr.Peek() >= 0)
{
	strLine=sr.ReadLine();
	if (strLine.Length > 0)
	{
		if(test.Length>0) test.Append(Environment.NewLine);
		test.Append(strLine);
		
	}

}
return test.ToString();


Svara

Sv:evighets loop?

Postades av 2005-01-20 10:35:06 - Johan Normén

Ett tips.

Man bör inte göra en loop på det sättet det är kodregler ;-) nästan i alla fall.

1... Den blir olästbart för andra man måste tänkte mer för att riktigt förstå vad som händer.
2... Man bör inte ha en sådan kondition i whilen alls.
3... ett string objekt kommer att skapar vid varje while vilket kommer påverka prestandan.

Man bör helst göra:

1... nyttja någon slags bool, ex rs.Read() som kollar om det går att läsa.
2... I while scopet bör man göra justeringarna som kräver koll på "" dvs string.emtpy

Typ så här:

<code>
StreamReader sr = new StreamReader(Gns, System.Text.Encoding.UTF8);


while (sr.Read())
{...} '<--------- VAD är dett????
{
// Ignore blank lines
if(sr.ReadLine() == "")
{...} '<--------- VAD är dett????
{
break;
}
...

}
return test;
</code>

Mvh Johan


Svara

Sv: evighets loop?

Postades av 2005-01-20 10:40:45 - Andreas Håkansson

Johan,

<b><--------- VAD är dett????</b> det är när du klipper & klistrar kod på pellesoft så får du med det. Det används för att visa "folding", dvs när du minimerar ett kodblock med [-] ikonen i koden. Den "koden" ligger med i visnigen och döljs med ett style-sheet, men IE klipper med det ändå =)


Svara

Sv:evighets loop?

Postades av 2005-01-20 11:39:29 - André Claesson

Om det är bra/snyggt att använda:
<code>
while ((line = sr.ReadLine()) != null)
</code>
är nog upp till var och en.
Microsoft gör det iallafall i dokumentationen.

/Andrec


Svara

Sv: evighets loop?

Postades av 2005-01-20 12:08:12 - Roger Alsing

Johan, din kod kommer inte att fungera

sr.Read() läser en byte/tecken och stegar till nästa pos i streamen.
men eftersom du inte sparar undan det tecknet någonstanns så kommer det fattas 1 tecken per rad i den uppbyggda strängen.


Svara

Sv: evighets loop?

Postades av 2005-01-20 13:13:50 - Joakim Åhl

Tack skall du ha Johan det funka fint fint :-)


Svara

Sv:evighets loop?

Postades av 2005-01-20 13:36:24 - Johan Normén

Roger.


Ja... just... skrev dock lite från huvudet ;-) tänkte Readern... Men Peek() skall man ju kolla nu när du säger det...

Mvh Johan


Svara

Sv: evighets loop?

Postades av 2005-01-20 13:42:52 - Johan Normén

André

"är nog upp till var och en.
Microsoft gör det iallafall i dokumentationen. "

;-)

Men vem har sagt att de skriver logisk kod i alla sina exempel? Det är bara exempel som de knappat ihop i rasande fart, inga av deras exempel är några direkt copy and paste exempel utan visar lite
hur man kan göra.

När man läser sin eller andras kod vill man använda hjärnan så lite som möjligt, detta är en god grundsten i väl självbeskrivande och bra kod enligt många och jag kan bara hålla med. Ju mindre
du måste tolka varje rad ju fortare hittar du och förstår koden och enklare blir det oxå att göra framtida
förändringar.

Se bara hur fort Roggan (Roger) såg att min kod inte skulle fungera ;-) (skämta!)

Kod är som dialekter ser oliak ut hos alla, men det finns oftast vissa sätt som är mer förstått av alla och dessa sätt är bra om man hittar. För man skriver inte bara kod för sig själv utan även för andra.

En bra bok om detta är ex Code Complete av Microsoft där de bla talar om att man inte bör göra som ovan om bättre och mer överskådliga sätt finns.

Mvh Johan


Svara

Sv:evighets loop?

Postades av 2005-01-20 14:58:29 - Roger Alsing

så när man rättar Johan N's små missar som .read och att readline inte heller lagrar undan värdet i en variabel så blir resultatet exakt samma kod som Johan Bovin postade innan ;)


Svara

Sv: evighets loop?

Postades av 2005-01-20 15:06:07 - Johan Normén

Roger J,

Jepp. Han la till exemplet efter mitt så det ser lite dumt ut nu efter hand... Nackdelen med att kunna editera inlägg utan att göra som andra forum kräva vad man editerade och skriva ut när ;-)

Mvh Johan


Svara

Sv:evighets loop?

Postades av 2005-01-20 15:40:27 - Johan Bovin

yepp, jag är ledsen.. skulle ha lagt det i ett eget meddelande men jag har satt ett litet förtydligande nu...


Svara

Sv: evighets loop?

Postades av 2005-01-20 23:41:33 - Johan Normén

Johan B,

Det är lungt. :-) Bra exmpel...

Mvh johan


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

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 569 165
27 952
271 704
666
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