.Pos("\\") ergibt nicht true, obwohl es müsste



  • ich möchte in einem edit den backslash entfernen wenn es sich nur um z.B. C:\ oder so handelt. dazu mach ich das wie folgt:

    if(Input->Text.Length() == 3 && Input->Text.Pos("\\") == 1)
    	{
    		Input->Text.Delete(3,1);
    	}
    

    jeodch wird die if-anweisung nicht erfüllt? jedenfalls was das mit Pos angeht. Length() ist ok aber bei Pos klappt es nicht und Delete scheint auch nicht zu klappen (allgemein) 😉 geht Pos erst ab 3 chars oder geht es mit \\ nicht? was amche ich falsch bzw. wie kann ich es anders machen?



  • Was ist der Rückgabewert von "POs"?



  • scheinbar false weils nicht geht ;o) 😞



  • Hallo

    Aus der BCB-Hilfe zu Pos

    Es wird der Index im AnsiString-Objekt zurückgegeben, an dem der Teilstring subStr beginnt. 1 ist dabei der Index des ersten Zeichens, 2 der des zweiten usw. Wenn der angegebene Teilstring nicht im AnsiString-Objekt enthalten ist, hat Pos den Rückgabewert 0.

    Das ist doch eindeutig, oder?

    bis bald
    akari



  • ok macht sinn. wusste ich eben nicht, ich dachte das wäre wie bei strcmp ein rückgabewert von true/false.

    aber das TEdit Text.Delete geht nicht? 🙂 jedenfalls löscht es mir kein zeichen. weder mit (index, count) 1,1 2,1 oder 3,1 🙄



  • Hallo

    aus der BCB_Hilfe

    Aus dem String wird die mit count festgelegte Anzahl von Zeichen entfernt. Die Löschung beginnt bei der mit index angegebenen Position. 1 gibt dabei die erste Position im String an. Die Methode gibt den geänderten Ergebnis-String zurück. (*this)

    ist ebenfalls eindeutig, oder?

    bis bald
    akari



  • alles klar danke! :p
    Edit1->Text = Edit1->Text.Delete(3,1);

    sprich: zuweisung wars 🕶 👍



  • Hallo,

    Für Deine Zwecke wäre aber "ExcludeTrailingPathDelimiter" besser geeignet.

    Bis dann denn,
    🙂
    Nash


Anmelden zum Antworten