<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[ListView und Delimiter &#x2F; DelimitedText]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich lege eine ListView (LView) an; aus einer FileListe (flDateien)<br />
lese ich die Dateinamen aus und deren Inhalt mit Daten-&gt;LoadFromFile(z1)<br />
dann den Inhalt der Datei in die Stringliste Daten. In Daten-&gt;Strings[0]<br />
steht dann jeweils eine Kopfzeile, die ich nun in die ListView einsetzen<br />
möchte. Das Format der Kopfzeile ist dabei z.B.</p>
<p>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 &gt; Kunde (Di)|07.06.2005, 09:15:54|||||||||||||||||||||||||||||||||</p>
<p>Mein Trenner (Delimiter) ist das Pipe (ASCI 124). Mit folgenden Zeilen<br />
realisiere ich das ganze; die Caption=5401 und ab Kommunikationsanschluss (KS) dann die SubItems:</p>
<pre><code class="language-cpp">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&lt;TListView *&gt; (Sender);                       // Versuchen, Sender als ListView anzusprechen
 TDateTime   DateTime=Now();                                                    // Datum und Uhrzeit speichern

 Form1-&gt;Cursor=crHourGlass;                                                     // Sanduhr
 LView-&gt;Items-&gt;BeginUpdate();                                                   // Änderungen beginnen...

 i2=Form1-&gt;frm1_btnAktuell-&gt;Tag;                                                // Merker auslesen
 Form1-&gt;frm1_btnAktuell-&gt;Tag=0;                                                 // und löschen
 if(i2==1) { Aktualisieren(99,0,0,&quot;&quot;,LView); }                                  // mit Kopfzeilen (Column) aktualisieren

 switch(p1) {                                                                   // was aktualisieren?
 case 0:                                                                        // KOMPLETT
 case 1:                                                                        // SCHNELL
  Form1-&gt;frm1_lblTab1_Hinweis-&gt;Visible=true;                                    // Hinweisschild zeigen

  LView-&gt;Clear();                                                               // alle Einträge löschen
  iAnz=Form1-&gt;frm1_flDateien-&gt;Count;                                            // Anzahl Dateien
  Form1-&gt;frm1_proBalken-&gt;Max=iAnz;                                              // Balken einstellen
  Form1-&gt;frm1_proBalken-&gt;Position=0;                                            // und erstmal auf Null setzen

  for(int i2=0;i2&lt;iAnz;i2++) {                                                  // alle Einträge absuchen
   Form1-&gt;frm1_proBalken-&gt;Position=i2+1;                                        // und erstmal auf Null setzen

   z1=Form1-&gt;frm1_flDateien-&gt;Items-&gt;operator [](i2);                            // Filename auslesen
   z1=Form1-&gt;PrgGeraet+&quot;\\&quot;+z1;                                                 // Pfad ergänzen
   Form1-&gt;Daten-&gt;LoadFromFile(z1);                                              // und File laden
   z2=Form1-&gt;Daten-&gt;Strings[0];                                                 // Kopfzeile aus Feld Daten übergeben

   ListItem=LView-&gt;Items-&gt;Add();                                                // neue Zeile anhängen
   ListItem-&gt;Caption=DatenPipe(1,1,z2,&quot;!!&quot;);                                    // Bezeichnung übergeben
   if(p1==0) {                                                                  // Komplette Liste aktualisieren
    z2=Trim(z2); i3=z2.Length();                                                // Länge String?
    z2=Trim(z2.SubString(z2.AnsiPos(&quot;|&quot;)+1,i3)); z2=Trim(z2.SubString(z2.AnsiPos(&quot;|&quot;)+1,i3));   // vorne die Caption kürzen und nur Rest übergeben
    //if(Form1-&gt;PrgComp) { ShowMessage(&quot;Daten: &quot;+z2); }                           // nur im IDE
    ListItem-&gt;SubItems-&gt;Delimiter=124;                                          // Trenner ist Pipe
    ListItem-&gt;SubItems-&gt;DelimitedText=z2;                                       // und einsetzen
   }                                                                            // ende if(p1
  }                                                                             // ende for(i2
</code></pre>
<p>Funktioniert sehr gut, bis auf folgendes. Einträge mit ( wie z.B.<br />
Kommunikationsanschluss (KS) werden auf 2 Spalten aufgeteilt, obwohl<br />
dazwischen weiss Gott kein | steht. Hat jemand eine Idee?<br />
QuoteChar habe ich testhalber mal auf Null gesetzt, auch keine Erfolg.</p>
<p>Danke für jeden Tipp; mir kommt das unlogisch vor und grübel an dem<br />
Problem auch schon sehr lange.</p>
<p>Gruss Stefan Scholz</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/129750/listview-und-delimiter-delimitedtext</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Jul 2026 18:26:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/129750.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 16 Dec 2005 11:38:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ListView und Delimiter &#x2F; DelimitedText on Fri, 16 Dec 2005 11:38:16 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich lege eine ListView (LView) an; aus einer FileListe (flDateien)<br />
lese ich die Dateinamen aus und deren Inhalt mit Daten-&gt;LoadFromFile(z1)<br />
dann den Inhalt der Datei in die Stringliste Daten. In Daten-&gt;Strings[0]<br />
steht dann jeweils eine Kopfzeile, die ich nun in die ListView einsetzen<br />
möchte. Das Format der Kopfzeile ist dabei z.B.</p>
<p>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 &gt; Kunde (Di)|07.06.2005, 09:15:54|||||||||||||||||||||||||||||||||</p>
<p>Mein Trenner (Delimiter) ist das Pipe (ASCI 124). Mit folgenden Zeilen<br />
realisiere ich das ganze; die Caption=5401 und ab Kommunikationsanschluss (KS) dann die SubItems:</p>
<pre><code class="language-cpp">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&lt;TListView *&gt; (Sender);                       // Versuchen, Sender als ListView anzusprechen
 TDateTime   DateTime=Now();                                                    // Datum und Uhrzeit speichern

 Form1-&gt;Cursor=crHourGlass;                                                     // Sanduhr
 LView-&gt;Items-&gt;BeginUpdate();                                                   // Änderungen beginnen...

 i2=Form1-&gt;frm1_btnAktuell-&gt;Tag;                                                // Merker auslesen
 Form1-&gt;frm1_btnAktuell-&gt;Tag=0;                                                 // und löschen
 if(i2==1) { Aktualisieren(99,0,0,&quot;&quot;,LView); }                                  // mit Kopfzeilen (Column) aktualisieren

 switch(p1) {                                                                   // was aktualisieren?
 case 0:                                                                        // KOMPLETT
 case 1:                                                                        // SCHNELL
  Form1-&gt;frm1_lblTab1_Hinweis-&gt;Visible=true;                                    // Hinweisschild zeigen

  LView-&gt;Clear();                                                               // alle Einträge löschen
  iAnz=Form1-&gt;frm1_flDateien-&gt;Count;                                            // Anzahl Dateien
  Form1-&gt;frm1_proBalken-&gt;Max=iAnz;                                              // Balken einstellen
  Form1-&gt;frm1_proBalken-&gt;Position=0;                                            // und erstmal auf Null setzen

  for(int i2=0;i2&lt;iAnz;i2++) {                                                  // alle Einträge absuchen
   Form1-&gt;frm1_proBalken-&gt;Position=i2+1;                                        // und erstmal auf Null setzen

   z1=Form1-&gt;frm1_flDateien-&gt;Items-&gt;operator [](i2);                            // Filename auslesen
   z1=Form1-&gt;PrgGeraet+&quot;\\&quot;+z1;                                                 // Pfad ergänzen
   Form1-&gt;Daten-&gt;LoadFromFile(z1);                                              // und File laden
   z2=Form1-&gt;Daten-&gt;Strings[0];                                                 // Kopfzeile aus Feld Daten übergeben

   ListItem=LView-&gt;Items-&gt;Add();                                                // neue Zeile anhängen
   ListItem-&gt;Caption=DatenPipe(1,1,z2,&quot;!!&quot;);                                    // Bezeichnung übergeben
   if(p1==0) {                                                                  // Komplette Liste aktualisieren
    z2=Trim(z2); i3=z2.Length();                                                // Länge String?
    z2=Trim(z2.SubString(z2.AnsiPos(&quot;|&quot;)+1,i3)); z2=Trim(z2.SubString(z2.AnsiPos(&quot;|&quot;)+1,i3));   // vorne die Caption kürzen und nur Rest übergeben
    //if(Form1-&gt;PrgComp) { ShowMessage(&quot;Daten: &quot;+z2); }                           // nur im IDE
    ListItem-&gt;SubItems-&gt;Delimiter=124;                                          // Trenner ist Pipe
    ListItem-&gt;SubItems-&gt;DelimitedText=z2;                                       // und einsetzen
   }                                                                            // ende if(p1
  }                                                                             // ende for(i2
</code></pre>
<p>Funktioniert sehr gut, bis auf folgendes. Einträge mit ( wie z.B.<br />
Kommunikationsanschluss (KS) werden auf 2 Spalten aufgeteilt, obwohl<br />
dazwischen weiss Gott kein | steht. Hat jemand eine Idee?<br />
QuoteChar habe ich testhalber mal auf Null gesetzt, auch keine Erfolg.</p>
<p>Danke für jeden Tipp; mir kommt das unlogisch vor und grübel an dem<br />
Problem auch schon sehr lange.</p>
<p>Gruss Stefan Scholz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/943443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943443</guid><dc:creator><![CDATA[Stefan71242]]></dc:creator><pubDate>Fri, 16 Dec 2005 11:38:16 GMT</pubDate></item></channel></rss>