

C# Pole textových řetězců
Ahoj, mám dotaz.
Tvořím simulátor CNC kódu a chtěl bych vypisovat
některé komentáře např. nástroj a operaci. Požadované
komentáře mají vždy stejnou pozici v řádku tak sem řádek
rozdělil Splitem a nechal vypisovat požadované pozice ale
některé řádky CNC kódu jsou kratší než řádky než řádky z
kterých vypisuji komentář a tam mi vyskakuje chyba.
Zkoušel sen podmínku rozdelenýŘádek[2] != null ale
to nefunguje. Přikládám testovací projekt.
string[] poleŘádků = richTextBox1.Lines;
for (int i = 0; i <= poleŘádků.Length - 2; i++)
{
string[] rozdělenýŘádek = poleŘádků[i].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
try
{
if (rozdělenýŘádek[2] == "OPERACE:" && rozdělenýŘádek[2] != null)
{
listBox1.Items.Add(rozdělenýŘádek[3]);
}
else if (rozdělenýŘádek[2] == "NASTROJ:" && rozdělenýŘádek[2] != null)
{
listBox1.Items.Add(rozdělenýŘádek[3]);
listBox1.Items.Add("**************************************************");
}
}
catch
{
MessageBox.Show("Špatně načtený řádek\n" + poleŘádků[i], "Chyba");
}
}
Potřebuješ tam kontrolovat rozdělenýŘádek.Length
Zkusil sem ještě !(rozdělenýŘádek.Length <2) to mi taky nešlo
A kam jsi to dal?
if (rozdělenýŘádek[2] == "OPERACE:" && !(rozdělenýŘádek.Length < 2))
Takže si přečteš třetí prvek a pak zjišťuješ, jestli tam jsou alespoň dva.
Asi už chápeš, kde je problém.
Netuší kde je chyba prohodil sem to !(rozdělenýŘádek.Length < 2) && rozdělenýŘádek[2] == "OPERACE:" a nejde to
Co znamená nejde? Pořád tam vidím ten problém, že kontroluješ délku na alespoň dva, ale pak čteš třetí prvek.
zkusil sem ještě
if (!(rozdělenýŘádek.Length < 2))
{
if (rozdělenýŘádek[2] == "OPERACE:")
{
listBox1.Items.Add(rozdělenýŘádek[3]);
}
//else if (rozdělenýŘádek[2] == "NASTROJ:" && rozdělenýŘádek[2] != null)
//{
// listBox1.Items.Add(rozdělenýŘádek[3]);
// listBox1.Items.Add("**************************************************");
//}
//}
}
pořád mam chybu
Pokud nenapíšeš, jaká přesně chyba, tak je taková informace k ničemu.
Super funguje to dík.
Příště to zkusím lip popsat.