Moin,
wie kann ich ein array mit sich selbst vergleichen ob evtl ein doppelten wert enthalten ist, ohne das ich die werte des gleichen Indexes vergleiche?
i = 0;
foreach (string Length in arrayLength)
{
if (Length == arrayLength[i])
{
dataGridView.Rows.Add();
oRows[j].Cells[0].Value = arrayDirectory[i];
oRows[j].Cells[1].Value = arrayFileName[i];
oRows[j].Cells[2].Value = arrayLength[i];
j++;
}
i++;
}
Danke für eure Hilfe.
Gruß Steffen
Lieber heimlich schlau, als unheimlich dumm!
Es gibt mehrere Möglichkeiten, falls Du ein Sortierkriterium hast, sortier die Liste.
Ansonsten z.B. 2 verschachtelte Schleifen mit Laufvariablen i und j und überprüfe
ob i != j.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Kannst du mir mal bitte ein bespiel zeigen denn ich packs irgendwie nicht.
Danke.
Gruß Steffen
Lieber heimlich schlau, als unheimlich dumm!
for(int i = 0;i<array.length;i++)
{
for(int j = i+1;j < array.length;j++)
{
//hier vergleichen
if(array[i] == array[j])
MessageBox.Show("Damn!");
}
}
Also dein Code funktioniert nicht ich hab 3 dateien mit o byte in drei verschiedenen verzeicnissen mit dem gleichen namen und mir werde Dateien die definitiv nicht doppelt sind gelistet.
Hier mein code:
double SizeOfAllFiles = 0;
string Unit = "Byte";
int NumberOfFiles = 0;
List<string> arrayDirectory = new List<string>();
List<string> arrayFileName = new List<string>();
List<string> arrayLength = new List<string>();
int row = 0;
dataGridView.Rows.Clear();
dataGridView.ClearSelection();
folderBrowserDialog.ShowDialog();
toolStripStatusLabel.Text = "Suchlauf wurde gestartet. Bitte warten.";
string[] FilesInDir = Directory.GetFiles(folderBrowserDialog.SelectedPath, "*", SearchOption.AllDirectories);
foreach (string myFile in FilesInDir)
{
FileInfo File = new FileInfo(Path.GetFullPath(myFile)); // Extrahiert die Dateiinformationen aus der aktuellen Datei
arrayDirectory.Add(File.Directory.ToString());
arrayFileName.Add(File.Name.ToString());
arrayLength.Add(File.Length.ToString());
SizeOfAllFiles += File.Length;
NumberOfFiles++;
}
DataGridViewRowCollection oRows = dataGridView.Rows;
for (int i = 0; i < arrayFileName.Count; i++)
{
for (int j = i + 1; j < arrayFileName.Count; j++)
{
if (arrayFileName[i] == arrayFileName[j])
{
dataGridView.Rows.Add();
oRows[row].Cells[0].Value = arrayDirectory[j];
oRows[row].Cells[1].Value = arrayFileName[j];
oRows[row].Cells[2].Value = arrayLength[j];
row++;
}
}
}
while (SizeOfAllFiles >= 1024)
{
SizeOfAllFiles = SizeOfAllFiles / 1024;
if (Unit == "MB")
Unit = "GB";
if (Unit == "KB")
Unit = "MB";
if (Unit == "Byte")
Unit = "KB";
}
if (Unit == "KB" && SizeOfAllFiles <= 10)
SizeOfAllFiles = Math.Round(SizeOfAllFiles, 2);
if (Unit == "KB" && SizeOfAllFiles > 10)
SizeOfAllFiles = Math.Round(SizeOfAllFiles, 1);
if (Unit == "MB" && SizeOfAllFiles <= 10)
SizeOfAllFiles = Math.Round(SizeOfAllFiles, 2);
if (Unit == "MB" && SizeOfAllFiles > 10)
SizeOfAllFiles = Math.Round(SizeOfAllFiles, 1);
if (Unit == "GB" && SizeOfAllFiles <= 10)
SizeOfAllFiles = Math.Round(SizeOfAllFiles, 2);
if (Unit == "GB" && SizeOfAllFiles > 10)
SizeOfAllFiles = Math.Round(SizeOfAllFiles, 1);
labelNumberOfFolders.Text = "Anzahl der Unterordner: " + Directory.GetDirectories(folderBrowserDialog.SelectedPath, "*", SearchOption.AllDirectories).Length.ToString();
labelNumberOfFiles.Text = "Anzahl der Dateien: " + NumberOfFiles.ToString();
labelSizeOfAllFiles.Text = "Gesamtgröße: " + SizeOfAllFiles.ToString() + " " + Unit;
toolStripStatusLabel.Text = "Suchlauf erfolgreich abgeschlossen.";
Danke für eure hilfe.
Gruß Steffen
Lieber heimlich schlau, als unheimlich dumm!