Guten Tag,
Ich hab ein kleines Problem, wenn ich bei meinem ToolStrip auf Speichern klicke erhalte ich nur den Dateinamen nicht die anderen beiden werte wie Dateiversion und Datum.
Das ganze sieht so aus Dateiname.dll 1.2.4 29.05.07
Ich kriege bei meinem Programm aber nur den Dateinamen raus wenn ich das in ein Textdokument speichern möchte.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;
using System.Collections;
using System.Reflection;
using System.Runtime.CompilerServices;
namespace DateiVersionDLL
{
/// <summary>
///
/// </summary>
public partial class Form1 : Form
{
FolderBrowserDialog dlgFileOpen = new FolderBrowserDialog();
/// <summary>
///
/// </summary>
public Form1()
{
InitializeComponent();
}
/// <summary>
/// Wird das Öffnen Toolstrip betätigt so wird
/// </summary>
private void öffnenToolStripMenuItem_Click(object sender, EventArgs e)
{
dlgFileOpen.Description = "Öffnen eines Verzeichnissses";
dlgFileOpen.ShowDialog();
try
{
string[] arDateien;
string sSelectedPath = dlgFileOpen.SelectedPath.ToString();
List<string> sExtensions = new List<string>();
arDateien = Directory.GetFileSystemEntries(sSelectedPath);
arDateien.Length.ToString();
foreach (string s_arDateien in arDateien)
{
if (Path.GetExtension(s_arDateien) == ".dll")
{
sExtensions.Add(s_arDateien);
}
}
foreach (string s_filename in sExtensions)
{
BuildList(s_filename);
}
}
catch(Exception ex)
{
Trace.WriteLine(ex.Message);
}
}
/// <summary>
/// Die Funktion BuildList die den Parameter s_filename annimmt
/// </summary>
int BuildList(string s_filename)
{
FileVersionInfo VersionsInfo = FileVersionInfo.GetVersionInfo(s_filename);
string DateiVersion = VersionsInfo.FileVersion.ToString();
string DateiName = VersionsInfo.OriginalFilename.ToString();
DateTime time = File.GetLastWriteTimeUtc(s_filename);
ListViewItem liste = null;
liste = listView1.Items.Add(s_filename);
liste.SubItems.Add(DateiVersion);
liste.SubItems.Add(time.ToString());
return 0;
}
/// <summary>
///
/// </summary>
private void speichernUnterToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog dlgSpeichern = new SaveFileDialog();
dlgSpeichern.Filter = "Textdatei | *.txt";
if (dlgSpeichern.ShowDialog() == DialogResult.OK)
{
foreach (ListViewItem item in listView1.Items)
{
string listname = item.Text.ToString();
File.AppendAllText(dlgSpeichern.FileName, item.Text.ToString() + ";" + item.SubItems[0].Text.ToString() + ";" + item.SubItems[0].Text.ToString());
}
//StreamWriter swWriteContext = File.CreateText(Application.StartupPath + "\\DLL-Version1.txt");
//swWriteContext.WriteLine(listname);
//swWriteContext.WriteLine(as);
//swWriteContext.WriteLine(as);
//Den Dateizugriff beenden
//swWriteContext.Close();
}
}
}
}
Hallo Arthuro,
Ich kriege bei meinem Programm aber nur den Dateinamen raus wenn ich das in ein Textdokument speichern möchte.
du meinst, dass jeweils dreimal der Dateiname dasteht? Dann solltest du man die Indexwerte beim Zugriff auf item.SubItems prüfen.
herbivore
Ja das weiß ich, aber ich weiß gerade nicht wie ich die subitems davon rauskriege hab schon einiges probiert...
Hallo Arthuro,
an sich ist es schon richtig. Nur greifst du beides mal auf den Index 0 zu. Du musst hier die richtigen Werte einsetzen.
herbivore
Ahja, habs jetzt auch rausgefunden
File.AppendAllText(dlgSpeichern.FileName, item.Text.ToString() + ";" + item.SubItems[1].Text.ToString() + ";" + item.SubItems[2].Text.ToString());
Eine frage hätt ich da noch, dadurch wird alles hinterander abgetippt.
Ist es möglich nach einem durchlaufen das der eine zeile tiefer springt ?
Hallo Arthuro,
Ahja, habs jetzt auch rausgefunden
solche Fehler musst du gleich selber finden lernen.
Ist es möglich nach einem durchlaufen das der eine zeile tiefer springt ?
Verwende vor der Schleife File.AppendText und in der Schleife StreamWriter.WriteLine.
Sind aber alles Grundlagen. Bitte eignen dir sowas selber an.
Siehe auch [Tutorial] Alles über Dateien 2.2
herbivore