PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C#] Schreibt nicht in Array


stav0815
2008-07-15, 12:13:08
Hallo,

habe mal wieder ein Problem mit meinem Progrämmchen und komme nicht weiter. Und zwar unterscheide ich, was für eine Datei-Art geöffnet wird, anhand der Dateiendung. Dazu frag ich einfach die Endung ab.
Dies funzt auch bei einer PI-Datei:

if (typ == "pi" || typ == "PI")
{
if (path != null)
{
StreamReader ausles = new StreamReader(path);
{
Application.DoEvents();
string zeile;

while (zaehler <= 620000)
{
zaehler++;
zeile = ausles.ReadLine();
if (zeile == null)
{
ausles.Close();
break;
}
else
{
if (zeile.IndexOf("Time") != -1)
{
flag = true;
}

if (flag)
{
char[] sep = { ' ', '\t' };
string[] x = zeile.Split(sep, 6);
if (zeile == "" || x[0] == "Date" || (x[0] == "0" && x[1] == "0" && x[2] == "0"))
{
ausles.Close();
break;
zaehler = 2;
status.Value = 0;
}
else
{
//inhaltbox.Text += zeile + "\r\n";
ausgabe += zeile + "\r\n";
try
{
xachse[zaehler] = Convert.ToInt32(Convert.ToDouble(x[0]) * 1000);
yachse[zaehler] = Convert.ToInt32(x[3]);
yachse2[zaehler] = Convert.ToInt32(x[2]);
leistung[zaehler] = x[4];
alarm[zaehler] = Convert.ToInt32(x[5]);
}
catch
{
}
status.ProgressBar.Maximum = zaehler;
status.ProgressBar.Value++;
}

}
}
}
}

}
inhaltbox.Text = ausgabe;

Dabei werden auch die Werte schön in das Array geschrieben.
Bei einer TXT-Datei aber nicht:


if (typ == "txt" || typ == "TXT")
{
StreamReader ausles = new StreamReader(path);
{
Application.DoEvents();
string zeile;

while (zaehler <= 620000)
{
zaehler++;
zeile = ausles.ReadLine();
if (zeile == null)
{
ausles.Close();
break;
}
else
{

if (zeile.LastIndexOf("Emi") != -1)
{
flag = true;
}
if (flag)
{
char[] sep = { ' ', '\t' };
string[] x = zeile.Split(sep, 200);
if (zeile == "" )
{
ausles.Close();
break;
zaehler = 2;
status.Value = 0;
}
else
{
ausgabe += zeile + "\r\n";
try
{
xachse[zaehler] = Convert.ToInt32(Convert.ToDouble(x[28]));
yachse[zaehler] = Convert.ToInt32(x[29]);
}
catch
{
}
status.ProgressBar.Maximum = zaehler;
status.ProgressBar.Value++;
inhaltbox.Text = ausgabe;
}
}
}
}


}

}


Hier bleibt hingegen das Array leer.
Ich habe schon alles mögliche ausprobiert, komme aber ums verrecken nimmer weiter :(
Ich habe schon getestet, welche verschiedenen Werte bei x[ ] was ausgeben - aber nichts. Ich weiss einfach nimmer weiter

Monger
2008-07-15, 13:27:17
Im zweiten Code hast du die Ausgabe in den Else Zweig verschoben, im If Zweig wird also nie was angezeigt.

Aber mal abgesehen davon: was genau versuchst du eigentlich zu tun? Ich glaube ich ahne es, und ich wette das geht auch deutlich einfacher! ;)

stav0815
2008-07-15, 13:37:03
Naja, es wird aber trotzdem ausgegeben in der Textbox.

Das Programm soll aus einer PI- oder TXT-Datei (diese Dateien werden von einem Pyrometer erzeugt) ein Diagramm des Temperaturverlaufs über die Zeit zeichnen.

Und dass es bestimmt deutlich einfacher geht: glaube ich gerne, bin aber noch sehr in der Lernphase :D

Monger
2008-07-15, 14:16:36
Da du ja beide Code-Schnipsel recht unterschiedlich aufgebaut hast, kann ich nur vermuten dass beide Dateien in völlig verschiedenen Formaten vorliegen - und offensichtlich bei der Interpretation dieses Formats irgendwas schief läuft.

Der Rest bezieht sich ja nunmal nur auf die Ausgabe, oder ist schlicht strukturell identisch.

stav0815
2008-07-15, 15:12:32
Hab den Fehler gefunden. Der Fehler lag in einer total besch.... Formatierung des TXT Files.
Allerdings werden mir nun "lustige" Werte bei yachse[1-ca20] reingeschrieben die ich nicht nachvollziehen kann...

creave
2008-07-18, 17:59:20
Kann dir mit deinen Werten zwar nicht weiterhelfen, jedoch folgendes:



if (typ == "pi" || typ == "PI")



Was ist mit Pi und pI? Schreibe am besten if (typ.ToLower() == "pi") und du hast mit weniger Code alle abgedeckt.

Außerdem würde ich gerade in deinem Fall die catch-Blöcke nicht leer lassen.

Gast
2008-07-18, 22:22:36
Ich würde lädst einmal die Dateien hier hoch (aber bitte wirklich die Dateien, nicht den Text, der drin steht hier posten). Dann können wir dir dein Programm einmal so formatieren, wie man es als erfahrener Programmierer schreibt und vielleicht auch dazuschreiben, warum wir das so machen. Wenn man auf alles alleine drauf kommen muss, ist es mühsam.