Hallo,
hab (mal wieder) ein kleines Problem.
Also ich habe eine Textdatei mit dem Aufbau
str1a; str1b; str1c; str1d
str2a; str2b; str2c; str2d
str3a; str3b; str3c; str3d
str4a; str4b; str4c; str4d
Alle strXa Elemente sollen zur Datensatzauswahl in einer Combobox landen. Mein Problem ist nun, dass an Stelle von str1a, str2a... immer nur str4a (d.h.das letzte Element) dort landet.
Die zwei Klassen zum Einlesen der Testdatei:
class adr_t {
string[] s;
int length;
// Constructor
public adr_t(int len) {
if (len > 0) {
s = new string[len];
this.length = len;
} else {
MessageBox.Show("Adressindexfehler",
Application.ProductName,
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
public int Length { get { return length; } }
// Indexer
public string this[int i] {
get {
if (i < 0 || i >= length) {
throw new IndexOutOfRangeException(); }
return s[i]; }
set {
if (i < 0 || i >= length) {
throw new IndexOutOfRangeException(); }
s[i] = value; }
}
}
//--------------------------------------------------------------------------
class Adressen {
const int adrparts = 4; // 4 Felder pro Adresse
int cnt;
adr_t a;
ArrayList lst;
// Constructor
public Adressen(string fn) {
try {
a = new adr_t(AdrParts);
lst = new ArrayList();
using (StreamReader sr = new StreamReader(fn)) {
string line;
string[] split = new string[adrparts];
while ((line = sr.ReadLine()) != null) {
// faengt Leerzeilen ab, AdrParts -1 Delimiter sind möglich
if (line.Length > adrparts - 1) {
split = line.Split(';');
for (int i=0; i<adrparts; i++) { a[i] = split[i]; }
lst.Add(a);
cnt++;
} // if
} // while
} // using
} catch (Exception ex) {
MessageBox.Show("Anwendungsfehler: " + ex.Message,
Application.ProductName,
MessageBoxButtons.OK,
MessageBoxIcon.Error); }
} // constructor Adressen
public adr_t this[int i] { get { return (adr_t)lst[i]; } }
public int count { get { return cnt; } }
public int AdrParts { get { return adrparts; } }
}
}
Nun der Zugriffseil in der Klasse MainForm:
...
Adressen adressen = new Adressen(PathADR);
...
// Combobox mit 1. Zeile der jeweiligen Adresse fuellen
for (int i=0; i<adressen.count ; i++) { cbREan.Items.Add(adressen[i][0]); }
Was mache ich falsch ???
Danke für jeden Hinweis
Gruß
Horst
hab (mal wieder) ein kleines Problem.
Also ich habe eine Textdatei mit dem Aufbau
str1a; str1b; str1c; str1d
str2a; str2b; str2c; str2d
str3a; str3b; str3c; str3d
str4a; str4b; str4c; str4d
Alle strXa Elemente sollen zur Datensatzauswahl in einer Combobox landen. Mein Problem ist nun, dass an Stelle von str1a, str2a... immer nur str4a (d.h.das letzte Element) dort landet.
Die zwei Klassen zum Einlesen der Testdatei:
class adr_t {
string[] s;
int length;
// Constructor
public adr_t(int len) {
if (len > 0) {
s = new string[len];
this.length = len;
} else {
MessageBox.Show("Adressindexfehler",
Application.ProductName,
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
public int Length { get { return length; } }
// Indexer
public string this[int i] {
get {
if (i < 0 || i >= length) {
throw new IndexOutOfRangeException(); }
return s[i]; }
set {
if (i < 0 || i >= length) {
throw new IndexOutOfRangeException(); }
s[i] = value; }
}
}
//--------------------------------------------------------------------------
class Adressen {
const int adrparts = 4; // 4 Felder pro Adresse
int cnt;
adr_t a;
ArrayList lst;
// Constructor
public Adressen(string fn) {
try {
a = new adr_t(AdrParts);
lst = new ArrayList();
using (StreamReader sr = new StreamReader(fn)) {
string line;
string[] split = new string[adrparts];
while ((line = sr.ReadLine()) != null) {
// faengt Leerzeilen ab, AdrParts -1 Delimiter sind möglich
if (line.Length > adrparts - 1) {
split = line.Split(';');
for (int i=0; i<adrparts; i++) { a[i] = split[i]; }
lst.Add(a);
cnt++;
} // if
} // while
} // using
} catch (Exception ex) {
MessageBox.Show("Anwendungsfehler: " + ex.Message,
Application.ProductName,
MessageBoxButtons.OK,
MessageBoxIcon.Error); }
} // constructor Adressen
public adr_t this[int i] { get { return (adr_t)lst[i]; } }
public int count { get { return cnt; } }
public int AdrParts { get { return adrparts; } }
}
}
Nun der Zugriffseil in der Klasse MainForm:
...
Adressen adressen = new Adressen(PathADR);
...
// Combobox mit 1. Zeile der jeweiligen Adresse fuellen
for (int i=0; i<adressen.count ; i++) { cbREan.Items.Add(adressen[i][0]); }
Was mache ich falsch ???
Danke für jeden Hinweis
Gruß
Horst
Comment