private void ImportDAM_Click(object sender, RoutedEventArgs e) { if (ListOfDAMs.Items.Count < 10) { ofd.FileName = ""; //Hogy ne legyen már valamilyen érték a kifelölt mezőben ofd.Multiselect = true; //Egyszerre több elem is kiválasztható ofd.Filter = "Text file|*.txt"; ofd.Title = "Import the DAM output"; if (ofd.ShowDialog() == true) //Megnyitás gombbal valamit betöltött a felhasználó sikeresen { foreach (string filename in ofd.FileNames) { string[] rawDAMFile = FilesExportImport.LoadFile(filename); //Egy sor a DAM-ban itt 1 tömb LoadedDAMFile ldf = new LoadedDAMFile(filename, new string[rawDAMFile.Length][]); for (int i = 0; i < rawDAMFile.Length; i++) { ldf.LoadedDAMValues[i] = rawDAMFile[i].Split('\t'); } ldf.LoadedDAMValues = ErrorDataChecking(ldf.LoadedDAMValues); //Null-t kap vissza, ha a felhasználó nem akarja folytatni ezzel a DAM-mal if (ldf.LoadedDAMValues != null) { DAMFiles.Add(ldf); ListOfDAMs.Items.Refresh(); } } } } else { MessageBox.Show("You reached the maximum number of DAMs for this experiment!", "DAM number exceeded", MessageBoxButton.OK, MessageBoxImage.Error); } }
private void CalculateTimeValues(LoadedDAMFile DAMFile) { for (int i = 0; i < DAMFile.LoadedDAMValues.Length; i++) { string[] timeFormatted = DAMFile.LoadedDAMValues[i][2].Split(':'); if (timeFormatted[1] == "00" && timeFormatted[2] == "00") { TimeValues.WholeHour = timeFormatted; TimeValues.WholeHourRow = i; TimeValues.FirstDayDate = DAMFile.LoadedDAMValues[i][1]; break; } } }
public static void NumberOfDaysAndNumberOfRowsInADay(LoadedDAMFile DAMFile) { NumberOfRowsInAnHour = MinutesOfHour / ExperimentSettingsValues.BinLength; //Mennyi sorból áll egy óra NumberOfRowsInADay = NumberOfRowsInAnHour * HoursOfDay; //Mennyi sorból áll egy nap int currentNumberOfDays = -1; //Az első teljes óra még nem jelent egy napot, hiszen onnan kezdjük csak a számolást int currentNumberOfHours = 0; //Az eddigi napok alapján lehet számolni az utolsó napot meghatározó egész óráig az órák számát. Utána egyesével minden egész órát meg kell figyelni. int actualRowNumber = WholeHourRow; //Először a teljes óra sorának az értékét kapja és mindig egy napnyi sorral nő az értéke és megnézi, hogy van-e még eleme ott a DAM fájlnak. Ha van, akkor az megint egy teljes óra és egy újabb nap, ha nincs, akkor nincs több nap while (true) //Ez a ciklus a napok megszámolásához kell, a napok számának megadásához { try { string temp = DAMFile.LoadedDAMValues[actualRowNumber][0]; currentNumberOfDays++; actualRowNumber += NumberOfRowsInADay; } catch { currentNumberOfHours = currentNumberOfDays * HoursOfDay; //Eddig ennyi órát lehetett összeszámolni a rendelkezésre álló teljes napok alapján while (true) //Ez a ciklus az órák megszámolásához kell, az utolsó egész óra mentéséhez { try { actualRowNumber += NumberOfRowsInAnHour; string temp = DAMFile.LoadedDAMValues[actualRowNumber][0]; currentNumberOfHours++; } catch { break; } } break; } } for (int i = 0; i < currentNumberOfHours; i++) //Feltölti a kiírásra szánt órák listáját { ExactHourValueForHours.Add(CalculateHours(i)); } int indexOfHourInDay = 0; //Ez az index ahhoz, hogy a String tömbben hol járunk épp, tehát hogy a 24-ből hanyadik óránál tartunk a napból. for (int i = WholeHourRow; i < WholeHourRow + NumberOfRowsInADay; i++) //Egyesével végigmegy a DAM fájl értékein egy napra tekintve az első oszlopban és megnézi, hogy a sötét és világos sorok hogyan vannak felosztva az órákban. { if (DAMFile.LoadedDAMValues[i][9] == "0") //Az adott sor sötét { if (DarkLightValuesForHours[indexOfHourInDay] != "Light" && DarkLightValuesForHours[indexOfHourInDay] != "L+D") //Ha ez az óra eddig vagy semmi volt, vagy sötét, akkor sötét lesz { DarkLightValuesForHours[indexOfHourInDay] = "Dark"; } else //Ha ez az óra eddig világos volt, akkor közös lesz { DarkLightValuesForHours[indexOfHourInDay] = "L+D"; } } else if (DAMFile.LoadedDAMValues[i][9] == "1") //Az adott sor világos { if (DarkLightValuesForHours[indexOfHourInDay] != "Dark" && DarkLightValuesForHours[indexOfHourInDay] != "D+L") //Ha ez az óra eddig vagy semmi volt, vagy világos, akkor világos lesz { DarkLightValuesForHours[indexOfHourInDay] = "Light"; } else //Ha ez az óra eddig sötét volt, akkor közös lesz { DarkLightValuesForHours[indexOfHourInDay] = "D+L"; } } if (i != WholeHourRow && (i - WholeHourRow) % NumberOfRowsInAnHour == 0) //Legelső elem egész óra lesz, de ott még nem kell tovább lépnie a D/L tömb következő elemére, hiszen ez lesz az első elem benne { indexOfHourInDay++; } } NumberOfDays = currentNumberOfDays; NumberOfHours = currentNumberOfHours; }