Beginner vraag

Status
Niet open voor verdere reacties.

Jayster2

Gebruiker
Lid geworden
3 nov 2008
Berichten
39
Ik wil een C# programma maken. Paar vragen van te voren:

-Ik wil een config hebben waar 'profielen' in kunnen worden opgeslagen. Dus een .txt bestand met:

line1: qvmtconf
line2: <naam profiel1>
line3: <dir profiel1>
line4: <keyword profiel1>
line5 <naam profiel2>
etc

Nu ben ik een functie aan het schrijven die dit .txt bestand leest maar het wil niet echt lukken. Allereerst, hoe controleer ik of de .txt niet corrupt is ? Of dat de directory klopt, etc. Of als er wel een naam is voor profiel 2 maar geen directory.

Ik heb nu dit maar het lijkt nergens op:

Code:
 public string ReadCONF (string FilePath)  {
            int icounter = 0;
            string fileContents;
            string[] buffer = null;
            System.IO.StreamReader file = new System.IO.StreamReader(Environment.CurrentDirectory + "\\" + FilePath);
            while ((fileContents = file.ReadLine()) != null)
            {
                buffer[icounter] = fileContents;
                icounter++;
            }
            file.Close();
            if (icounter == 0)
            {
                return null;
            }
            else
            {
                string SearchString = "qvmtconf";
                int FirstChr = buffer[0].IndexOf(SearchString);
                if (FirstChr != -1)
                {
                    System.Windows.Forms.MessageBox.Show(buffer[0]);
                }
            }
            
            return null;
        }

Als ik vanuit main de functie aanroep gebeurt er niets. ReadCONF("qvmt.cfg");
In de directory zit een qvmt.cfg bestand met op de allereerste lijn "qvmtconfig" dus hij zou het gewoon moeten doen. Ook krijg ik de messagebox niet te zien die ik aanroep vanuit de functie. Betekent dit dat hij niet eens zover komt ????

HellppppppMijjj
 
Laatst bewerkt:
Code:
private void Form1_Load(object sender, EventArgs e)
        {
            if (ReadCONF("qvmt.cfg") == null)
            {
                System.Windows.Forms.MessageBox.Show("fy");
            }
            if (ReadCONF("qvmt.cfg") == "qvmtconf")
            {
                System.Windows.Forms.MessageBox.Show("f2323y");
            }
     
        }

En er gebeurt helemaal niets ? :)
 
Ik ben niet zo thuis in C#. Maar als de code in je 2e post niks laat gebeuren, dan geeft ReadCONF dus geen van die 2 waarden terug.

Verander het eens in:
Code:
private void Form1_Load(object sender, EventArgs e)
{
    string str = ReadConf("qvmt.cfg");
    System.Windows.Forms.MessageBox.Show("Retourneert: " + str);
}

En kijk wat voor waarde je functie retourneert.
Al lijkt het me na je functie wat beter doorgekeken te hebben dat hij altijd null zal retourneren.
 
Laatst bewerkt:
-Ik wil een config hebben waar 'profielen' in kunnen worden opgeslagen. Dus een .txt bestand met:

line1: qvmtconf
line2: <naam profiel1>
line3: <dir profiel1>
line4: <keyword profiel1>
line5 <naam profiel2>
etc

Wat je wilt bereiken kan veel makkelijker: http://msdn.microsoft.com/en-us/library/system.serializableattribute(VS.71).aspx
(en een volledige tutorial: http://www.switchonthecode.com/tutorials/csharp-tutorial-serialize-objects-to-a-file)

Je maakt dan gewoon een klasse Profiel aan die de profielgegevens bijhoudt en een serializable klasse Profielen die alle profielen bijhoudt. Iets als:

[cpp]
public class Profiel {
string naam;
string dirProfiel;
string keywordProfiel;

// ...
}

[Serializable()]
public class Profielen {
List<Profiel> profielen;

public List<Profiel> Profielen {
get { return profielen; }
set { profielen = value; }
}

public Profielen(SerializationInfo info, StreamingContext ctxt) {
profielen = (List<Profiel>)info.GetValue("Profielen", typeof(List<Profiel>));
}

public void GetObjectData(SerializationInfo info, StreamingContext ctxt) {
info.AddValue("Profielen", profielen);
}

// ...
}
[/cpp]


Allereerst, hoe controleer ik of de .txt niet corrupt is ? Of dat de directory klopt, etc. Of als er wel een naam is voor profiel 2 maar geen directory.

Als het inlezen mislukt dan is er waarschijnlijk iets mis het bestand. (de overige dingen kun je in de klasse Profiel vinden)
 
Het probeem was het declaren van de string array:

string[] buffer = null;

moet zijn

string[] buffer = new string[50];

Probleem is nu wel dat het de array een fixed size heeft.

super bedankt voor de links, ik lees ze door.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan