Avatar billede acid-head Nybegynder
10. januar 2006 - 22:20 Der er 7 kommentarer og
2 løsninger

DataSet eller en form for tabel?

Hej eksperter..

Jeg er ret ny på C# området, så ved ikke så meget om håndteringen af data.

Jeg har brug for - midlertidigt mens programmet kører - at holde styr på nogle data. Jeg åbner en m3u-playliste og læser en række filnavne.

Jeg har brug for en form for tabel, indeholdende absolutte filsti, filnavn og filstørrelse. Problemet er ikke at finde disse oplysninger, men håndteringen af de midlertidige data.

Hvordan gør jeg bedst dette..?
Avatar billede Syska Mester
10. januar 2006 - 22:45 #1
Lav en klasse til dem, og smid dem ned i en Generic List<>

Nok det nemmeste.....

// ouT
Avatar billede acid-head Nybegynder
10. januar 2006 - 23:17 #2
Nu kender jeg ikke noget til generic lists, men jeg har kigget lidt på eksemplerne på msdn.microsoft.com

Dit forslag er, at jeg opretter en generic list til hver af oplysningerne?
Avatar billede Syska Mester
11. januar 2006 - 04:08 #3
Nej, lav en klasse som kan indeholde ( Tid, Sang, Sti, og hvad der ellers måtte være ) og så opretter du en liste af den type...

List<Klasse> liste = new List<Klasse>();

liste.Add(new Klasse(info1, info2, info3, etc));

Noget i den retning...

// ouT
Avatar billede bitsch Nybegynder
11. januar 2006 - 09:40 #4
Du kan også overveje at lave en DataTable løsning. Jeg har strikket følgende lille eksempel sammen til dig, som let kan udvides:

namespace DataTableExample
{
    using System;
    using System.Data;
    using System.Windows.Forms;

    // Follow the example on : ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref4/html/T_System_Data_DataTable.htm
    // in order to extend with DataSet's and DataRelations.

    public partial class Form1 : Form
    {
        private System.Data.DataTable dataTable;

        private const string TableName = "MyTable";
        private const string ColumnNameId = "ID";
        private const string ColumnNameName = "Name";

        public Form1()
        {
            InitializeComponent();

            this.InitializeTable();
            this.CreateData();
        }

        private void InitializeTable()
        {
            this.CreateTable();
            this.BindToGrid();
        }

        private void CreateTable()
        {
            // Create a new DataTable.
            this.dataTable = new System.Data.DataTable(TableName);
           
            #region Column "ID"

            DataColumn column = null;

            column = new DataColumn();
            column.DataType = System.Type.GetType("System.Int32");
            column.ColumnName = ColumnNameId;
            column.ReadOnly = true;
            column.Unique = true;
           
            // Add the Column to the DataColumnCollection.
            dataTable.Columns.Add(column);

            #endregion // Column "ID"

            #region Column "Name"

            column = new DataColumn();
            column.DataType = System.Type.GetType("System.String");
            column.ColumnName = ColumnNameName;
            column.AutoIncrement = false;
            column.Caption = ColumnNameName;
            column.ReadOnly = false;
            column.Unique = false;
           
            // Add the column to the table.
            dataTable.Columns.Add(column);

            #endregion // Column "Name"

            #region Column "ID" as primary key column.

            // Make the ID column the primary key column.
            DataColumn[] PrimaryKeyColumns = new DataColumn[1];
            PrimaryKeyColumns[0] = dataTable.Columns[ColumnNameId];
            dataTable.PrimaryKey = PrimaryKeyColumns;

            #endregion // Column "ID" as primary key column.
        }

        /// <summary>
        /// Creates demodata
        /// </summary>
        private void CreateData()
        {
            if (this.dataTable != null)
            {
                DataRow row = null;

                // Create three new DataRow objects
                for (int i = 0; i <= 2; i++)
                {
                    row = this.dataTable.NewRow();
                    row[ColumnNameId] = i;
                    row[ColumnNameName] = string.Concat(ColumnNameName, " ", i);
                    this.dataTable.Rows.Add(row);
                }
            }
        }

        private void BindToGrid()
        {
            this.dataGridView.DataSource = this.dataTable;
        }
    }
}
Avatar billede acid-head Nybegynder
11. januar 2006 - 20:50 #5
Jeg har brugt den første metode, med en liste og en klasse.. Fungerer godt :)
Men er helt sikkert også glad for andet eksempel, og får helt sikkert brug for det, hvis jeg skal løse lidt mere komplekse opgaver, så vil gerne give jer begge to point.

Jeg har et lille ekstra spørgsmål.. Jeg finder som sagt en række filnavne i en m3u-fil, men har et problem med at alle filer indholdende æøå fejler File.Exists(); Hvor ændre jeg tegn-sætning eller hvad det er?

(Har sat point op til 60, så der er lidt til jer hver :)
Avatar billede acid-head Nybegynder
11. januar 2006 - 21:12 #6
Angående ekstraspørgsmålet, så skulle der blot tilføjes en
new System.Text.UTF7Encoding() i StreamReader()..
Avatar billede Syska Mester
12. januar 2006 - 01:07 #7
StreamReader sr = new StreamReader(txtInputFile.Text, Encoding.Default) er pænere...

Default tror jeg er systemets

og svar

// ouT
Avatar billede acid-head Nybegynder
15. januar 2006 - 18:02 #8
Smider du et svar, bitsch, hvis du vil have point? Ellers ryger de allesammen til buzzzz.. :)
Avatar billede bitsch Nybegynder
15. januar 2006 - 19:42 #9
:-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester