Changeset 6002


Ignore:
Timestamp:
May 20, 2014, 11:01:53 AM (8 years ago)
Author:
kopal
Message:

added Exception Handler to AnalysisMonoalphabeticSubstitution UpdateKeyDisplay method
fixes #847

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/AnalysisMonoalphabeticSubstitution/AnalysisMonoalphabeticSubstitution.cs

    r5996 r6002  
    433433        private void UpdateKeyDisplay(KeyCandidate keyCan)
    434434        {
    435             bool update = false;
    436 
    437             // Add key if key does not already exists
    438             if (!this.keyCandidates.Contains(keyCan))
    439             {
    440                 this.keyCandidates.Add(keyCan);
    441                 this.keyCandidates.Sort(new KeyCandidateComparer());
    442 
    443                 if (this.keyCandidates.Count > 20)
    444                 {
    445                     this.keyCandidates.RemoveAt(this.keyCandidates.Count - 1);
    446                 }
    447                 update = true;
    448             }
    449             else
    450             {
    451                 int index = this.keyCandidates.IndexOf(keyCan);
    452                 KeyCandidate keyCanAlreadyInList = this.keyCandidates[index];
    453                 if (keyCan.DicAttack == true)
    454                 {
    455                     if (keyCanAlreadyInList.DicAttack == false)
     435            try
     436            {
     437                bool update = false;
     438
     439                // Add key if key does not already exists
     440                if (!this.keyCandidates.Contains(keyCan))
     441                {
     442                    this.keyCandidates.Add(keyCan);
     443                    this.keyCandidates.Sort(new KeyCandidateComparer());
     444
     445                    if (this.keyCandidates.Count > 20)
    456446                    {
    457                         keyCanAlreadyInList.DicAttack = true;
    458                         update = true;
     447                        this.keyCandidates.RemoveAt(this.keyCandidates.Count - 1);
    459448                    }
    460                 }
    461                 if (keyCan.GenAttack == true)
    462                 {
    463                     if (keyCanAlreadyInList.GenAttack == false)
     449                    update = true;
     450                }
     451                else
     452                {
     453                    int index = this.keyCandidates.IndexOf(keyCan);
     454                    KeyCandidate keyCanAlreadyInList = this.keyCandidates[index];
     455                    if (keyCan.DicAttack == true)
    464456                    {
    465                         keyCanAlreadyInList.GenAttack = true;
    466                         update = true;
     457                        if (keyCanAlreadyInList.DicAttack == false)
     458                        {
     459                            keyCanAlreadyInList.DicAttack = true;
     460                            update = true;
     461                        }
    467462                    }
    468                 }
    469             }
    470 
    471             // Display output
    472             if (update)
    473             {
    474                 this.plaintext = this.keyCandidates[0].Plaintext;
    475                 OnPropertyChanged("Plaintext");
    476 
    477                 this.plaintext_alphabet_output = CreateAlphabetOutput(this.keyCandidates[0].Key, this.ctAlphabet);
    478                 OnPropertyChanged("Plaintext_Alphabet_Output");
    479 
    480                 ((AssignmentPresentation)Presentation).Dispatcher.BeginInvoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    481                 {
    482                     ((AssignmentPresentation)Presentation).entries.Clear();
    483 
    484                     for (int i = 0; i < this.keyCandidates.Count; i++)
     463                    if (keyCan.GenAttack == true)
    485464                    {
    486                         KeyCandidate keyCandidate = this.keyCandidates[i];
    487 
    488                         ResultEntry entry = new ResultEntry();
    489                         entry.Ranking = i.ToString();
    490                         entry.Text = keyCandidate.Plaintext;
    491                         entry.Key = keyCandidate.Key_string;
    492 
    493                         if (keyCandidate.GenAttack == true && keyCandidate.DicAttack == false)
     465                        if (keyCanAlreadyInList.GenAttack == false)
    494466                        {
    495                             entry.Attack = Resources.GenAttackDisplay;
     467                            keyCanAlreadyInList.GenAttack = true;
     468                            update = true;
    496469                        }
    497                         else if (keyCandidate.DicAttack == true && keyCandidate.GenAttack == false)
     470                    }
     471                }
     472
     473                // Display output
     474                if (update)
     475                {
     476                    this.plaintext = this.keyCandidates[0].Plaintext;
     477                    OnPropertyChanged("Plaintext");
     478
     479                    this.plaintext_alphabet_output = CreateAlphabetOutput(this.keyCandidates[0].Key, this.ctAlphabet);
     480                    OnPropertyChanged("Plaintext_Alphabet_Output");
     481
     482                    ((AssignmentPresentation) Presentation).Dispatcher.BeginInvoke(DispatcherPriority.Normal,
     483                        (SendOrPostCallback) delegate
    498484                        {
    499                             entry.Attack = Resources.DicAttackDisplay;
    500                         }
    501                         else if (keyCandidate.GenAttack == true && keyCandidate.DicAttack == true)
    502                         {
    503                             entry.Attack = Resources.GenAttackDisplay + ", " + Resources.DicAttackDisplay;
    504                         }
    505 
    506                         double f = Math.Log10(Math.Abs(keyCandidate.Fitness));
    507                         entry.Value = string.Format("{0:0.00000} ", f);
    508                         ((AssignmentPresentation)Presentation).entries.Add(entry);
    509 
    510                     }
    511                 }, null);
     485                            try
     486                            {
     487                                ((AssignmentPresentation) Presentation).entries.Clear();
     488
     489                                for (int i = 0; i < this.keyCandidates.Count; i++)
     490                                {
     491                                    KeyCandidate keyCandidate = this.keyCandidates[i];
     492
     493                                    ResultEntry entry = new ResultEntry();
     494                                    entry.Ranking = i.ToString();
     495                                    entry.Text = keyCandidate.Plaintext;
     496                                    entry.Key = keyCandidate.Key_string;
     497
     498                                    if (keyCandidate.GenAttack == true && keyCandidate.DicAttack == false)
     499                                    {
     500                                        entry.Attack = Resources.GenAttackDisplay;
     501                                    }
     502                                    else if (keyCandidate.DicAttack == true && keyCandidate.GenAttack == false)
     503                                    {
     504                                        entry.Attack = Resources.DicAttackDisplay;
     505                                    }
     506                                    else if (keyCandidate.GenAttack == true && keyCandidate.DicAttack == true)
     507                                    {
     508                                        entry.Attack = Resources.GenAttackDisplay + ", " + Resources.DicAttackDisplay;
     509                                    }
     510
     511                                    double f = Math.Log10(Math.Abs(keyCandidate.Fitness));
     512                                    entry.Value = string.Format("{0:0.00000} ", f);
     513                                    ((AssignmentPresentation) Presentation).entries.Add(entry);
     514
     515                                }
     516                            }
     517                            catch (Exception ex)
     518                            {
     519                                GuiLogMessage("Exception during UpdateKeyDisplay Presentation.Dispatcher: " + ex.Message, NotificationLevel.Error);
     520                            }
     521                        }, null);
     522                }
     523            }
     524            catch (Exception ex)
     525            {
     526                GuiLogMessage("Exception during UpdateKeyDisplay: " +ex.Message,NotificationLevel.Error);
    512527            }
    513528        } 
Note: See TracChangeset for help on using the changeset viewer.