?
DJ BlackEagle schrieb:
foreach (string str in Receivers)
{
regex = new Regex(@"[(0664),(0676),(0699),(0650),(0660),(0688)][ 0-9]+?");
Match m = regex.Match(str);
// Ist es eine Handynummer mit folgendem Format: (@"[(0664),(0676),(0699),(0650),(0660),(0688)][ 0-9]+?");
// dann underlinen
if(m.Success)
{
textBox_Receivers.SelectionStart = textBox_Receivers_length_old;
MessageBox.Show(textBox_Receivers.SelectionStart.ToString());
textBox_Receivers.SelectionLength = str.Length;
MessageBox.Show(str.Length.ToString());
textBox_Receivers.SelectionFont = new Font("Arial",8,FontStyle.Underline);
textBox_Receivers_length_old += str.Length + 2;
}
else
{
// Ist Name im DataSet vorhanden, dann underlinen
for(int j = 0; j < dataSet.Tables[0].Rows.Count; j++)
{
if(dataSet.Tables[0].Rows[j].ItemArray[0].ToString() == str.ToString())
{
textBox_Receivers.SelectionStart = textBox_Receivers_length_old;
MessageBox.Show(textBox_Receivers.SelectionStart.ToString());
textBox_Receivers.SelectionLength = str.Length;
MessageBox.Show(textBox_Receivers.SelectionLength.ToString());
textBox_Receivers.SelectionFont = new Font("Arial",8,FontStyle.Underline);
textBox_Receivers_length_old += str.Length + 2;
// Namen in Handynummern ersetzen
Receivers[counter] = dataSet.Tables[0].Rows[j].ItemArray[1].ToString(); // <---- hier der Fehler, Debugger zeigt dann auf foreach
}
}
}
counter++;
}
Da wo der Fehler auftritt ist auch keine Variable i, sondern counter. Und der wird oben erstellt.
Ich glaube Du hast den Kontext nicht so ganz verstanden was geri
Ich habe Ihn bei seinem Projekt seit etwa 4 tagen ein bisschen unterstützt!
Er htte diese Scheleifenkonstrukte niemals innerhalb eines Moduls hintereinander im Code! Sondern er hatte seinen Code einmal mit ner for - Schleife laufen inderer Schleife auch die Variable war dann ist es klar das die Variable lokal vorhanden war! und das es auch lief.
Dann hatte geri das Codestueck editiert dahingegen das oben aus ner for -Schleife ne for each - Schleife wurde aber hatte vergessen das da noch ne Variable i ist die natührlich vom foreach - konstrukt niemals itterriert wurde.
Also Du kannst mich kritisieren aber in der unterern Reihenfolge oder auflistung
:
int counter = 0;
ArrayList Receivers = new ArrayList();
MatchCollection matchCollectionReceivers;
Regex regex = new Regex(@"(?>\w|\d)+");
matchCollectionReceivers = regex.Matches("Fuxxe; Gerald; 0676123456");
foreach (Match m in matchCollectionReceivers)
{
Receivers.Add(m.Value);
MessageBox.Show(Receivers[counter++].ToString());
}
int textBox_Receivers_length_old = 0;
counter = 0;
foreach (string str in Receivers)
{
regex = new Regex(@"[(0664),(0676),(0699),(0650),(0660),(0688)][ 0-9]+?");
Match m = regex.Match(str);
// Ist es eine Handynummer mit folgendem Format: (@"[(0664),(0676),(0699),(0650),(0660),(0688)][ 0-9]+?");
// dann underlinen
if(m.Success)
{
textBox_Receivers.SelectionStart = textBox_Receivers_length_old;
MessageBox.Show(textBox_Receivers.SelectionStart.ToString());
textBox_Receivers.SelectionLength = str.Length;
MessageBox.Show(str.Length.ToString());
textBox_Receivers.SelectionFont = new Font("Arial",8,FontStyle.Underline);
textBox_Receivers_length_old += str.Length + 2;
}
else
{
// Ist Name im DataSet vorhanden, dann underlinen
for(int j = 0; j < dataSet.Tables[0].Rows.Count; j++)
{
if(dataSet.Tables[0].Rows[j].ItemArray[0].ToString() == str.ToString())
{
textBox_Receivers.SelectionStart = textBox_Receivers_length_old;
MessageBox.Show(textBox_Receivers.SelectionStart.ToString());
textBox_Receivers.SelectionLength = str.Length;
MessageBox.Show(textBox_Receivers.SelectionLength.ToString());
textBox_Receivers.SelectionFont = new Font("Arial",8,FontStyle.Underline);
textBox_Receivers_length_old += str.Length + 2;
// Namen in Handynummern ersetzen
Receivers[counter] = dataSet.Tables[0].Rows[j].ItemArray[1].ToString(); // <---- hier der Fehler, Debugger zeigt dann auf foreach
}
}
}
counter++;
}
so klappt es, hmmmmmmmmmmmmmmmmmmmmmmmmmmm????????????????????
int counter = 0;
ArrayList Receivers = new ArrayList();
MatchCollection matchCollectionReceivers;
Regex regex = new Regex(@"(?>\w|\d)+");
matchCollectionReceivers = regex.Matches(textBox_Receivers.Text);
foreach (Match m in matchCollectionReceivers)
{
Receivers.Add(m.Value);
MessageBox.Show(Receivers[counter++].ToString());
}
int textBox_Receivers_length_old = 0;
counter = 0;
for(int i = 0; i < Receivers.Count; i++)
{
regex = new Regex(@"[(0664),(0676),(0699),(0650),(0660),(0688)][ 0-9]+?");
Match m = regex.Match(Receivers[i].ToString());
// Ist es eine Handynummer mit folgendem Format: (@"[(0664),(0676),(0699),(0650),(0660),(0688)][ 0-9]+?");
// dann underlinen
if(m.Success)
{
textBox_Receivers.SelectionStart = textBox_Receivers_length_old;
MessageBox.Show(textBox_Receivers.SelectionStart.ToString());
textBox_Receivers.SelectionLength = Receivers[i].ToString().Length;
MessageBox.Show(Receivers[i].ToString().Length.ToString());
textBox_Receivers.SelectionFont = new Font("Arial",8,FontStyle.Underline);
textBox_Receivers_length_old += Receivers[i].ToString().Length + 2;
}
else
{
// Ist Name im DataSet vorhanden, dann underlinen
for(int j = 0; j < dataSet.Tables[0].Rows.Count; j++)
{
if(dataSet.Tables[0].Rows[j].ItemArray[0].ToString() == Receivers[i].ToString())
{
textBox_Receivers.SelectionStart = textBox_Receivers_length_old;
MessageBox.Show(textBox_Receivers.SelectionStart.ToString());
textBox_Receivers.SelectionLength = Receivers[i].ToString().Length;
MessageBox.Show(textBox_Receivers.SelectionLength.ToString());
textBox_Receivers.SelectionFont = new Font("Arial",8,FontStyle.Underline);
textBox_Receivers_length_old += Receivers[i].ToString().Length + 2;
// Namen durch Handynummern ersetzen
Receivers[i] = dataSet.Tables[0].Rows[j].ItemArray[1].ToString();
}
}
}
}
hatte geri es nie in seinem Programm stehen er hat die 2 Code - Snippets
hier einfach hintereinander gepostet und wenn man erst später in den thread kommt kann man es nathürlich falsch interpretieren! Ich glaube geri hatte mich schon richtig verstanden.
mfg sclearscreen