Hallo zusammen,
ich habe in meinem Programm eine RichTextBox. Diese muss ich Zeilenweise durchgehen und an einer bestimmten Position den Text in eine zweite TextBox schreiben.
Diese Schleife läuft durch, bis i kleiner als die Anzahl der Zeilennummern ist.
private void GetInvoiceNumber()
{
int lineNumbers = rtbShowFile.Lines.Length;
for (int i = 0; i < lineNumbers; i++)
{
rtbShowFile.Select(84, 7);
//rtbShowFile.SelectionColor = Color.Blue;
rtbInvoiceNumbers.AppendText(rtbShowFile.SelectedText + "\n");
int currentLine = 0;
currentLine++;
}
}
Aber bis jetzt wird nur immer der Text der 1. Zeile in die TextBox geschrieben.
int currentLine = 0;
currentLine++;
Wie muss ich currentLine definieren, damit ich in die nächste(n) Zeile(n) komme?
Gruß,
Bodie
Wer immer das tut, was er schon kann,
bleibt immer das, was er schon ist.
int currentLine = 0; currentLine++;
Wie muss ich currentLine definieren, damit ich in die nächste(n) Zeile(n) komme?
currentLine ist ein von dir selbst definierter Wert der nichts mit der RTB zu tun hat?!?
Zumal du bei jedem Durchgang diesen Wert neu mit 0 initialisierst und ihn dann inkrementierst.
foreach (string line in rtb.Lines)
{
// do it
}
Nimm keine for-Schleife um die einzelnen Zeilen durchzugehen sondern foreach:
foreach (string line in richTextBox1.Lines)
{
// ...
}
using System;class H{static string z(char[]c){string r="";for(int x=0;x<(677%666);x++)r+=c[
x];return r;}static void Main(){int[]c={798,218,229,592,232,274,813,585,229,842,275};char[]
b=new char[11];for(int p=0;p<((59%12));p++)b[p]=(char)(c[p]%121);Console.WriteLine(z(b));}}
Das ist richtig.
Und es muss ja irgendwie möglich sein dieser Variable zu sagen, was die erste Zeile ist.
Denn damit kann ich ja pro Schleifendurchlauf in die nächste Zeile glangen und so den richtigen Wert auslesen.
Zumal du bei jedem Durchgang diesen Wert neu mit 0 initialisierst und ihn dann inkrementierst.
Gut, dann muss ich den Startwert eben vor der Schleife setzen. Aber mir fehlt irgendwie der Durchblick, wie ich die erste Zeile übergeben kann.
Gruß,
Bodie
Wer immer das tut, was er schon kann,
bleibt immer das, was er schon ist.
Gut, laut Debugger werden mit der foreach- Schleife schonmal alle Zeilen durchlaufen. Danke 😁
Aber in der AusgabeBox wird trotzdem nur der Wert der 1.Zeile ausgegeben.
Liegt das vielleicht an dieser Zeile?
rtbShowFile.Select(84, 7);
Das er da automatisch in die 1. Zeile springt und nur diesen Wert dann bekommt?
Gruß,
Bodie
Wer immer das tut, was er schon kann,
bleibt immer das, was er schon ist.
Ja das liegt daran
http://msdn.microsoft.com/en-us/library/xc4fh98s.aspx
Selects a range of text in the text box.
Ah jetzt:
rtbShowFile.Select(84, 7);
arbeitet mit der ++ganzen ++richtextbox, du durchläufst zwar die einzelnen Zeilen macst damit aber nichts.
Was du willst ist:
foreach (string line in richTextBox1.Lines)
{
rtbInvoiceNumbers.AppendText(line.Substring(84, 7) + "\n");
}
;
using System;class H{static string z(char[]c){string r="";for(int x=0;x<(677%666);x++)r+=c[
x];return r;}static void Main(){int[]c={798,218,229,592,232,274,813,585,229,842,275};char[]
b=new char[11];for(int p=0;p<((59%12));p++)b[p]=(char)(c[p]%121);Console.WriteLine(z(b));}}
Ja genau, damit klappt es fast. 👍
Jetzt wird eine ArgumentOutOfRangeException geworfen.
startIndex cannot be larger than length of string.
Parameter name: startIndex
Aber hast mir schon weiter geholfen, Danke 🙂
Gruß,
Bodie
Wer immer das tut, was er schon kann,
bleibt immer das, was er schon ist.
Der Fehler sollte ja klar sein, oder?
Der String ist 50 Zeichen lang und dein startindex liegt irgendwo dahinter
Ja gut, aber ich kann den Startindex ja nicht wieder auf null setzen. Dann liefert er mir ja wieder falsche Ergebnisse oder?
Wer immer das tut, was er schon kann,
bleibt immer das, was er schon ist.
Guck doch einfach mal in die MSDN da ist alles super beschrieben.
Die Summe von startIndex und length bezeichnet eine Position außerhalb dieser Instanz.
Das ist die Bedingung, damit die Exception ausgelöst wird.
Aber alle Werte, die vorhanden sind werden mir angezeigt. Ist also alles richtig. Diese Fehlermeldung ist also überflüssig, da alles so ist wie ich es brauche.
Darf man in so einem Fall die Exception unterdrücken oder sollte man es vermeiden?
Gruß,
Bodie
Wer immer das tut, was er schon kann,
bleibt immer das, was er schon ist.
Also ich habe noch nie erlebt das die ArgumentOutOfRangeException
einfach so kam. Du probierst auf ein Element zuzugreifen welches nicht vorhanden ist.
Wenn ein Array 20 Elemente hat und ich probiere auf was größer gleich Array[20] zuzugreifen dann gibt es einen Fehler. Denn da ist nichts...
Das ist ja das komische daran.
Ich habe von jeder Zeile(insgesamt 88) den gewünschten Wert erhalten.
Wer immer das tut, was er schon kann,
bleibt immer das, was er schon ist.
Hallo Bodie,
dann ist in der letzten zeile vielleicht nur ein leerzeichen.
Fakt ist das sind basics: [Hinweis] Wie poste ich richtig?
1.1 und 1.1.1
André
Ja in der letzten Zeile sind nur leerzeichen.
Danke an alle
Gruß,
Bodie
Wer immer das tut, was er schon kann,
bleibt immer das, was er schon ist.