Nach bestimmten Zeichen in einem Ansistring suchen
-
Hallo
ich möchte gerne in einem AnsiString nach bestimmten Zeichen suchen z.B. ":" oder "." und ",", um Informationen herauszufiltern. Mit einem char Array ist das einfach, aber AnsiString. Gibt es da auch Funktionen oder Methoden. Habe nichts brauchbares gefunden.
Vielen lieben Dank schonmal
-
Hallo,
Hast du mal in die Hilfe zu AnsiString geschaut?
Da gibt es z.Bsp. AnsiString::Pos()
Desweiteren kannst du in einem AnsiString genau wie in einem char-Array mit [] auf die einzelnen Zeichen zugreifen.
-
Ja, Pos hatte ich schon gefunden, aber wenn die Zeichen öfters auftauchen klappt das nicht. Ich Probier das mal mit AnsiString x[]...
-
Gibt den Indexwert eines Teilstrings zurück.
Unit
StrUtilsSyntax
[C++] int PosEx (AnsiString SubStr, AnsiString S, int Offset);
Beschreibung
PosEx gibt den Index von SubStr in S zurück, wobei die Suche bei Offset begonnen wird. Wenn Offset 1 ist (Vorgabe), entspricht PosEx Pos.PosEx gibt 0 zurück, wenn SubStr nicht gefunden wird, Offset größer als die Länge von S ist oder Offset kleiner als 1 ist.
-
schau mal nach hier:
AnsiString s = "c:\\filename.ext"; s.LastDelimiter("\\.:" );ist direkt aus der BCB6 Hilfe!!
Gruß KY
-
@Christian411
Da sieht man mal, dass der BCB6 doch ein paar sinnvolle Erweiterungen hat. Beim BCB5 (meiner) gibt es diese Funktion nicht.
@ky_fr34k
Kannst du mir bitte mal verraten was das mit dem Thema zu tun hat.@allgemein
Wenn mans noch etwas komfortabler haben will, kann man auch std::string nehmen. Da gibt es find und verwandte Funktionen, die alle Möglichkeiten bieten.
-
@Braunstein
Der BCB 6 kennt kein PosEx ...
-
Das war einfach eine Vermutung von mir.

Ich hab jetzt mal nachgeschaut und festgestellt, dass diese Funktion erst mit dem BDS2006 kommt.
-
LastDelimiter(..);
gibt immer die letzte position des gesuchten zeichens aus!
so was wollt er doch, oder?
Gruß KY
-
Hallo
Hab es einfach so gelöst
for(int x=1;x<(First->Strings[0].Length())+1;x++) { if(First->Strings[0][x]==46||First->Strings[0][x]==58||First->Strings[0][x]==10||First->Strings[0][x]==44) {ZeitDaten->Add(s);s="";} else s=s+First->Strings[0][x]; } ZeitDaten->Add(s); }Läuft.
Vielen Dank
-
@ky_fr34k
Dann lies dir den ersten Post in diesen Thread nochmal durch. Da steht weder etwas vom letzten Zeichen, noch was von Delimitern.