Avatar billede Max Novice
08. december 2005 - 12:47 Der er 7 kommentarer og
1 løsning

Problemer med DataRow igen! C#

Hej igen.
Fik det til at virke i går, med kyndig hjælp. Så skulle jeg selvfølgelig prøve at smide det i en klasse, og så kagede det helt ud for mig.

Jeg får flg. fejl :

Server Error in '/' Application.
--------------------------------------------------------------------------------

Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS0165: Use of unassigned local variable 'drLine'

Source Error:



Line 53:                    for (int i = 0; i < strFields.Length; i++)
Line 54:                    {
Line 55:                        drLine[i] = strFields[i];
Line 56:                    }
Line 57:                    dt.Rows.Add(drLine);


Source File: Default.aspx.cs    Line: 55


Source kommer her :

ASPX :
-
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
</head>
<body>
    <form id="Form1" method="post" runat="server">
        <div>
            <asp:Button ID="btnAabn" runat="server" Text="Åbn log-fil" OnClick="btnAabn_Click" />
            <asp:DataGrid ID="dgLog" runat="server" AutoGenerateColumns="true">
            </asp:DataGrid>
            <br />
        </div>
    </form>
</body>
</html>

CS :
-
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Text.RegularExpressions;
using System.Data.SqlClient;
//using BaseData;

public partial class _Default : System.Web.UI.Page
{
    protected class LogFile
    {
        public String test="";
        public String path;
        public String filename;
        public DataTable dt = new DataTable();
        public void readLogFile()
        {
            DataRow drLine;
            TextReader trLogFile = new StreamReader(path+filename, System.Text.Encoding.Default);
            while (true)
            {
                string[] strFields;
                char[] separators = { ' ' };
                string strLine = trLogFile.ReadLine();
                if (strLine == null) break;
                if (strLine.Substring(0, 1).Equals("#"))
                {
                    if (strLine.Substring(0, 8).Equals("#Fields:"))
                    {
                        strFields = strLine.Split(separators);
                        for (int i = 0; i < strFields.Length; i++)
                        {
                            if (i > 0)
                            {
                                if (!dt.Columns.Contains(strFields[i]) && !string.IsNullOrEmpty(strFields[i]))
                                {
                                    dt.Columns.Add(new DataColumn(strFields[i], typeof(string)));
                                }
                            }
                        }
                    }
                }
                else
                {
                    strFields = strLine.Split(separators);
                    for (int i = 0; i < strFields.Length; i++)
                    {
                        drLine[i] = strFields[i];
                    }
                    dt.Rows.Add(drLine);
                }
            }
            dt.AcceptChanges();
            trLogFile.Close();
        } // readLogFile
    } // class LogFile

    protected class LogDatabase
    {
        String tmp;
    }

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void btnAabn_Click(object sender, EventArgs e)
    {
        LogFile lokallogfil = new LogFile();
        lokallogfil.path = "c:\\";
        lokallogfil.filename = "ex051208.log";
        lokallogfil.readLogFile();
        DataView dv = new DataView(lokallogfil.dt);
        dgLog.DataSource = dv;
        dgLog.DataBind();
//        Response.Write("<br />" + "|" + lokallogfil.path + lokallogfil.filename + "|" + "<br />");
        Response.Write("<br />" + lokallogfil.test + "<br />");

    }
}


Håber I kan hjælpe mig med at finde fejlen, for - endnu en gang - er jeg helt blank.

Mvh.
/Mnc
Avatar billede Max Novice
08. december 2005 - 13:06 #1
Ved ikke om det har betydning, men flg. linje:

if (strLine == null) break;

.. bryder jo ud af metoden. Kommer linjerne

dt.AcceptChanges();
trLogFile.Close();

.. så til at blive afviklet? Jeg mener, den fortsætter vel til den møder en null-værdi?
Avatar billede dr_chaos Nybegynder
08. december 2005 - 13:06 #2
drLine er ikke defineret

ændre det til strLine
Avatar billede Max Novice
08. december 2005 - 13:11 #3
Hmm.. drLine er da defineret som første linje i metoden?
Avatar billede dr_chaos Nybegynder
08. december 2005 - 13:13 #4
så jeg ikke sorry.
du mangler

  drLine = dt.NewRow();
indsæt det lige over dit for loop
Avatar billede Max Novice
08. december 2005 - 13:18 #5
Halløj! Supergodt! :)
Så virker det. Smid et svar, så er pointsene dine.
Endnu en gang tak for hjælpen. :)
Avatar billede dr_chaos Nybegynder
08. december 2005 - 13:22 #6
np :)
skulle bare kigge i mit andet svar, så fandt jeg løsningen :D
Avatar billede Max Novice
08. december 2005 - 13:26 #7
Heh, ved ikke lige hvordan jeg fik mig rodet ud i at miste den linje, men jeg kan mærke at det tager lidt tid at vænne sig til .NET 2.0 og C#. Som tidligere Delphi-mand føler jeg mig ret meget på bar bund her.. ;)
Avatar billede dr_chaos Nybegynder
08. december 2005 - 13:27 #8
det kan jeg godt forestille mig.
Jeg har selv arbejdet med 2.0 siden maj måned og det er jeg meget glad for :)
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