Laden...
M
myBig? myCSharp.de - Member
Schleswig-Holstein Dabei seit 04.08.2005 241 Beiträge
Benutzerbeschreibung

Forenbeiträge von myBig? Ingesamt 241 Beiträge

05.06.2006 - 17:47 Uhr

Hallo zusammen,

ich habe folgendes Problem. Ich habe eine Klasse geschrieben in der Daten aus zwei Dateien gelesen werden. In dieser Klasse habe ich auch zwei variable die nicht zugeordnet werden.int m, n sind die Variablen. Weiß vielleicht jemand wo der fehler ist? Das Programm ist auch noch nicht ganz fertig, aber die Klasse müsste doch eigentlich funktionieren!? Ich habe schon herausgefunden, dass er bei public void dataConvert gar nicht erst in die erste schleife kommt aufgrund von der Variable.
Hier ist meine Klasse:


 using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace Test
{
    public class ReadNet
    {
       // private int n, m;
        private int[,] myAnfKnoten;
        private object[,] myStartPunkt;
        public object[,] knotenInfo;
        private int[] kmh = new int[5];
        public int[,] knotenStartEnde;
        public int[,] pWerte;
        public int[] pVektor;
        private int m, n;
         
        public void kdnData(string fileName)
        {
        }

        public void net_kdnData(string fileName)
        {
            readNetData(fileName);
            readKDNData(fileName);
            dataConvert();
        }


        private void readNetData(string fileName)
        {
            int daten = 0;
            string ort = "";
            int i = 0;
            int k = 0;

            StreamReader sr = new StreamReader(fileName);
            while (sr.ReadLine() != null)
            {
                daten++;
            }
            sr.Close();

            StreamReader sr1 = new StreamReader(fileName);
            sr1.ReadLine();

            int[,] anfKnoten = new int[m, 5];
            int[] pfeilvektor = new int[n + 1];
            try
            {
                while (i < m)
                {
                    string rowData = sr.ReadLine() + "";
                    foreach (char x in rowData)
                    {
                        if (Convert.ToString(x) != "")
                        {
                            ort += Convert.ToString(x);
                        }
                        else
                        {
                            if (ort.Length != 0)
                            {
                                anfKnoten[i, k] = Convert.ToInt32(ort);
                                ort = "";
                                k++;
                            }
                            if (k == 5)
                            {
                                i++;
                                k = 0;
                            }
                        }
                    }
                }
            }
            catch
            {
                MessageBox.Show("Fehler beim lesen der .net Datei");
            }

            myAnfKnoten = anfKnoten;
            sr1.Close();
        }

        private void readKDNData(string fileName)
        {
            int daten = 0;
            int i = 0;
            int k = 0;
            string ort = "";
            object[,] startPunkt = new object[n, 4];

            if (File.Exists(fileName.Substring(0, fileName.Length - 4) + ".kdn"))
            {
                fileName = fileName.Substring(0, fileName.Length - 4) + ".kdn";
            }

            try
            {
                StreamReader sr = new StreamReader(fileName);
                while (sr.ReadLine() != null)
                {
                    daten++;
                }
                sr.Close();

                StreamReader sr1 = new StreamReader(fileName);

                while (i <= n - 1)
                {
                    string rowData = sr1.ReadLine() + "";

                    foreach (char x in rowData)
                    {
                        if (Convert.ToString(x) != "")
                        {
                            ort += Convert.ToString(x);
                        }
                        else
                        {
                            if ((i == 0 && k == 0 && ort == "1") || (i >= 1 || k >= 1))
                            {
                                if (ort.Length != 0)
                                {
                                    startPunkt[i, k] = ort;
                                    ort = "";
                                    k++;
                                }
                                if (k == 5)
                                {
                                    i++;
                                    k = 0;
                                }
                            }
                            else
                            {
                                ort = "";
                            }
                        }
                    }
                }
                myStartPunkt = startPunkt;
            }
            catch
            {
                MessageBox.Show("Fehler beim lesen der .kdn Datei" + i + " " + k);
            }

        }

        public void dataConvert()
        {
            object[,] myKnotenInfo = new object[n,4];
            for(int i = 0;i < n;i++)
            {
                myKnotenInfo[i,3] = myStartPunkt[i,3];
            }
            knotenInfo = myKnotenInfo;

            int myaKnoten = myAnfKnoten[0,1];
            int myPfeileanzahl = 0;
            int[,] myCPfeil = new int [m,3];
            int[] myPfeilVektor = new int[n+1];
            int[,] myKStartEnde = new int[m,2];

            myPfeilVektor[0] = 1;
            int j = 0;
            for(int i = 0; i < m; i++)
            {
                try
                {
                    myPfeileanzahl += 1;
                    if(j+1 != myAnfKnoten[i,1])
                    {
                        myPfeilVektor[j+1] = myPfeileanzahl;
                        myaKnoten = myAnfKnoten[i,1];
                        j += 1;
                    }

                    myKStartEnde[i,0] = myAnfKnoten[i,1];
                    myKStartEnde[i,1] = myAnfKnoten[i,2];

                    myCPfeil[i,0] = myAnfKnoten[i,3];
                    myCPfeil[i,1] = myAnfKnoten[i,4];
                    myCPfeil[i,2] = myAnfKnoten[i,4]-1;
                }
                catch
                {
                    MessageBox.Show(i.ToString());
                }
            }
            myPfeilVektor[n] = m+1;
            knotenStartEnde = myKStartEnde;
            pWerte = myCPfeil;
            pVektor = myPfeilVektor;
        }

    }
}

Hier ein mein Hauptprogramm, zumindestens ein Teil:


namespace Test
{
    public partial class Form1 : Form
    {
        private string fileName;
        private ReadNet rn = new ReadNet();
        private int[] pfeilVektor;
        private int[,] pfeilWerte;
        private object[,] knotenInfo;
        private int[,] knotenStartEnde;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            bool fileOpened = false;

            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                fileName = openFileDialog1.FileName;
                if (!fileOpened)
                {
            
                    try
                    {
                        getData();
                        FileStream fs = new FileStream(fileName, FileMode.Open);
                        StreamReader sr = new StreamReader(fs);

                        for (string line = sr.ReadLine(); line != null; line = sr.ReadLine())
                        {
                            listView1.Items.Add(line);
                        }
                    }
                    catch(Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
            }            
        }
        private void getData()
        {
            if ((fileName.Substring(0, fileName.Length) == openFileDialog1.FileName))
            {
                rn.net_kdnData(fileName);
                pfeilVektor = rn.pVektor;
                pfeilWerte = rn.pWerte;
                knotenInfo = rn.knotenInfo;
                knotenStartEnde = rn.knotenStartEnde;
            }
        }
    }
}

Wäre schön wenn mir einer einen Tip oder hilfe geben kann.

Gruß myBig?

22.05.2006 - 15:13 Uhr

Hi Norman und Yankee,

also meine Hauptklasse macht nicht nur "Manager" Aufgaben. Also bin ich doch recht gut davor, das so zu machen wenn ich dein Beitrag richtig verstanden habe, Norman?

Habt ihr vielleicht noch ein Tip wie ich das mit der KDN und NET Datei lösen kann? Hatte gerade schon was geschrieben dazu wie ich es mir zu einigermassen vorstelle.

Gruß myBig?

22.05.2006 - 14:33 Uhr

Hallo Norman,

da hast du durchaus recht, allerdings brauch ich die Variablen und Arrays und was dazu gehört im Hauptprogramm und in der Klasse. Daher dachte ich das ich sie im Hauptprogramm deklariere und sie dann auch in der Klasse benutzen kann. Oder gibt da eine schönere Lösung?

Gruß

22.05.2006 - 14:29 Uhr

Wunderbar, dankschön!!! Ich glaub jetzt habe ich es ein wenig verstanden.

Hier noch eine kleine andere frage, in meinem Hauptprogramm lasse ich über den fileOpenDialog die SLFL.net datei öffnen. Für diese Datei brauch ich die SLFL.kdn Datei. Meine Klasse soll die .kdn öffnen und lesen damit ich die vorhandene Daten in die SLFL.net Datei übernehmen kann. Muss ich in der Klasse die .kdn Datei ebenfalls mit einem openFileDialog öffnen oder gibt es da auch eine andere Möglichkeit? So das ich im Gunde nur die .net Datei auswähle und dann automtisch die dazugehörige .kdn Datei geöffnet und gelesen wird in der Klasse?

Gruß

22.05.2006 - 13:24 Uhr

ich kann niemand böse sein =)

Also Knotenfeld soll ein Array sein, dass ich im Hauptprogramm deklariet habe und zwar so:


const int nmax=140;

int[] knotenfeld = new int[] { 1, nmax };

So wie ich mich kenne ist da bestimmt auch noch was flasch.

Und in der Klasse soll das Array(knotenfeld) dann benutzt werden. Wie du sehen kannst versuche ich es jetzte auf einen anderen Weg. Aber leider bekomme ich keinen zugriff darauf, bekomme immer ne Fehler meldung das die Using Anweisung oder Namespace fehlt oder so ähnlich. Wie bekomme ich denn die Zuweisung, dass MENGE ein ARRAY ist von KNOTENFELD?

gruß

22.05.2006 - 13:11 Uhr

Hi,

also sollte ich in der Klasse es so machen mit dem Array?


public KDN_Datei_lesen(int[] menge,int[] standzeit,int[] ort,string Datei_Name,byte n)

Das mit dem übergeben vom Knotenfeld habe ich nicht verstanden. Die MENGE soll vom type knotenfeld(array) sein. Wenn ich es jetzt wie oben mache, wie bekomme ich dann die zuordnung, das **MENGE ** ein Array sein soll von type KNOTENFELD?

Mit dem code:

int[] knotenfeld = new int[] { 1, nmax };

ist gemeint, dass er von 1 bis 140(nmax) ein array aufbauen soll, oder ist das flasch? Würde es reichen, wenn ich nur

int[] knotenfeld = new int[] {  nmax };

schreibe?

22.05.2006 - 11:00 Uhr

Hallo Lynix,

das Programm soll aus einem Strassennetz eine Route ermitteln. Die Strassennetze haben jeweils eine zugehörige Datei in der der Startknoten ist von der die Route beginnt. Die Klasse soll lediglich die KDN Datei lesen um die Startknoten zu ermitteln, damit ich die Tour ermitteln kann.
Ich habe wie gesagt im Hauptprogramm die Arrays deklariert und möchte sie in der Klasse benutzen. Leider bekomme ich kein Zugriff auf die Variablen und Arrays vom Hauptprogramm in der Klasse nicht. Die ReadOnlyException ist auch falsch. Wollte es noch ändern, in dem ich in dem Hauptprogramm über OpenFile das Strassennetz zu öffnen und die Klasse soll die dazugehörige KDN Datei lesen, damit ich den Startknoten bekomme um die Tour zu ermitteln. Ich hoffe, dass ich es gut genug erklärt habe. =)

22.05.2006 - 10:22 Uhr

Hallo,

habe da ein Problem hatte es auch schon unter SUCHEN versucht was zu finden darüber, leider erfolglos. Vielleicht kann mir einer helfen. Möchte aus meinem Hauptprogramm die deklarierten Array benutzen. Leider klappt es nicht. Die Klasse soll nur in einer Datei lesen, damit ich die Datei für weitere Dateien benutzen kann um werte zu ermitteln.
Hier mein Hauptprogramm:


using KDN_Datei_lesen_1;

namespace Testen_Tourenplan
{
    public partial class T_Tourenpl : Form
    {
        public T_Tourenpl()
        {
            InitializeComponent();
        }
        const int nmax=140;
        const int nmax_plus_1 = 141;
        const int mmax = 500;
        const int svmax = 9730;
        const int unendlich = 15000;

        int[] knotenfeld = new int[] { 1, nmax };
        int[] knoten_plus_1_feld = new int[] { 1, nmax_plus_1 };
        int[] pfeilfeld = new int[] { 1, mmax };
        int[] stringfeld = new int[] { 1, nmax };
        int[] svfeld = new int[] { 1, svmax };
        int[] indexfeld = new int[] { 1, svmax };
        int[] index;

Hier die Klasse:


namespace KDN_Datei_lesen_1
{
    
    public class KDN_Datei_lesen
    {
        public KDN_Datei_lesen(knotenfeld menge,knotenfeld standzeit,stringfeld ort)
        {
            int j;
            string str;

            for (int i = 1; i < n; i++)
            {
                ReadOnlyException read = new ReadOnlyException();
                read(j, menge[i], standzeit[i], ort[i]);
                standzeit[i] = 0;
            }
        }
    }
}

Die ReadOnlyException ist bestimmt auch noch flasch dafür.

Gruß myBig?

22.05.2006 - 09:50 Uhr

Guten Morgen zusammen,

werder es mal auf einem anderen Weg versuchen. Aber ich werde mich nochmal mit diesem Thema beschäfftigen.

Nun habe ich mal eine andere Frage. Passt nicht ganz hier zu diesem Thema. Ich habe immer noch meine Klasse. Die ich schreiben will, ich habe in meinem Hauptprogramm ein Array deklariert, den ich in meiner Klasse benutzen möchte, nur bekomme ich da keinen Zugriff drauf. Die Klasse soll nur in einer Datei lesen. Hier ein teil von meinem Hauptprogramm:


using KDN_Datei_lesen_1;

namespace Testen_Tourenplan
{
    public partial class T_Tourenpl : Form
    {
        public T_Tourenpl()
        {
            InitializeComponent();
        }
        const int nmax=140;
        const int nmax_plus_1 = 141;
        const int mmax = 500;
        const int svmax = 9730;
        const int unendlich = 15000;

        int[] knotenfeld = new int[] { 1, nmax };
        int[] knoten_plus_1_feld = new int[] { 1, nmax_plus_1 };
        int[] pfeilfeld = new int[] { 1, mmax };
        int[] stringfeld = new int[] { 1, nmax };
        int[] svfeld = new int[] { 1, svmax };
        int[] indexfeld = new int[] { 1, svmax };
        int[] index;

Und hier meine Klasse, da sind bestimmt noch fehler drinn, denm ich glaube nicht, dass die ReadOnlyException richtig ist um zu lesen


namespace KDN_Datei_lesen_1
{
    
    public class KDN_Datei_lesen
    {
        public KDN_Datei_lesen(knotenfeld menge,knotenfeld standzeit,stringfeld ort)
        {
            int j;
            string str;

            for (int i = 1; i < n; i++)
            {
                ReadOnlyException read = new ReadOnlyException();
                read(j, menge[i], standzeit[i], ort[i]);
                standzeit[i] = 0;
            }
        }
    }
}

Würde mich um hilfe und anregungen freuen.

Gruß myBig?

17.05.2006 - 11:45 Uhr

Hi Nils!
Hmm, ok! Also bin ich wohl auf den falschen Weg. Knotenfeld soll eigentlich ein array sein. Wenn ich das richtig verstanden habe, muss ich den Dateinamen von meinem Hauptprogramm in die Klasse übergeben?! Dann kann ich das ja auch mit den Variablen bzw mit den Array machen oder? Den da habe ich sie schon deklariert. Blöde frage aber wie stelle ich das an? Werde gleich nochmal hier im Forum nach Properties gucken.

17.05.2006 - 11:25 Uhr

Hallo zusammen,

ich möchte eine Klasse erstellen, die eine Datei liest. Ich habe verschiedene Variablen deklariert in der Klasse. In der Klasse möchte ich jetzt die Datei öffnen um sie zu lesen. Kann ich in einer Klasse gar kein openFileDialog anwenden? Wie muss ich da dann ran gehen? Die Klasse soll dann im Hauptprogamm angewendet werden.


using System;
using System.Collections.Generic;
using System.Text;

namespace Testen_Tourenplan
{
    
    public class KDN_Datei_lesen
    {
        public const int nmax = 140;
        public string Datei_Name;
        public double n;
        public string Datei,str;
        public int i, j;


        public double[] knotenfeld = new double[] { 1, nmax };
        public double[] stringfeld = new double[] { 1, nmax };
        
        public void SetDateiname(string dateiname)
        {
            Datei_Name = dateiname;
        }

        public void SetKnotenfeld(knotenfeld menge,knotenfeld standzeit)
        {
            knotenfeld = menge;
            knotenfeld = standzeit;
        }

        public void SetStringfeld(stringfeld ort)
        {
            stringfeld = ort;
        }

        public void SetNFeld(double n)
        {
            n = n;
        }

        public string GetDateiname()
        {
            return Datei_Name;
        }

        public knotenfeld GetKnotenfeld()
        {
            return knotenfeld;
            return knotenfeld;
        }

        public stringfeld SetStringfeld()
        {
            return stringfeld;
        }

        public double GetNFeld()
        {
            return n;
        }

        public void ReadKDN()
        {
            ?????;
        }


    }
}

Bin ich denn zumindestens auf den richtigen Weg oder ist das vollkommen falsch? Wäre nett wenn mir einer helfen könnte oder einen guten Tip geben könnte. =)

Gruß myBig?

11.05.2006 - 16:44 Uhr

hmm, stimmt auch wieder. Ich denke das brauch ich gar nicht, denn ich will den courser ja gar nicht bewegen =)

11.05.2006 - 16:25 Uhr

Ich weiß ist alles nicht einfach zu verstehen. Ich habe mir gerade nochmal die procedure angeschaut. wenn ich mich nicht ganz irre, dann bewirkt das gotoxy nur um die vorhandene Knoten zu ermitteln. Das hatt ich im grunde nicht vor, zumindestens wollte ich es nicht mit anzeigen lassen. Ich werde es mal ohne diese gotoxy versuchen.

Zu jedem Strassennetz gehört eine KDN- Datei. In dieser Datei sind Kundendaten enthalten. Z. B. wie lange die Standzeit ist für ein Auto z. B. um etwas einzuladen. Wo diese KDN- Datei immer herkommt, weiß ich leider auch nicht so genau. Die Procedure bewirkt, wenn ich es richtig verstanden habe, dass die Kundendaten nur gelesen werden, um sie dann im Hauptprogramm mit einwirken zu lassen. Dadurch kann man dann die Touren ermitteln, für das Stassennetz was eingelesen wurde.

Ich bedanke mich auf jeden Fall für die guten hilfen und tips. =)

11.05.2006 - 13:45 Uhr

Sorry, das ich mich erst jetzt wieder melde!

Also diese Procedure mit dem gotoxy liest in einer KDN- Datei ein. Dort sind folgende angaben enthalten, wie die Standzeit für jeden Knoten oder die Kapazität für eine Tour. Wie gesagt die Procedue liest nur in die KDN- Datei rein und ermittelt dadurch die weiteren Daten um ein Tour zu ermitteln. Ist vielleicht nicht ganz einfach zu verstehen aber ich hoffe es reicht zum verständnis.

10.05.2006 - 13:58 Uhr

Im grunde soll es nachher in einer Listview angezeigt werden. Ich soll ein Strassennetz mit verschieden Knoten einlesen und dafür brauch diese pocedure bzw diesen Code. Wie gesagt leider ist er in Delphi geschieben.

Das Strassennetz soll durch das SAVING- VERFAHREN ermittelt werden und dieser Code ermittelt die vorhandenen Knoten eines Strassennetzes.

Kann auch sein, dass ich jetzt vollkommen auf dem Holzweg bin(was ich nicht hoffe) 😁

10.05.2006 - 13:40 Uhr

okidoki, ich denke mal das mit dem write werde ich hinbekommen. Aber was ist mit dem gotoxy? Gibts so was denn nicht in C# bzw in der Windows- Anwendung? Hat jemand vielleicht ein tip für mich? Wäre sehr nett.

10.05.2006 - 12:19 Uhr

Wohl wahr, muss sie dann doch nur umschreiben für ne Windows anwendung, oder? Man sind das blöde fragen, aber irgendwie bin ich heute noch nicht so aufm damm 🙁

10.05.2006 - 12:07 Uhr

Hallo nochmal,

zu dem Quellcode oben nochmal. Dies ist ja ein für ne Konsolenanwendung. Kann ich die auch benutzen für eine Windows- Anwendung? Ich weiß ist eine blöde frage 🙂

09.05.2006 - 10:02 Uhr

Danke schön für die schnelle anzworten werde es doch glatt mal ausprobieren. Werde mir auch das andere mal durchlesen. Auf jeden Fall vielen dank für die schnelle hilfe.

Nochmal zu der ersten frage was die gotoxy machen soll. Wie ich das verstanden habe wird das Netz- Datei eingelesen und daraus die Knoten ermittelt zwecks der Procedure die ich aufgeschrieben habe.

Ich denke mal das ich bestimmt noch andere fragen habe bzw aufkommen werden. 😉

Erstmal noch einen schönen Tag

09.05.2006 - 09:28 Uhr

Guten Morgen zusammen,

habe da eine kleine frage, ich habe ein kleine Procedure in Delphi gefunden, die mir in meinem Programm behilflich sein kann. Kann ich den Code so ziemlich übernehmen. Habe es mal versucht, aber klappte nicht ganz. Dies ist jetzt der Code in Delphi.


read  (Datei,str);
read  (Datei,n);
for i:=1 to n do
  begin
     gotoXY(WhereX-13,WhereY); write('Knoten ',i:6);
     read (Datei,j,menge[i],standzeit[i],ort[i]);
     standzeit[i]:=0;
  end;
close (Datei);

Vielleicht kann mir ja einer einen guten Tip geben. Diese Code soll die Knoten aus einem Strassennetz ermitteln.

MfG Big?

26.09.2005 - 08:54 Uhr

Habe es jetzt mir einem


{break;}

gelöst. Aber ich würde trotzdem gerne wissen, warum er es ohne break nicht macht. Mein Code sieht jetzt so aus


private void buttonJar_Click(object sender, System.EventArgs e)
		{
			String fileName;

			if(openFileDialog1.ShowDialog() == DialogResult.OK)
			{
				//myFile = openFileDialog1.FileName;
				fileName = openFileDialog1.FileName;

				try
				{
					if(fileName != "")
					{
						ZipInputStream zis = new ZipInputStream(File.OpenRead(fileName));
						StreamReader sr = new StreamReader(zis);
						ZipEntry myEntry = null;

						while((myEntry = zis.GetNextEntry()) != null)
						{
							if(myEntry.Name == "META-INF/MANIFEST.MF")
							{

								ListViewItem Item = new ListViewItem("META-INF/MANIFEST.MF",0);
								lvVInfo.Items.Add(Item);
								
								Regex regex = new Regex(@"^(Manifest\s*-\s*Version[^\s]+)\:?\s*(?<value>.*)$",RegexOptions.IgnoreCase);

								for(string line = sr.ReadLine(); line != null; line = sr.ReadLine())
								{
									for(Match m = regex.Match(line);m.Success;m.NextMatch())
									{
										Item.SubItems.Add(m.Value);
									    {break;}
									}
								}
							}
						}
						zis.Close();
					}
				}

26.09.2005 - 08:48 Uhr

Hallo zusammen,

hallo ikaros, habe es so versucht wie du es geschrieben hast. Da komme ich leider gar nicht erst in die Schleife rein.

Hallo frisch,
die beiden STrings sind doch unabhängig von ein ander oder sehe ich das falsch? Habe versucht ein string weg zu lassen, da bekomme ich den gleichen fehler, dass die Kapazität zu groß ist!

Ich versteh wirklich nicht, woran es liegen soll. Habe mir schon das ganze Wochenende den Kopf zermatert.
Hat nicht irgendjemand eine Idee woran es liegt bzw ob man es auch anders schreiben kann? Kann es bestimmt auch über zwei Buttons laufen lassen, aber es muss doch auch über einen Button funktionieren.

Ciao Olli

23.09.2005 - 15:40 Uhr

Zu a) Wo benutze ich denn zwei strings?
Zu b) das ist nicht ganz so wichtig
Mir gehts doch nur darum warum da ne "endlos" schleife ist! Ich finde den fehler nicht!
Bei meinem Testprogramm läuft es wunderbar.

23.09.2005 - 15:26 Uhr

Hallo zusammen, könnt ihr euch mal meinen Code anschauen. Die schleife läuft ständig weiter, obwohl er das gefunden hat was er soll. Beim Testen klappt es wunderbar, habe es da nur über zwie Buttons laufen und will es jetz über ein Button laufen lassen.


private void buttonJar_Click(object sender, System.EventArgs e)
		{
			String myFile, fileName;

			if(openFileDialog1.ShowDialog() == DialogResult.OK)
			{
				myFile = openFileDialog1.FileName;
				fileName = openFileDialog1.FileName;

				try
				{
					if(fileName != "")
					{
						ZipInputStream zis = new ZipInputStream(File.OpenRead(myFile));
						StreamReader sr = new StreamReader(zis);
						ZipEntry myEntry = null;

						while((myEntry = zis.GetNextEntry()) != null)
						{
							if(myEntry.Name == "META-INF/MANIFEST.MF")
							{
								ListViewItem Item = new ListViewItem("META-INF/MANIFEST.MF",0);
								lvVInfo.Items.Add(Item);
								
								Regex regex = new Regex(@"^(Manifest\s*-\s*Version[^\s]+)\:?\s*(?<value>.*)$",RegexOptions.IgnoreCase);

								for(string line = sr.ReadLine(); line != null; line = sr.ReadLine())
								{
									for(Match m = regex.Match(line);m.Success;m.NextMatch())
										Item.SubItems.Add(m.Value);
								}
							}
						}
						zis.Close();
					}
				}
				catch(Exception ex)
				{
					MessageBox.Show(ex.Message,"Error message",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning);
				}
			}
			buttonExport.Enabled = true;
		}

Ich hoffe jemand sieht meinen Fehler.
Ciao Olli

23.09.2005 - 12:46 Uhr

Habe es jetzt hinbekommen, nochmal vielen Dank Herbivore. Hast du vielleicht noch gute Seiten wo ich mich besser mit REGEX beschäfftigen kann?

23.09.2005 - 12:37 Uhr

Hallo Herbivore,
mein Code sieht so aus, bekomme aber ein Fehlermeldung: Unbekanntes Gruppierungskonstrukt ist doch genau wie du es auch hast, oder ist da wieder was falsch! Wäre echt dankbar über deine hilfe!


private void button2_Click(object sender, System.EventArgs e)
		{
			String myFile;

			myFile = openFileDialog1.FileName;

			ZipInputStream s1 = new ZipInputStream(File.OpenRead(myFile));
			StreamReader t = new StreamReader(s1);

			ZipEntry theEntry;

			while((theEntry = s1.GetNextEntry()) != null)
			{
				if (theEntry.Name == "META-INF/MANIFEST.MF")
				{
					ListViewItem Item = new ListViewItem();

					Regex regex = new Regex(@"^(?Manifest-Version:?\s*(?<value>.*)$", RegexOptions.IgnoreCase);

					for (string line = t.ReadLine(); line != null;line = t.ReadLine())
					{
						for (Match m = regex.Match(line);m.Success;m = m.NextMatch())
							listView1.Items.Add(m.Value);
					}

Ciao Olli

23.09.2005 - 11:39 Uhr

Hallo Herbivore,
könntest du mir dann einmal den Zeilen Code hier reinsetzen und mal etwas erklären, bitte! Damit ich mal den zusammenhang verstehe. Das wär nett.
Wie gesagt, bin noch absoluter anfänger was REGEX angeht.

23.09.2005 - 11:14 Uhr

Hallo svenson,

habe es mir wirklich zu gemühte geführt ist auch auch klasse das REGEX, aber du musst ja wirklich jedes zeichen wissen, und das ist bei mir nicht der Fall. Das einzige was ich genau weiß ist dieser Stringpda_version:. Und genau diese komplette Zeile mit dem was hinter dem : steht möchte ich gerne haben. Gibts da denn nicht doch was einfacheres?

23.09.2005 - 11:10 Uhr

Hmm, meinst du so


Regex regex = new Regex("\s*pda_version\s*:(?<value>.*)", RegexOptions.IgnoreCase); 

Bin nämlich noch recht unerfahren was REGEX angeht. Und damit liest er dann auch nur bis zum ende der Zeile?

23.09.2005 - 10:52 Uhr

Hallo nochmal zusammen,

ich glaube ich habe wieder ein Problem, wie stelle ich es denn an mit Regex, das er bis zum ende der Zeile list? Er soll ja folgendes finden:pda_version: und alles was danach kommt in der Zeile soll auch mit angezeigt werden.


Regex regex = new Regex("\\s*pda_version\\s*:\\s*", RegexOptions.IgnoreCase);

Das müsste doch im grunde gut sein, nur wie bekomme ich jetzt hin, das er mir auch alles andere nach dem : anzeigt?
Ciao Olli

22.09.2005 - 17:11 Uhr

Super, danke schön! Jetzt habe ich ja was zu tun. Ich hoffe ich versehe es auch alles.

22.09.2005 - 16:48 Uhr

upps, habe nicht mitbekommen das du mir die links schon hin gestellt hast

22.09.2005 - 16:45 Uhr

Hast du ein Link zu diesem Test Tool für mich?
Für ein Anfang war es gut?! Naja, also nicht wirklich, oder? Bin aber doch schon etwas auf der richtigen spur, oder? Sag bitte ja 😁

22.09.2005 - 16:27 Uhr

Wäre das vielleicht schon mal ein guter anfang


Regex r = new Regex("?pda_version:\\d.\\d.\\d");

Oder ist das ein föllig falscher anfang?

22.09.2005 - 15:40 Uhr

Wenn ich das richtig sehe an deinem Beispiel, dann sind es ja immer konstante, bei mir ist aber nur pda_version: konstant. Die Version Nr kann sich ändern.
Entweder bin ich jetzt schon zu lange vor dem Problem oder ich versteh es wirklich nicht. Es kann doch im grunde nicht so schwer sein aus einer text datei die Version auszulesen wenn man weiß, dass nach pda_version die Version nummer kommt. ?( ?( Kann mir das vielleicht einer auf eine einfache art und weise erklären, das wäre sehr nett!

22.09.2005 - 13:53 Uhr

Davon habe ich ja noch gar nichts gehört! Wie soll das denn funktionieren? Hast du vielleicht Code beispiele oder ähnliches?

22.09.2005 - 13:48 Uhr

Hallo zusammen

kann mir einer einen Tip geben, wo ich was über KEY: VALUE in Erfahrung bringen kann. Habe hier schon was gefunden aber bin da nicht richtig durchgestiegen.
Meine Aufgabe ist aus einer Text Datei was ganz bestimmtes auslesen. In der Text datei wird z. B. folgendes geschrieben
**
pda_version : 1.1.3**
und genau das soll ausgelesen werden und in einer ListView angezeigt werden.
Der text bleibt ja immer gleich nur die Versions Nr verändert sich ja. Meine erst überlegung war nach
**
pda_version**
im Text zu suchen, aber dann bekomme ich ja die Version nr nicht mit, oder doch?
Ciao Olli

22.09.2005 - 13:05 Uhr

Ach so, alles klar danke schön für den Hinweis.

22.09.2005 - 11:59 Uhr

alles wieder rückgängig, habe den falschen Dateinamen angegeben, mein fehler 🙁 😭
Läuft alles wunder bar. Danke schön Noodles

22.09.2005 - 11:52 Uhr

Habe ich, habe den Fehler gefunden.Liegt es denn daran, dass ich Ordner Namen mit angeben muss wo die Datei ist? Denn dann Funktioniert es.

22.09.2005 - 11:44 Uhr

Ich glaub ich habe noch irgenwas falsch gemacht, er springt gar nicht erst in die ** Führe aus anweisung** von der if schleife.
Hier ist der Code den ich geschrieben habe.


private void button1_Click(object sender, System.EventArgs e)
		{
			DialogResult result;
			String myFile, fileName;

			result = openFileDialog1.ShowDialog();
			myFile = openFileDialog1.FileName;
			fileName = openFileDialog1.FileName;

			try
			{
				if(fileName != "")
				{
					ZipInputStream s = new ZipInputStream(File.OpenRead(myFile));
					ZipEntry myEntry = null;

					while((myEntry = s.GetNextEntry()) != null)
					{
						if(myEntry.Name == "MANIFEST.MF")
						{
							ListViewItem Item = new ListViewItem();
							Item.SubItems.Add(myEntry.Name);
							listView1.Items.Add(Item);
						}
					}
					s.Close();
				}
			}
			catch(Exception ex)
			{
				MessageBox.Show(ex.Message);
			}
		}

Ich sehe zumindestens keinen fehler, oder ist da doch einer? Oder liegt es daran, dass die Datei noch in einem anderen Ordner ist? Wenn ich nämlich den Ordner Namen mit dem Dateinamen eingeben , dann klappt es!
Ciao Olli

22.09.2005 - 11:09 Uhr

Hallo zusammen,
habe hier schon gesucht, allerdings nichts passendes gefunden.
Ich habe ein Code geschrieben, der den Inhalt einer Zip bzw jar datei anzeigt in einer ListView über Button_Click. Benutze zu nächst eine OpenFileDialog um die .jar auszuwählen. Jetzt möchte ich aber aus der .jar Datei nur eine bestimmt Datei auslesen und sie hat immer den gleichen Namen. Geht das? Wenn ja, kann mir einer vielleicht helfen wie ich das mache?
Ciao Olli

22.09.2005 - 10:58 Uhr

So, hat jetzt alles wunderbar geklappt es läuft! Habe da nochmal eine klitzekleine frage.In der .jar datei ist eine Datei von den vielen die ich mir anschauen will, die hat auch immer den gleichen Namen, kann man es so regeln, dass nur die angezeigt bzw ausgelesen wird?
Ciao Olli

22.09.2005 - 08:30 Uhr

Guten Morgen wieder,

welche Bibliothek meinst du denn? Muss ich die Biblithek erst schreiben, oder wie soll ich das verstehen!? In deinem Link ist doch was drinn mit einem Code ganz unten muss ich den haben und dann einbinden und dann den Code von dir hier?
Ciao Olli

21.09.2005 - 15:25 Uhr

Kann ich nicht einfach den bzw den Code von dir benutzen? Bist du vielleicht morgen auch wieder hier? Muss jetzt leider auf hören, habe noch Termine.

21.09.2005 - 14:50 Uhr

Hallo cmpxchg,

wie gehe ich denn da ran, so ein Code zu schreiben? Hast du da Tips oder Links oder vielleicht Codes die ich mir mal anschauen kann?
Ciao Olli

21.09.2005 - 14:40 Uhr

Von .NET habe ich 1.1
Und die Klasse ICSharpCode habe ich mir letzte Woche erst von einer Seite runtergeladen und hinzugefügt in mein Code.

21.09.2005 - 14:38 Uhr

Meinst du jetzt die Version von .NET?

21.09.2005 - 14:33 Uhr

Ich denke mal das von der Klasse selber kein update gibt, oder?
Dann brauch ich doch bestimmt 2.0 Version von .net, oder?

21.09.2005 - 14:02 Uhr

Ich entpacke dir .jar ganz normal über Zip und hinterlege sie auf mein Desktop, dann kompromiere ich sie wieder und alles ist wunderbar. Nur nicht wenn ich direkt auf auf die .jar zugreifen will. Dann kommt halt diese Fehlermeldung. Weißt du vielleicht, wo man mal nach fragen kann? Es sei denn das du jetzt eine wunderbare eingebung hast 😉 Das wäre jetzt wunderbar
ich google auch schon wie verrückt aber bis her nichts gefunden