| 
				
				Как пропустить первую строку
				 | 
 | 
| SSS22 | Дата: Четверг, 09 Января 2020, 14:19 | Сообщение # 1 |  
| 
 был не раз 
Сейчас нет на сайте 
 
 | Добрый день форумчане! Недавно начал изучать C# требуется по ходу работы.  Задача следующая: Считать данные из CSV файла (строки). Данные записать в архивную базу данных с меткой времени. Код который написал - рабочий. В архиве все данные вижу корректно, но есть проблемы корректировки: Первая строка файла содержит некорректные данные - не числовые, типа заголовок файла. В коде нужно как-то пропускать первую строку в цикле((( в этом собственно проблема. Думаю использовать "continue" если строка == первой, но надо какимто образом считывать номер строки...((?или както подругому.
  Вот данные CSV файла 1 строка: DATATIME;Parametr1;Parametr2;Parametr3 //вот эту строку пропускать нужно в цикле 2 строка: 08.01.2020 6:15:00;-1;103561;-1,7 3 строка: 08.01.2020 6:30:00;-1;58664;-1,1 4 строка: 08.01.2020 6:45:00;-4;25622;-1,9 .... 96 строка: 08.01.2020 19:45:00;-9;2562;-0,9
  Вот сам код С#
  using System; using MasterSCADA.Script.FB; using MasterSCADA.Hlp; using FB; using System.Linq; using System.IO;
  public partial class ФБ : ScriptBase { bool? M=false;  public override void Execute()  {   if (Считать==true && M==false && Файл!=string.Empty && Файл!=null)  {   Ошибка=false;  try   {  	 using(var file = new StreamReader(Файл)) //открытие файла для чтения 	 { 	 var line=file.ReadLine();
  	 while (line!=null) 	 {	  	  	 String[] substrings = line.Split(';'); //разбор строки на составляющие				 			var Time = DateTime.Parse(substrings[0]); // преобразую время 			for (int i=1;i<=3;i++) // считаю столбцы 			{ 				SetValue("Параметр"+i.ToString(), new PinValue(Double.Parse(substrings[i]),Time)); // запись параметров 			} 			 			line=file.ReadLine();//считывание строк из файла 	 }  	  		} 	}		 	catch (Exception ex) 		{ 			Ошибка=true; 			ReportError (ex.Message); //вызов метода для записи сообщения в лог  		} 	} 	M=Считать;  }    void ReportError (string Error) //данный метод записывает сообщения в лог   {  	 var ScriptName=HostFB.TreeItemHlp.ToString(); //имя скрипта 	 HostFB.TreeItemHlp.Project.ErrorTracer.ReportError(string.Format("{0}: {1}",ScriptName,Error));  }   }
  подчеркнутым выделил где сам код считывания происходит.  HELP PLEASE!) как пропустить первую строку данных файла
 |  
| 
 | 
 |    | 
| Ordan | Дата: Пятница, 10 Января 2020, 01:11 | Сообщение # 2 |  
 
Главный зомби 
Сейчас нет на сайте 
 
 | почему бы просто не начать читать сразу со второй? ну или можешь тупо объявить параметр а=0 а каждый цикл делать а++ и если у тебя а==0 то пропускай заход
  Цитата недели: Из-за леса, из-за гор, кишки, месиво, хардкор. (Берсерк ТВ-2) 
   Мои проекты ТЫК   Мои видяхи на ютубэ ТЫК 
   Если ты споришь с идиотом, вероятно тоже самое делает и он.
 |  
| 
 | 
 |    | 
| SSS22 | Дата: Пятница, 10 Января 2020, 12:39 | Сообщение # 3 |  
| 
 был не раз 
Сейчас нет на сайте 
 
 | Цитата Ordan (  )   почему бы просто не начать читать сразу со второй? ну или можешь тупо объявить параметр а=0 а каждый цикл делать а++ и если у тебя а==0 то пропускай заход  
  логично конечно. так тоже думаю делать. но не силен в С# коде.
  поэтому и прошу помочь в написании
 |  
| 
 | 
 |    | 
| Ordan | Дата: Пятница, 10 Января 2020, 14:15 | Сообщение # 4 |  
 
Главный зомби 
Сейчас нет на сайте 
 
 | int a=0; while (line!=null) {  if (a==0) continue; a++; }
  Цитата недели: Из-за леса, из-за гор, кишки, месиво, хардкор. (Берсерк ТВ-2) 
   Мои проекты ТЫК   Мои видяхи на ютубэ ТЫК 
   Если ты споришь с идиотом, вероятно тоже самое делает и он.
 |  
| 
 | 
 |    | 
| drcrack | Дата: Пятница, 10 Января 2020, 14:26 | Сообщение # 5 |  
| 
 старожил 
Сейчас нет на сайте 
 
 | можно короче — просто добавить file.ReadLine():
 
 Код using(var file = new StreamReader(Файл)) {
    file.ReadLine();/// ←←← пропуск строки
    var line = file.ReadLine();
    while (line!=null) {  
 
 Сообщение отредактировал drcrack - Пятница, 10 Января 2020, 14:29  |  
| 
 | 
 |    | 
| SSS22 | Дата: Пятница, 10 Января 2020, 23:06 | Сообщение # 6 |  
| 
 был не раз 
Сейчас нет на сайте 
 
 | Цитата drcrack (  )   можно короче — просто добавить file.ReadLine(): 
  работает!!! Спасибо! немного модифицировал еще код....нужно чтобы параметр1 обрабатывать...делить на 100000...сделал условие..но както неправильно...записываются в архив не каждая строка, а через две((( т.е. данные за 6:15 а потом сразу 7:00. а должно быть 6:15...6:30..6:45...7:00....и т.д. вот модифицированный код:
   {  	 using(var file = new StreamReader(Файл)) //открытие файла для чтения 	 { 	 file.ReadLine(); //скрыть первую строку 	 var line=file.ReadLine();
  	 while (line!=null) 	 {	  	  	 String[] substrings = line.Split(';'); //разбор строки на составляющие				 			var Time = DateTime.Parse(substrings[0]); 			var Time1 = Time.ToUniversalTime(); 			for (int i=1;i<=3;i++) 		 { 			if (i==1)  			{ 			SetValue("Параметр"+i.ToString(), new PinValue(Double.Parse(substrings[i])/100000,Time1)); // делим  			} 			if (i==2)  			{  			SetValue("Параметр"+i.ToString(), new PinValue(Double.Parse(substrings[i]),Time1)); 			} 			if (i==3) 			{  			SetValue("Параметр"+i.ToString(), new PinValue(Double.Parse(substrings[i]),Time1)); 			} 			line=file.ReadLine();//считывание строк из файла 	 }  	 } 		} 	}		 	.......
  подскажите пожалуйста что неправильно наделал то? Нужно чтобы первый столбец (parametr1) делился на 100000, а другие 2 и 3 записывались как есть без матем. обработки.
 |  
| 
 | 
 |    | 
| drcrack | Дата: Суббота, 11 Января 2020, 04:50 | Сообщение # 7 |  
| 
 старожил 
Сейчас нет на сайте 
 
 | так у тебя line=file.ReadLine(); внутри for 1-3
 
 Код for (int i=1;i<=3;i++) { /// всякое разное line=file.ReadLine();// внутри цикла! } // ← а должно быть тут }  
 
 Сообщение отредактировал drcrack - Суббота, 11 Января 2020, 05:36  |  
| 
 | 
 |    | 
| SSS22 | Дата: Суббота, 11 Января 2020, 09:14 | Сообщение # 8 |  
| 
 был не раз 
Сейчас нет на сайте 
 
 | Цитата drcrack (  )   так у тебя line=file.ReadLine(); внутри for 1-3 
  )) точно подметили ..исправил все отлично стало   ! Благодарствую!
 |  
| 
 | 
 |    |