S
Hallo,
Ich lege eine ListView (LView) an; aus einer FileListe (flDateien)
lese ich die Dateinamen aus und deren Inhalt mit Daten->LoadFromFile(z1)
dann den Inhalt der Datei in die Stringliste Daten. In Daten->Strings[0]
steht dann jeweils eine Kopfzeile, die ich nun in die ListView einsetzen
möchte. Das Format der Kopfzeile ist dabei z.B.
00 |5401|Kommunikationsanschluss (KS)||Verwaltung|KomTec (ADIK)|1.OG, 113||27.1UATB06,21.EGA:AA:02|27.1UAAG20|||||||||||Scholz, Stefan|Admin|07.06.2005, 09:15:54 > Kunde (Di)|07.06.2005, 09:15:54|||||||||||||||||||||||||||||||||
Mein Trenner (Delimiter) ist das Pipe (ASCI 124). Mit folgenden Zeilen
realisiere ich das ganze; die Caption=5401 und ab Kommunikationsanschluss (KS) dann die SubItems:
Boolean Aktualisieren(int p1,int p2,int p3,AnsiString pt1,TObject *Sender)
{AnsiString z1,z2,z3; int i2,i3,i4,iMax,iAnz; // Vars definieren
TListItem *ListItem; // Vars definieren
TListColumn *ListColumn; // neues Objekt anlegen
TListView *LView = dynamic_cast<TListView *> (Sender); // Versuchen, Sender als ListView anzusprechen
TDateTime DateTime=Now(); // Datum und Uhrzeit speichern
Form1->Cursor=crHourGlass; // Sanduhr
LView->Items->BeginUpdate(); // Änderungen beginnen...
i2=Form1->frm1_btnAktuell->Tag; // Merker auslesen
Form1->frm1_btnAktuell->Tag=0; // und löschen
if(i2==1) { Aktualisieren(99,0,0,"",LView); } // mit Kopfzeilen (Column) aktualisieren
switch(p1) { // was aktualisieren?
case 0: // KOMPLETT
case 1: // SCHNELL
Form1->frm1_lblTab1_Hinweis->Visible=true; // Hinweisschild zeigen
LView->Clear(); // alle Einträge löschen
iAnz=Form1->frm1_flDateien->Count; // Anzahl Dateien
Form1->frm1_proBalken->Max=iAnz; // Balken einstellen
Form1->frm1_proBalken->Position=0; // und erstmal auf Null setzen
for(int i2=0;i2<iAnz;i2++) { // alle Einträge absuchen
Form1->frm1_proBalken->Position=i2+1; // und erstmal auf Null setzen
z1=Form1->frm1_flDateien->Items->operator [](i2); // Filename auslesen
z1=Form1->PrgGeraet+"\\"+z1; // Pfad ergänzen
Form1->Daten->LoadFromFile(z1); // und File laden
z2=Form1->Daten->Strings[0]; // Kopfzeile aus Feld Daten übergeben
ListItem=LView->Items->Add(); // neue Zeile anhängen
ListItem->Caption=DatenPipe(1,1,z2,"!!"); // Bezeichnung übergeben
if(p1==0) { // Komplette Liste aktualisieren
z2=Trim(z2); i3=z2.Length(); // Länge String?
z2=Trim(z2.SubString(z2.AnsiPos("|")+1,i3)); z2=Trim(z2.SubString(z2.AnsiPos("|")+1,i3)); // vorne die Caption kürzen und nur Rest übergeben
//if(Form1->PrgComp) { ShowMessage("Daten: "+z2); } // nur im IDE
ListItem->SubItems->Delimiter=124; // Trenner ist Pipe
ListItem->SubItems->DelimitedText=z2; // und einsetzen
} // ende if(p1
} // ende for(i2
Funktioniert sehr gut, bis auf folgendes. Einträge mit ( wie z.B.
Kommunikationsanschluss (KS) werden auf 2 Spalten aufgeteilt, obwohl
dazwischen weiss Gott kein | steht. Hat jemand eine Idee?
QuoteChar habe ich testhalber mal auf Null gesetzt, auch keine Erfolg.
Danke für jeden Tipp; mir kommt das unlogisch vor und grübel an dem
Problem auch schon sehr lange.
Gruss Stefan Scholz