ListView und Delimiter / DelimitedText
-
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(i2Funktioniert 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