[C++] Filename obcinanie rozszerzenia


(rafalski) #1
if(OpenDialog1->Execute())

        {

                Edit1->Text=(OpenDialog1->FileName);

        }

Potrzebuje do pola Edit2->Text wpisać tę samą ścieżkę, tyle że z innym rozszerzeniem (czyli z tyłu obciąć cztery znaki i dodać np. rozszerzenie .pla). Jak to zrealizować?


(Frankfurterium) #2

Piszesz to w C++ .NET-owym? String powinien mieć metodę LastIndexOf. Wyszukujesz ostatnie wystąpienie kropki i usuwasz wszystko po niej.

[edit]

To w takim razie raczej nie pomogę. Można co prawda zrobić to którymś uniwersalnym sposobem (np. podzielić na substringi z kropką jako separatorem, potem złączyć wszystkie oprócz ostatniego), ale na pewno są rozwiązania subtelniejsze, bardziej specyficzne dla 'dialektu'.


(rafalski) #3

Nie, piszę w C++ builder

-- Dodane 24.01.2012 (Wt) 0:23 --

A jak np Edit1->Text przyciąć o 4 znaki?


(Frankfurterium) #4

Przepisać znaki od 0 do długość - 5 do nowego stringa i podstawić pod -> Text. Tyle że rozszerzenia nie zawsze mają 3 znaki. Jeżeli program ma wczytywać tylko jeden rodzaj plików, to ok, ale i tak niezbyt to eleganckie rozwiązanie.


(Grzegorz) #5

Można skorzystać ze stringa C++owego, z metody find_last_of.