Autor Beitrag
Spectus.gn
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 38

Win XP
C# (VS 2008 Pro)
BeitragVerfasst: Mo 25.09.06 16:11 
Hi, ich habe das selbe problem wie in diesem Thread.

Nur, dass ich die Suche als Methode schreiben will.
die einzugebenden Daten sind der Suchtext "SearchText", der Abbruchtext "SearchLeer" und die Quelle "lines", was bei mir ein String ist, der alle Zeilen des ausgelesenen Streamreaders beinhaltet. Ein erneutes auslesen wäre zu Zeitaufwändig und würde die Bandbreite zu sehr belasten.
gibt es da eine Möglichkeit? wäre nett...
MfG
Carsten


Moderiert von user profile iconChristian S.: Topic aus IO, XML und Registry verschoben am Mo 25.09.2006 um 18:25
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20442
Erhaltene Danke: 2261

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 25.09.06 17:25 
Hallo!

Wo liegt denn Dein Problem, diese Methode zu schreiben? :gruebel:

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Spectus.gn Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 38

Win XP
C# (VS 2008 Pro)
BeitragVerfasst: Mo 25.09.06 23:58 
richtig.
Mein Problem ist die Schreibweise... BIn halt recht neu wieder in c und in c# ist gleich ein wenig mehr anders... außerdem ist das schon jahre her seitdem ich das letzte mal was geproggt habe...

Also... mal der Quelltext.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
       private string Search(string SearchText, string SearchLeer, List<string> lines)
        {
           
           while ((lines != null))
            {
                string Ergebnis;
                int Laenge, PositionString = 0, PositionStringLeer = 0;
                Laenge = SearchText.Length;
                PositionString = lines.IndexOf(SearchText);
                if (PositionString >= 0)
                {
                    PositionStringLeer = lines.IndexOf(SearchLeer, PositionString);
                    Ergebnis = (PositionString + Laenge, PositionStringLeer - (PositionString + Laenge));
                    return Ergebnis;
                }
            }
            
        }

Der will halt noch nicht und ich hoffe man kann mir da mal die letzte Ölung geben....
Danke schonmal für die Mühe.
Carsten
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20442
Erhaltene Danke: 2261

Win 10
C# (VS 2019)
BeitragVerfasst: Di 26.09.06 21:24 
Hallo!

Gewöhn' Dir bitte an, auch dazu zu schreiben, was nicht funktioniert. Ansonsten wird die Antwort schwer ;-)

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Spectus.gn Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 38

Win XP
C# (VS 2008 Pro)
BeitragVerfasst: Di 26.09.06 21:35 
WAHH! das ganze ding funzt net, weil ich keine Ahnung habe, wie ich das schreiben soll, da ich wieder ein blutiger anfänger bin... zufrieden?
Hab da null plan. Hab halt nur versucht den Text von dir für mein Problem umzubauen, was aber netgeklappt hat, da ich den Streamreader nicht in meinen String lines umbauen konnte.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20442
Erhaltene Danke: 2261

Win 10
C# (VS 2019)
BeitragVerfasst: Di 26.09.06 21:44 
Hallo!

Du musst Dich schon ein bisschen selber anstrengen, schreiben werde ich Dir den Code nicht. Im verlinkten Thread werden die einzelnen Zeilen mittels StreamReader.Readline durchgegangen, in diesem Fall wirst Du wohl die Zeilen mittels einer Schleife (z.B. for-Schleife) durchlaufen müssen.

Schau einfach mal, wie weit Du kommst und bei etwas konkreteren Fragen kannst ja dann nochmal hier posten.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Spectus.gn Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 38

Win XP
C# (VS 2008 Pro)
BeitragVerfasst: Di 03.10.06 15:41 
Ich habe das ganze in eine Methode gepackt.
Als Eingabe in Die Methode stehen "SearchText", was das vorangestellte Wort darstellt, "SearchLeer", was das folgende Wort darstellt und bei mir der Liststring lines, der bei mir die Zeilen einer ausgelesenen Datei enthält.
Die Ausgabe ist das Wort, was Zwischen den beiden Marken "Searchtext" und "SearchLeer" steht. Du musst allerdings weise mit den Marken umgehen, da er dir sonst nur den letzten Treffer ausgibt. Anstonsten muss du eventuell einen Array/List als Ergebnis machen, dass dann alle Treffer beinhaltet anlegen.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
private string Search(string SearchText, string SearchLeer, List<string> lines)
        {
           string Ergebnis = "";
           string str;
           int i=0;
           while (i!=lines.Count)
                {
                    str = lines[i];
                    int PositionStrLeer = str.IndexOf(SearchLeer), PostitionStr = str.IndexOf(SearchText);
                    if (PostitionStr >= 0)
                    {
                        PositionStrLeer = str.IndexOf(SearchLeer);
                        while ((PostitionStr + SearchText.Length) <= (PositionStrLeer - 1))
                        {
                            Ergebnis += str[PostitionStr+SearchText.Length];
                            PostitionStr++;
                        }
                    }
                    i++;
                }
                return Ergebnis;