Forum Doku Wiki Blog

Forumsarchiv 2005, Mai
Schleife

archivierte Beiträge lesen

  1. (SONSTIGES) Schleife von c, 23. 05. 2005, 11:15

Schleife

Der folgende Beitrag wurde am 23. 05. 2005, 11:15 Uhr von c veröffentlicht.

Guten Morgen alle mit einander,

ich bin an einer schleife dran und sie macht einfach nicht das was ich möchte.

Die habe ich mehrmals umgeschrieben und es kommt nie das raus was ich möchte.
Wenn ich es einzeln mache geht es wunder aber wenn ich das ganze in er schleife packe Zählt er nicht mehr weiter!

Seht ihr einen fehler

int counter = 0;
try
{

FileStream fs_lesen = File.OpenRead("C:\\Dokumente und Einstellungen\\andrae\\Eigene Dateien\\corinna\\OpenHTML\\WIS_Benutzerhandbuch.html");
StreamReader sr_lesen = new StreamReader(fs_lesen);

Regex digitregex = new Regex("<H3");//"(?<number>\\d+)");
Regex ende = new Regex("###WERT###");
String s = sr_lesen.ReadToEnd(); //"abc 123 def 456 ghi 789";

sr_lesen.Close();
fs_lesen.Close();

MatchCollection mc = digitregex.Matches(s);
MatchCollection mc1 = ende.Matches(s);

if (( mc.Count > 0 ) || (mc1.Count > 0))
{
//einzel Ausgabe
System.Console.WriteLine(mc.Count.ToString());
System.Console.WriteLine(mc1.Count.ToString());

System.Console.WriteLine("anfang: "+ s.IndexOf("<H3"));
System.Console.WriteLine("ende: " + s.IndexOf("###WERT###"));  System.Windows.Forms.MessageBox.Show("###WERT###");

int h3 = s.IndexOf("<H3");
int h4 = s.IndexOf("###WERT###");
int summe;

summe = h4 - h3;
System.Console.WriteLine("Summe: " + summe.ToString());
     System.Console.WriteLine(s.Substring(h3,summe));


System.Console.WriteLine("Ziffern:");

int wert;
int test;
int i = 0;

foreach (Match m in mc)
{
  foreach(Match m1 in mc1)
  {
   if(i< mc1.Count)
   {
    wert = m.Index;
    Console.WriteLine("anfang: " + wert);
    i++;
    counter = wert;

    test = m1.Index;
    int summe1 = test - counter;        Console.WriteLine("ende: " + test);
    Console.WriteLine("summe: "+ summe1);       //Console.WriteLine(s.Substring(counter, summe1));
   }
  }
}
}


Einzelausgabe:

47
4
anfang: 43964
ende: 44755
Summe: 791

Mehrfachausgabe:

Ziffern:
anfang: 43964
ende: 44755
summe: 791
anfang: 43964
ende: 45599
summe: 1635
anfang: 43964
ende: 46145
summe: 2181
anfang: 43964
ende: 46764
summe: 2800

(erzählt einfach nicht den Anfang weiter!)


Was habe ich falsch gemacht?????


Ps. Das ganze ist in c# geschrieben!! aber das seht ihr bestimmt.

Schleife

Der folgende Beitrag wurde am 23. 05. 2005, 11:20 Uhr von wahsaga veröffentlicht.

hi,

> ich bin an einer schleife dran und sie macht einfach nicht das was ich möchte.

ja, schuhe zubinden muss jeder mal lernen.

> Die habe ich mehrmals umgeschrieben und es kommt nie das raus was ich möchte.

ja was möchte das kleine c denn, sagt es uns das auch?

gruß,
wahsaga


--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }

Schleife

Der folgende Beitrag wurde am 23. 05. 2005, 11:52 Uhr von c veröffentlicht.

> ja was möchte das kleine c denn, sagt es uns das auch?

Was habe ich falsch gemacht?????

Habe ich mich wieder nicht deutlich ausgedrückt, ist verständlich für mich!
Es ist schon bekannt was der Quellcode macht.

Wenn nicht: ich suche <H3 in der Datei X und möchte wissen an welcher stelle <H3 steht und mit ###WERT### ist das ende so das ich immer bestimmt Ansätze habe die in einer anderen Datei geschrieben werden.

Denn habe ich ein Counter der mir sagt wie viele <H3 und ###WERT### in der Datei vorkommen. So kann ich die Anzahl der Dateien bestimmen

Mit foreach(Macht m in mc) zählt er mir alle auf.

Was ich möchte das der Anfang immer weiter rutscht.

Der Anfang zählt nicht weiter das ende ja.

Jetzt ist meine Ausgabe immer noch so:

Ziffern:
anfang: 43964
ende: 44755
summe: 791
anfang: 43964
ende: 45599
summe: 1635
anfang: 43964
ende: 46145
summe: 2181
anfang: 43964
ende: 46764
summe: 2800

und es wäre schön wenn der Anfang weiter rutschen könnte (z.B. wenn an der stelle in der Datei jetzt ein <H3 steht)

Ziffern:
anfang: 43964
ende: 44755
summe: 791
anfang: 45110
ende: 45599
summe: 489
anfang: 45964
ende: 46145
summe: 181
anfang: 45999
ende: 46764
summe: 765

Habe ich mich jetzt besser ausgedrückt???





Schleife

Der folgende Beitrag wurde am 23. 05. 2005, 11:47 Uhr von Maxx veröffentlicht.

Hallo,

> ich bin an einer schleife dran und sie macht einfach nicht das was ich möchte.
> [... jede Menge Code ...]

Die von dir verwendete Entwicklungsumgebung hat mit an Sicherheit grenzender Wahrscheinlichkeit einen Debugger integriert. Was hast du schon ausprobiert? Wie, du hast noch nicht damit gearbeitet? Dann ist jetzt ein idealer Zeitpunkt gekommen diesen "Debugger" auszuprobieren.

Welche Werte nimmt "Wert" in der Zeile  wert = m.Index; an wenn du an dieser Stelle einen Haltepunkt setzt.

Grüße,

Jochen

--
Heute schon gescribbelt?
Scribbleboard

Schleife

Der folgende Beitrag wurde am 23. 05. 2005, 13:16 Uhr von c veröffentlicht.

> Hallo,
>
> > ich bin an einer schleife dran und sie macht einfach nicht das was ich möchte.
> > [... jede Menge Code ...]
>
> Die von dir verwendete Entwicklungsumgebung hat mit an Sicherheit grenzender Wahrscheinlichkeit einen Debugger integriert. Was hast du schon ausprobiert? Wie, du hast noch nicht damit gearbeitet? Dann ist jetzt ein idealer Zeitpunkt gekommen diesen "Debugger" auszuprobieren.
>
> Welche Werte nimmt "Wert" in der Zeile  wert = m.Index; an wenn du an dieser Stelle einen Haltepunkt setzt.
>
> Grüße,
>
> Jochen
>
ich habe raus bekommen mit Debug an was das liegt nur ich habe noch keinen Ansatz wie ich das Problem in der foreach schleife löse.

foreach in foreach schliefe will irgend wie nicht. also muss ich doch einen anderen weg gehen.

Schleife

Der folgende Beitrag wurde am 23. 05. 2005, 15:02 Uhr von Maxx veröffentlicht.

Hallo c,

> ich habe raus bekommen mit Debug an was das liegt nur ich habe noch keinen Ansatz wie ich das Problem in der foreach schleife löse.
>
> foreach in foreach schliefe will irgend wie nicht. also muss ich doch einen anderen weg gehen.

nein, das kann ich nicht glauben. Die Verschachtelung von 2 foreach Schleifen klappt bestimmt. (Auch wenn der Compiler von Microsoft kommt)

Versuche es noch einmal mit dem Debugger. Mit ganz einfachen Eingangsdaten bei denen du die Ausgabe und die Schleifen vorher auf Papier nachvollziehst.

Grüße,

Jochen

P.S. Zitieren und antworten

--
Heute schon gescribbelt?
Scribbleboard

Schleife

Der folgende Beitrag wurde am 23. 05. 2005, 16:10 Uhr von c veröffentlicht.


> nein, das kann ich nicht glauben. Die Verschachtelung von 2 foreach Schleifen klappt bestimmt. (Auch wenn der Compiler von Microsoft kommt)

ich habe mal einfach man die if(i< mc1.Count) Anweisung rausgenommen. und dabei ist rausgekommen. Er schreibt den ersten punkt so oft wie es Endpunkte gibt z.B. man hat 4 entpunkte also hat man auch viel mal den gleichen Anfang.

z.B.
Ziffern:
anfang: 43964
ende: 44755
summe: 791
anfang: 43964
ende: 45599
summe: 1635
anfang: 43964
ende: 46145
summe: 2181
anfang: 43964
ende: 46764
summe: 2800

> Versuche es noch einmal mit dem Debugger. Mit ganz einfachen Eingangsdaten bei denen du die Ausgabe und die Schleifen vorher auf Papier nachvollziehst.

habe ich und ich komme immer zum gleichen punkt zur zweiten foreach schleife. aber ich habe schon mehrer schleifen ausprobiert und Variationen wo ich sagen muss ich weiß jetzt erst mal keine Variante mehr

> P.S. Zitieren und antworten

so besser ich weiß schon wie das geht aber ab und zu denke ich nicht dran

Schleife

Der folgende Beitrag wurde am 23. 05. 2005, 16:53 Uhr von Maxx veröffentlicht.

Hi c,

> ich habe mal einfach man die if(i< mc1.Count) Anweisung rausgenommen. und dabei ist rausgekommen. Er schreibt den ersten punkt so oft wie es Endpunkte gibt z.B. man hat 4 entpunkte also hat man auch viel mal den gleichen Anfang.

OK, so kommen wir nicht weiter. Das was du da beschreibst ist so. Und erstmal kein Fehler. Mir fehlt momentan die Phantasie mir vorzustellen, welche Start und Endpunkte in welcher Verteilung vorkommen und welche Informationen extrahiert werden sollen.
Deine Ausführungen in http://forum.de.selfhtml.org/?t=108204&m=673412 hätten etwas präziser sein können.

Wieviele "End"punkte gibt es denn je <h3>? Gibt es je <h3 genau ein (zugehöriges) ###WERT###? Wenn das so ist, ist deine Konstruktion mit dem verschachtelten foreach() eher nix ...

foreach (Match m in mc)       // Die "Start"punkte <H3
  {
  foreach(Match m1 in mc1)    // Die "End"punkte   ###WERT###
    {
    // hier werden _alle_ Endpunkte _eines_ h3 abgearbeitet.
    // ... was du anscheinend nicht möchtest.
    }
  }

> aber ich habe schon mehrer schleifen ausprobiert und Variationen wo ich sagen muss ich weiß jetzt erst mal keine Variante mehr

Spontan würde ich sagen 1 Schleife:

foreach (Match m in mc)
  {
  start = m.Index;
  end   = s.IndexOf("###WERT###", start);
  Console.WriteLine(s.Substring(start, end));
  }

Wenn meine Annahme, dass es je <h3 ein zugehöriges ###WERT### gibt, zutrifft.

Grüße,

Jochen

--
Heute schon gescribbelt?
Scribbleboard

Schleife

Der folgende Beitrag wurde am 23. 05. 2005, 16:20 Uhr von Hans veröffentlicht.

Guten morgen liebes c

> foreach (Match m in mc)
> {
>   foreach(Match m1 in mc1)
>   {

also, vielleicht liegt es daran, daß m erst dann weitergezaehlt wird, wenn m1 das Ende von mc1 erreicht hat, oder ?

Gruß

Hans

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4