Warum machst du es dir so schwer und versuchst alles gleichzeitig und auch "Mehrfachzeichen" mit Einzelzeichenoperationen zu verarbeiten?
Wenn/da es nicht auf's Tempo ankommt.
Delphi-Quellcode:
while ContainStr(S, ',,') do // nach zwei Durchläufen sind auch ',,,' nur noch ',' usw.
S := ReplaceStr(S, ',,', ',');
Und dannach
Delphi-Quellcode:
S := ReplaceStr(S, 'X01', '' Typ A: ');
S := ReplaceStr(S, '01', '' Typ B: ');
Man kann natürlich auch mit Pos/PosEx Zeichenketten suchen und über Delete+Insert ersetzen.
Oder per RegEx nach "mehreren" Kommas suchen und sie durch ein ',' ersetzen.
Mit 2 TStringList kann man auch Einzelzeilen und darin einzelne Teilstrings verarbeiten.
Erste StringList für die Zeilen und dann jeweils eine Zeile in TStringList.CommaText oder TStringList.DelimitedText kopieren.
In der 2. StringList alle Werte ohne inhalt löschen und in den einzelwerten das ReplaceStr anwenden.
Nach auslesen und zurückschreiben des CommaText sind dann auch mehrfache Kommas aufgelöst (",," ist ein Leerstring zwischen den Kommas
)
und auch Kommas am Anfang und Ende sind weg (falls man beim Delete nicht den ersten und letzten Leerstring beibehält).