C++ Builder Snippets  

Feld aus einem String (getr. Felder) extrahieren:
 
//----------------------------------------------------------------------
//  Beschreibung: Extrahiert Feldinhalt aus dem String mit getr. Feldern
//  Parameter:    1. der Ausgangsstring       als String
//                2. der Feldertrennstring    als String
//                3. die Feldnummer           als Integer
//----------------------------------------------------------------------

AnsiString ExtractFieldContents(AnsiString slInputStr,
  AnsiString slSeparator, int ilField)
{
  // falls Feldnummer oder Separator ungültig, leeren String zurückgeben:
  if(ilField < 1 || slSeparator == EmptyStr)
    return EmptyStr;

  // Nummer des letzten Buchstaben des gesuchten Teilstrings:
  int ilLastChar = 0;

  // Falls gesuchtes Feld gleich als erstes kommt:
  if(ilField == 1)
  {
    // Falls keine Trennzeichen im Hauptstring vorhanden:
    if(slInputStr.Pos(slSeparator) < 1)
      // ganzer String ist unser:
      ilLastChar = slInputStr.Length();
    else
      // ansonsten letzten Buchstaben merken:
      ilLastChar = slInputStr.Pos(slSeparator) - 1;
  }
  // falls nicht 1. Feld gesucht:
  else
  {
    // in Schleife nach den Trennzeichen suchen
    for(int ilFieldNo = 1; ilFieldNo < ilField; ilFieldNo++)
    {
      // Falls Trennzeichen gefunden:
      if(slInputStr.Pos(slSeparator) > 0)
      {
        // nicht benötigtes Feldes killen:
        slInputStr = slInputStr.SubString(slInputStr.Pos(slSeparator)+1,
          slInputStr.Length() - slInputStr.Pos(slSeparator) + 1);
      }
      // Falls keine Trennzeichen mehr, obwohl welche da sein sollten,
      // String killen:
      else slInputStr = EmptyStr;
    }

    // Falls im geköpften String keine Leerzeichen mehr vorhanden,
    // ganzen String nehmen
    if(slInputStr.Pos(slSeparator) < 1)
      ilLastChar = slInputStr.Length();
    // ansonsten letzten Buchstaben merken:
    else
      ilLastChar = slInputStr.Pos(slSeparator) - 1;
  }

  // falls überhaupt noch irgendetwas vom Hauptstring übrig:
  if(slInputStr.Length() > 0 && ilLastChar <= slInputStr.Length())
    // Feldinhalt herausschneiden und zurückgeben
    return slInputStr.SubString(1, ilLastChar);
  else
    // ansonsten leeren String zurückgeben:
    return EmptyStr;
}



© '99-2000 by S. Kreutzmann