Рейтинг:
2
Jinto Jacob
что вы подразумеваете под словами "если я выберу четыре файла, то только 3 файла будут зашифрованы и сохранены в папке, но я получаю счет как 4 зашифрованных файла."
Если вы пытаетесь зашифровать один файл меньше, чем общее количество файлов в сетке, то проблема заключается в том, что for
петля
for (i=0;i<dataGridView1.Rows.Count;i++){
вы начинаете его с i=0 и делаете это до тех пор, пока
i<dataGridView1.Rows.Count
т. е. если у вас есть 4 строки, то счет равен 4, и вы выполняете операцию для i = 0 до i=3 (4 раза). пробовать
for (i=1;i<dataGridView1.Rows.Count;i++){
Зачем это нужно для цикла
int count = 0;
for (i=0;i<dataGridView1.Rows.Count;i++){
if(Convert.ToBoolean(dataGridView1.Rows[i].Cells[0].Value))
{
count++;
}
}
если вы хотите сделать подсчет вы можете сделать это внутри самого первого цикла for
int count = 0
for ( i = 0; i < dataGridView1.RowCount; i++) {
try {
if (Convert.ToBoolean(dataGridView1.Rows[i].Cells[0].Value)) {
string SourceFilePath = dataGridView1.Rows[i].Cells[1].Value.ToString();
FileName = new System.IO.FileInfo(SourceFilePath).Name;
Encryption.AES a = new AES();
TargetFilePath = subFolder + @"\" + FileName;
FileInfo file1 = new FileInfo(SourceFilePath);
a.EncryptFile(SourceFilePath, TargetFilePath, Hidkey[0, 1].ToString());
btnopenEncfolder.Enabled=true;
count++;
//File.Delete(SourceFilePath);
}
} catch (Exception e2) {
MessageBox.Show(e2.Message);
}
}
Member 13846964
сэр, я написал этот код, чтобы получить подсчет выбранных файлов в datagridview при шифровании. int count = 0;
for (i=0;i<dataGridView1.Rows.Граф;i++){
если(конвертировать.ToBoolean(dataGridView1.Rows[i].Ячейки[0].Значение))
{
считать++;
}
}
Рейтинг:
19
Jochen Arndt
Просто увеличьте количество при выполнении шифрования соответственно шифрование было успешным:
int selectedForEncrypt = 0;
int encrypted = 0;
for ( i = 0; i < dataGridView1.RowCount; i++) {
if (Convert.ToBoolean(dataGridView1.Rows[i].Cells[0].Value)) {
try {
selectedForEncrypt++;
// Do the encryption here
// ...
// Encryption was successful when no exception occured
// Otherwise this will not get executed
encrypted++;
}
catch (Exception e2) {
MessageBox.Show(e2.Message);
}
}
}
MessageBox.Show(encrypted + " file(s) sucessfully encrypted");
Jochen Arndt
Пожалуйста, определите "это не работает".
Мое решение должно подсчитывать количество успешно зашифрованных файлов при условии, что другой код работает должным образом (создает исключения при ошибках). Но я не могу проверить это, потому что у меня нет доступа к вашим данным.
Чтобы уточнить мой ответ:
Считайте при выполнении операций. Ваш начальный код подсчитывает то, что хранится в моей переменной selectedForEncrypt, которая будет иметь другое значение, чем зашифрованное, когда шифрование(ы) завершится неудачей.
Member 13846964
сэр, мне не становится количество файлов в зашифрованном виде.например я selcting 3 файлов в datgaridview но когда я нажимаю на кнопку ecnrypt только один или два файла становится зашифровано, но я получаю сообщение в виде 3 файлов в зашифрованном виде.
Jochen Arndt
Даже с моим кодом?
Тогда шифрование не бросает исключений на ошибки. Затем вы должны обнаружить сбой с помощью других методов, таких как возвращаемые значения.
Но опять же:
Это было неясно из вашего вопроса и требует знания об используемых AES.Метод EncryptFile (), который отсутствует.
Member 13846964
мои файлы также не шифруются, когда я компилирую приведенный выше код
Jochen Arndt
Файлы не будут шифроваться при компиляции кода. Они будут зашифрованы при выполнении кода, и ошибок не будет.
Но вы спросили не о проблеме с вашим шифрованием, а о подсчете. Если у вас возникли проблемы с кодом шифрования, спросите об этом. И только потому, что это не имеет значения, выполняется ли такой неудачный код в цикле или нет.
Но на этот вопрос нельзя ответить здесь, не зная о реализации AES.EncryptFile() и наличие полных сообщений об ошибках.
Member 13846964
сэр, мой шифровальный код работает нормально.я пытаюсь подсчитать зашифрованные файлы noof.если в режиме реального времени, если какой-либо файл не был зашифрован правильно, он должен показать сообщение об ошибке, что файл не зашифрован и файлы remiang зашифрованы, я пытаюсь этот сценарий
Jochen Arndt
Ваш первый комментарий из этого суб-потока:
- мои файлы не шифруются."
находится в противоречии с
"мой код шифрования работает нормально"
Пожалуйста, спросите себя:
Как я могу определить, когда шифрование терпит неудачу?
Если это произойдет, где, когда и как я могу показать сообщение об ошибке?
Если вы можете ответить на эти вопросы, реализация необходимого кода не должна быть проблемой.
Если вы не знаете, что именно происходит, выполните свой код из отладчика, устанавливающего точки останова (например, сразу за оператором for loop).
Member 13846964
Привет сэр, у меня есть одно сомнение , что ваш код работает, но, например, если я выберу 3 файла и в зашифрованной папке я получу только 2 файла, но количество, которое я получаю, - это 3 зашифрованных файла, но в соответствии с вашим предложением/кодом он должен получить только два зашифрованных файла, пожалуйста, предложите это..
Jochen Arndt
Я не могу предложить, потому что у меня нет доступа к вашей системе, вашей сетке и вашему экрану.
Только вы можете проверить, что происходит. Этот процесс называется отладкой. Единственная причина, по которой я могу думать о том, что мой код имеет неправильный счетчик, - это то, что я уже упоминал: когда нет исключения для (некоторых) ошибок.
Тогда виновником, вероятно, является функция a.EncryptFile ().