Autor Beitrag
MasterUller
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Mo 08.10.12 10:26 
Hallo...

Ich habe ein kleines Programm geschrieben, um Dateien von a nach b zu ziehen. Um diese Dateien schneller zu verschieben möchte ich meine Dateien noch in ein Zip verpacken, um es anschließend zu verschieben!

Hier mein Programmcode:

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        string sPfad = "", sDateiname = "";
        int i = 0, Buttonklickzähler = 0;

        List<string> DateinamenListe = new List<string>();
        List<string> PfadListe = new List<string>();


        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            Buttonklickzähler++;

                OpenFileDialog Dateiauswahl = new OpenFileDialog();
                Dateiauswahl.Filter = "";
                Dateiauswahl.Title = "Wähle die Datei";
                Dateiauswahl.ShowDialog();

                sPfad = Dateiauswahl.FileName;
                sDateiname = Dateiauswahl.SafeFileName;

                listView2.Items.Add(sDateiname);

                DateinamenListe.Add(sDateiname);

                PfadListe.Add(sPfad);

        }

        private void button2_Click(object sender, EventArgs e)
        {

            while (Buttonklickzähler > 0)
            {

                Buttonklickzähler--;
                System.IO.File.Move(PfadListe[Buttonklickzähler], "C:\\Test\\" + DateinamenListe[Buttonklickzähler]);

            } while (Buttonklickzähler < 0);

        }

        private void listView2_SelectedIndexChanged(object sender, EventArgs e)
        {
            
        }

    }
}


Momentan verschieb ich noch die Dateien normal ohne sie zu Zippen, aber dass soll sich ja ändern! Ich würde es gerne, wenn es möglich ist mit einen Button machen. Wenn man dann darauf Klickt Verzippt es die Dateien, die sich zu der Zeit im List<String> befinden Verzippen! Und wenn man dannach auf Senden Klickt versendet es die Zip-Datei.

Danke schonmal im vorraus für die Hilfe!
MasterUller
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Mo 08.10.12 16:49 
Ich hatte mal ein schönes kleines Projekt, was das konnte, hab das aber leider nicht gesichert, als ich meine Festplatte formatiert hab. Gefunden hab ich es jetzt auch nicht wieder, aber schau dir mal das an:

dotnetzip.codeplex.com/

Das sieht recht einfach aus.
Ich hab es mir mal auch geladen und vielleicht komme ich im Laufe des Tages ja noch dazu, das mal zu testen.
Wenn ja, dann schreib ich hier meine Meinung auf. ^^

Für diesen Beitrag haben gedankt: MasterUller
MasterUller Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Di 09.10.12 09:58 
Es sieht wirklich sehr einfach aus, aber ich habe keine Ahnung, was ich jetzt falsch mache... Habe es jetzt genau so eingebaut, wie sie es geschriebenen haben, aber es kommt eine Fehlermeldung: "Der Typ- oder Namespacename "ZipFile" konnte nicht gefunden werden. (Fehlt eine using-Direktive oder ein Assemblyverweis?)"

Und so sieht jetzt mein Programmcode aus:
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        string sPfad = "", sDateiname = "";
        int Buttonklickzähler = 0;

        List<string> DateinamenListe = new List<string>();
        List<string> PfadListe = new List<string>();

        string timeStamp = DateTime.Now.ToString(), Zeit = string.Format(timeStamp);

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            Buttonklickzähler++;

            OpenFileDialog Dateiauswahl = new OpenFileDialog();
            Dateiauswahl.Filter = "";
            Dateiauswahl.Title = "Wähle die Datei";
            Dateiauswahl.ShowDialog();

            sPfad = Dateiauswahl.FileName;
            sDateiname = Dateiauswahl.SafeFileName;

            listView2.Items.Add(sDateiname);
            DateinamenListe.Add(sDateiname);
            PfadListe.Add(sPfad);

        }

        private void button2_Click(object sender, EventArgs e)
        {

            using (ZipFile zip = new ZipFile())
            {

                while (Buttonklickzähler > 0)
                {
                    Buttonklickzähler--;

                    zip.AddFile(PfadListe);

                };

                zip.Save(Zeit);

            }

        }

        private void listView2_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

    }
}


Und der Fehler taucht immer bei dieser ZipFile auf.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 09.10.12 10:26 
Die Fehlermeldung enthält voraussichtlich die korrekte Fehlerbeschreibung und den Hinweis was es zu prüfen gilt. Bist du dem nachgegangen? Also insbesondere den Teil in den Klammern?
MasterUller Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Di 09.10.12 10:35 
Ich konnte nichts damit anfangen und die Google Suche hat leider nichts ergeben...
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 09.10.12 10:42 
Google wäre auch nur die 2.te Anlaufstelle. Die 1.te wäre die Dokumentation in der du nachlesen solltest was ein Namespace bzw. ein Assemblyverweis ist. Diese beiden Begriffe insbesondere der erste ist so grundsätzliche das es mir schwer fällt da einfach die Lösung für dein Problem zu präsentieren. Wenn du verstanden hast was die beiden Sachen sind und wofür die gut sind (beides unerlässliches einfaches Wissen) sollte sich dein Problem in Luft auflösen.

Für diesen Beitrag haben gedankt: MasterUller
MasterUller Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Di 09.10.12 10:57 
??? Ich weiß nicht, was du meinst und ich versteh eigentlich das Problem auch net so wirklich! Was mach ich denn falsch?
MasterUller Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Di 09.10.12 11:42 
Tut mir leid für die Aufregung... Das Problem war echt schnell zu Beheben... Ich habe einfach nicht nachgedacht!
Und danken an Ralf Jansen und natürlich auch an Palladin700!!! Ich frag mich nur noch eins: Wo kann ich den Speicherort bestimmen?
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 09.10.12 12:29 
Ich hätte gedacht die Zeit Variable (warum die auch immer so heißt) die du an die Save Methode übergibst wäre der Pfad wo das Zip erzeugt werden soll?
MasterUller Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Di 09.10.12 13:19 
Achso... Ja stimmt! Hab es einfach nur falsch Festgelegt! Und diese Zeit Variable ist ein Zeitstempel, weil ich die daten nach den Datum benennen will! Jetzt funktioniert es!!! Jetzt denk ich mal meine letzte Frage: Wie schaffe ich es mehrere verschiedene Dateien(von mehreren Formatformen z.b. .jpg .xml .pdf ...) ohne Unterverzeichnis oder iwas derartiges in eine Zip zu verpacken? Also gleichzeitig?
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Di 09.10.12 15:09 
Also getestet hab ich es noch nicht, aber wie es scheint, erfüllt das ganz gut die Anforderungen, daher spare ich mir das dann.

Wie du mehrere Dateien verschiedenen Typs verpacken kannst, steht doch eigentlich auch im Link, sogar schon im Beispiel dort, wenn man genau schaut.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
 using (ZipFile zip = new ZipFile())
 {
     // add this map file into the "images" directory in the zip archive
     zip.AddFile("c:\\images\\personal\\7440-N49th.png""images");
     // add the report into a different directory in the archive
     zip.AddFile("c:\\Reports\\2008-Regional-Sales-Report.pdf""files");
     zip.AddFile("ReadMe.txt");
     zip.Save("MyZipFile.zip");
 }


Die AddFile-Methode ist so überladen, dass du als zweiten Parameter einen Unterordner angeben kannst, nicht musst.

Im Beispiel wird die Methode drei mal aufgerufen, jedes mal ein anderer Typ und beim letzten mal wird kein Ordner angegeben.
Ich würde also ganz einfach so oft wie benötigt AddFile aufrufen, den Pfad zur Datei angeben und den zweiten Parameter weg lassen.

Für diesen Beitrag haben gedankt: MasterUller
MasterUller Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Di 09.10.12 16:14 
Ok... Vielen dank an alle!!! Jetzt Funtioniert alles ausgezeichnet! Ich konnte schon davor verschiedene Dateien gleichzeitig verschieben... Ich hatte einfach nur einen Falschen speicher Befehl, deshalb ging es nicht!

Hier nochmal für alle mein Programmcode:
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Ionic.Zip;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        string sPfad = "", sDateiname = "", stest = "duden";
        int Buttonklickzähler = 0;

        List<string> DateinamenListe = new List<string>();
        List<string> PfadListe = new List<string>();

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            Buttonklickzähler++;

            OpenFileDialog Dateiauswahl = new OpenFileDialog();
            Dateiauswahl.Filter = "";
            Dateiauswahl.Title = "Wähle die Datei";
            Dateiauswahl.ShowDialog();

            sPfad = Dateiauswahl.FileName;
            sDateiname = Dateiauswahl.SafeFileName;

            listView2.Items.Add(sDateiname);

            DateinamenListe.Add(sDateiname);
            PfadListe.Add(sPfad);

        }

        private void button2_Click(object sender, EventArgs e)
        {
            string timeStamp = DateTime.Now.ToString("dd.MM.yyyy HH-mm-ss"), Zeit = string.Format(timeStamp);
            
            using (ZipFile Zip = new ZipFile())
            {

                while (Buttonklickzähler > 0)
                {
                    Buttonklickzähler--;
                    Zip.AddFile(PfadListe[Buttonklickzähler]);
                };

                Zip.Save("C:\\Test\\" + Zeit);

            }

          }

        private void listView2_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

    }
}


Danke!!!