2014-11-25 10 views
0

Я получаю сообщение об ошибке, когда меняю свое местоположение на свое местоположение в сети. Это произошло только для одной папки. Моя ошибка: index and length must refer to location with in sub-string.Получение ошибки при изменении местоположения моей папки

Ошибка:

enter image description here

Фрагмент кода:

private void list() 
{ 
List<string> stFileNames = new List<string>(); 
     stFileNames.AddRange(arrRelease); 
     foreach (var r in arrDraft) 
     { 
      if (stFileNames.FindAll(m => Path.GetFileNameWithoutExtension(m).ToUpper().Substring(0, 8).Equals(Path.GetFileNameWithoutExtension(r).ToUpper().Substring(0, 8))).Count == 0) 
     //getting error in the above line.. Only when i am giving to one particular location 
     /which i need then that time i am getting this error. 
       stFileNames.Add(r); 
     } 

     dt.Columns.Add("Drawing Number"); 
     dt.Columns.Add("Drawing Path"); 
     dt.Columns.Add("Draft Path"); 
     dt.Columns.Add("Release Path"); 
     dt.Columns.Add("Error"); 
     dt.Columns.Add("Archive"); 

     List<FileDetails> lst = new List<FileDetails>(); 
     //matching files according to the realse folder 
     foreach (string f in stFileNames) 
     { 
      Finder finder = new Finder(Path.GetFileName(f).Substring(0, 8)); 
      string abc = Array.Find(arrDraft, finder.Match); 
      string def = Array.Find(arrRelease, finder.Match); 
      string cdf = Array.Find(arrDrawing, finder.Match); 
      //matching file in the location Drawing 
      string ghi = Array.Find(arrArchive, finder.Match); 
      //matching file in the location Archieve 
      dt.Rows.Add(Path.GetFileNameWithoutExtension(f), cdf, abc, def, String.Empty, ghi); 
     } 
     dataGridView1.DataSource = dt; 
    } 
+0

@alykins 'Path.GetFileNameWithoutExtension (м) .ToUpper(). Substring (0, 8) .Equals (Path.GetFileNameWithoutExtension (r) .ToUpper(). Substring (0, 8))). Count == 0) ' –

+0

Ваше имя файла не длиннее 8 символов и бросает эту ошибку. Да, простите, Стейси. Я видел ваш комментарий в коде после того, как я опубликовал этот вопрос - видел его сейчас. – alykins

+1

перейдите на эту строку и посмотрите на членов этого списка. Один или несколько из них будут длиннее 8 символов. Возможно, вы сможете изменить его, чтобы быть чем-то вроде 'ithoutExtension (m) .Where (m.length> 7) .ToUpper()', но этот синтаксис выключен - я не знаю, что у него есть; кто-то другой может это знать лучше – alykins

ответ

1

Я предполагаю, что имя файла в пути, который вы используете под 8 символов и поэтому вызов подстроки (0,8) не работает.

Прежде чем вызывать подстроку, вам необходимо проверить длину ваших имен файлов. Если предположить, что имена файлов до 8 символов, которые вы просто хотите, чтобы все имя файла, вы можете сделать что-то вроде:

var charactersToRead = Path.GetFileNameWithoutExtension(m).length < 8 ? Path.GetFileNameWithoutExtension(m).length : 8 

, а затем изменить вызовы методов по линиям Substring(0, charactersToRead)

+0

Гораздо более полезный ИМО- +1 – alykins

Смежные вопросы