webForumDet fria alternativet

flera villkor

.NET

10 svar · 356 visningar · startad av icaaq

Medlem sedan okt. 20005 273 inlägg
Frågan#1

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

Medlem sedan feb. 20002 300 inlägg
#2
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#.

Medlem sedan okt. 20005 273 inlägg
#3

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

Medlem sedan juni 20001 257 inlägg
#4

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

Medlem sedan okt. 20005 273 inlägg
#5

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

har jag missuppfattat hela situationen??

mvh icaaq

Medlem sedan apr. 20012 266 inlägg
#6

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

while(!tr.EOF && i == _rows)
Medlem sedan feb. 20002 300 inlägg
#7

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)
Medlem sedan okt. 20005 273 inlägg
#8

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

Medlem sedan juni 200032 967 inlägg
#9

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,

Medlem sedan feb. 20002 300 inlägg
#10

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

Medlem sedan juni 200032 967 inlägg
#11

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,

266 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)