Laden...

Speichern von Werten einer DLL mit Listview

Erstellt von Arthuro vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.184 Views
A
Arthuro Themenstarter:in
147 Beiträge seit 2007
vor 16 Jahren
Speichern von Werten einer DLL mit Listview

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();
            }
        }       
    }
}
49.485 Beiträge seit 2005
vor 16 Jahren

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

A
Arthuro Themenstarter:in
147 Beiträge seit 2007
vor 16 Jahren

Ja das weiß ich, aber ich weiß gerade nicht wie ich die subitems davon rauskriege hab schon einiges probiert...

49.485 Beiträge seit 2005
vor 16 Jahren

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

A
Arthuro Themenstarter:in
147 Beiträge seit 2007
vor 16 Jahren

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 ?

49.485 Beiträge seit 2005
vor 16 Jahren

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