Mam program:
private void find2(List<molecule> _substraty, List<molecule> _produkty)
{
int myID = funcID;
funcID++;
List<element> sub = utils.getStats(_substraty);
List<element> pro = utils.getStats(_produkty);
textBox1.Text = utils.getText(_substraty);
textBox2.Text = utils.getText(_produkty);
//if (sub.Count != pro.Count) return;
string s = "";
List<molecule> tab = new List<molecule>();
int ID = 0;
for (int i = 0; i < sub.Count; i++)
{
if(sub[i].count != pro[i].count)
{
if(sub[i].count > pro[i].count)
{
tab = _produkty;
ID = 2;
}
else
{
tab = _substraty;
ID = 1;
}
s = sub[i].symbol;
break;
}
}
if (s == "")
{
textBox1.Text = utils.getText(_substraty);
textBox2.Text = utils.getText(_produkty);
MessageBox.Show("Uzgodniono!");
}
MessageBox.Show($"my state: {utils.getText(_substraty)} -> {utils.getText(_produkty)}");
List<molecule> subState = utils.getTab(_substraty);
List<molecule> proState = utils.getTab(_produkty);
List<molecule> tabState = utils.getTab(tab);
for (int i = 0; i < tab.Count; i++)
{
try
{
MessageBox.Show($"{myID} searching {s} in {tab[i].name} result {tab[i].findInElements(s).Item1 != null}");
if (tab[i].findInElements(s).Item1 == null)
utils.debug(tab.GetRange(i, 1));
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
if (tab[i].findInElements(s).Item1 != null)
{
tab[i].count += 1;
if(ID == 1)
{
_substraty = tab;
}else if(ID == 2)
{
_produkty = tab;
}
if(tab[i].count < 3)
{
MessageBox.Show("Start " + funcID);
find2(_substraty, _produkty);
}
else
{
MessageBox.Show("TEST");
textBox1.Text = utils.getText(_substraty);
textBox2.Text = utils.getText(_produkty);
}
MessageBox.Show("data for: " + myID);
//MessageBox.Show($"my first state: {utils.getText(subState)} -> {utils.getText(proState)}");
MessageBox.Show($"my state: {utils.getText(_substraty)} -> {utils.getText(_produkty)}");
_substraty = subState;
_produkty = proState;
tab = tabState;
MessageBox.Show($"retrun to: {utils.getText(_substraty)} -> {utils.getText(_produkty)}");
MessageBox.Show($"tab: {utils.getText(tab)}");
}
}
MessageBox.Show("end " + myID);
}
cały problem jest w drugiej pętli mianowicie:
try
{
MessageBox.Show($"{myID} searching {s} in {tab[i].name} result {tab[i].findInElements(s).Item1 != null}");
if (tab[i].findInElements(s).Item1 == null)
utils.debug(tab.GetRange(i, 1));
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
Program wyświetla message boxa "1 searching H in KOH result False" i od razu przeskakuje na sam koniec do wiadomości "end 1" ignorując całkowicie utils.debug(). Nie wyświetla przy tym żadnego błędu.
Tak samo kiedy dam utils.debug na początek pętli i tak zostaje zignorowany nie wyświetlając żadnej wiadomości.
public static void debug(List<molecule> tab)
{
for (int i = 0; i < tab.Count; i++)
{
for (int y = 0; y < tab[i].elements.Count; y++)
{
element el = tab[i].elements[y];
MessageBox.Show($"{el.symbol} - {el.count}");
}
}
}
Ma ktoś pomysł jak to naprawić lub co jest nie tak?