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
A jak to mam napsat zkoušel sem rozdělenýŘádek.Length != null a to mi nefunguje
To se taky neporovnává s null ale s konkrétním číslem.
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.
Nevím jak to mam napsat nešla by ukázka
if (pole.Length > 3 && pole[2] == "cosi")
{
list.Add(pole[3]);
}
Super funguje to dík.
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.