---
title: "flera villkor"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/68073-flera-villkor"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "icaaq"
published: "2003-02-12T15:09:38.000Z"
updated: "2003-02-12T19:33:30.000Z"
replies: 10
views: 391
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/68073-flera-villkor"
---

# flera villkor

## #1 — icaaq, 2003-02-12T15:09Z

jag har denna:

```
[red]
while(!tr.EOF)
[/red]
```

men hur gör jag för att lägga till ett till vilkor, typ

```
[red]
while(!tr.EOF OR i = 10)
[/red]
```

mvh icaaq

Permalänk: https://www.webforum.nu/p/68073

## #2 — Phorpher, 2003-02-12T15:14Z

```
while(!tr.EOF || i == 10)
```

 

\|\| = OR
&& = AND

Fast jag har egentligen inte en aning om vilket språk vi talar om. Men jag antog att det var C#.

Permalänk: https://www.webforum.nu/p/949480

## #3 — icaaq, 2003-02-12T15:22Z

Joda det är C# och jag använder denna:

```
[red]
while(!tr.EOF || i == _rows)
[/red]
```

där \_rows är 18 men satsen fortsätter ändock till tr.EOF....vad gör jag fel?

mvh icaaq

Permalänk: https://www.webforum.nu/p/949487

## #4 — kristoffer, 2003-02-12T16:51Z

Men du använder ju ELLER. Då är uttrycket sant eftersom !tr.EOF == true. Ändra till &&.

Permalänk: https://www.webforum.nu/p/949555

## #5 — icaaq, 2003-02-12T17:12Z

Men jag vill ju köra while tills tr.EOF eller i == \_rows

har jag missuppfattat hela situationen??

mvh icaaq

Permalänk: https://www.webforum.nu/p/949562

## #6 — renholm, 2003-02-12T18:11Z

Tror kristoffer menar att du ska använda && i stället för \|\|. Då blir det så här:

```
while(!tr.EOF && i == _rows)
```

Permalänk: https://www.webforum.nu/p/949608

## #7 — Phorpher, 2003-02-12T18:32Z

Som jag fattar det så vill du loopa så länge som tr inte är EOF och i är mindre än \_rows?

Just nu så kör loopen så länge som i är lika med \_rows och tr inte är EOF.

Om jag fattat dig rätt så borde det vara:

```
while(!tr.EOF && i < _rows)
```

Permalänk: https://www.webforum.nu/p/949626

## #8 — icaaq, 2003-02-12T19:15Z

Det är så här:

```
[red]
public string UpdateMessages()
{
string time;
string name;
string message;
string s;
int i = 1;
s = "<SCRIPT LANGUAGE='JavaScript'>"+Environment.NewLine;
s += "<!--"+Environment.NewLine;
s += "function updateMessage()"+Environment.NewLine;
s += "{"+Environment.NewLine+Environment.NewLine;
FileStream fs = new FileStream(chatt, FileMode.Open);
XmlTextReader tr = new XmlTextReader(fs);
while(!tr.EOF || i == 18)
{
	if(tr.Name == "post")
	{
		time = Convert.ToDateTime(tr.GetAttribute("timestamp")).ToString("HH:mm");
		name = tr.GetAttribute("name");
		message = tr.GetAttribute("message");
		s += "parent.document.getElementById('rad"+i+"').innerHTML='["+time+"] "+name+"';"+Environment.NewLine;
		s += "parent.document.getElementById('user"+i+"').innerHTML='"+message+"';"+Environment.NewLine;
		i = i + 1;
		tr.Read();
	}
	else
	{
		tr.Read();
	}
	
}
tr.Close();
fs.Close();
s += "}"+Environment.NewLine+Environment.NewLine;
s += "// -->"+Environment.NewLine+Environment.NewLine;
s += "</SCRIPT>"+Environment.NewLine+Environment.NewLine;			
return s;
}
[/red]
```

och jag har bara 18 rader så om det produceras fler får jag massa felmess.....

Hur ska jag lösa detta??

mvh icaaq

Permalänk: https://www.webforum.nu/p/949656

## #9 — @nders, 2003-02-12T19:23Z

Kan du inte göra så här?

```
while(!tr.EOF)
{
	if(tr.Name == "post")
	{
		time = Convert.ToDateTime(tr.GetAttribute("timestamp")).ToString("HH:mm");
		name = tr.GetAttribute("name");
		message = tr.GetAttribute("message");
		s += "parent.document.getElementById('rad"+i+"').innerHTML='["+time+"] "+name+"';"+Environment.NewLine;
		s += "parent.document.getElementById('user"+i+"').innerHTML='"+message+"';"+Environment.NewLine;
		i = i + 1;
		tr.Read();
	}
	else
	{
		tr.Read();
	}
	[b]if (i==18) break;[/b]
}
```

Personligen hade jag nog skrivit *i+=1;* ovanför i koden, men det är ju bara en smaksak.

Mvh,

Permalänk: https://www.webforum.nu/p/949665

## #10 — Phorpher, 2003-02-12T19:31Z

Jag tycker du ska samla båda villkoren för loopen i while och inte sprida ut dem.

```
while(!tr.EOF && i <= 18) { ... }
```

Och i @nders kod så kommer loopen att bryta vid 18 och då missa den sista raden eftersom du har initierat i till 1. :)

> **@nders skrev:**
>
> Personligen hade jag nog skrivit i+=1; ovanför i koden, men det är ju bara en smaksak.

Och jag hade skrivit i++;   :birp

Permalänk: https://www.webforum.nu/p/949679

## #11 — @nders, 2003-02-12T19:33Z

> **Phorpher skrev:**
>
> Jag tycker du ska samla båda villkoren för loopen i while och inte sprida ut dem.

Det tycker visserligen jag också, men det verkade som att icaaq inte fick det att fungera. :)

> **Phorpher skrev:**
>
> Och jag hade skrivit i++;   :birp

Det hade jag med! :birp

mvh,

Permalänk: https://www.webforum.nu/p/949681

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/68073-flera-villkor
