Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Аналог StringTokenizer в VCL

24K
09 ноября 2007 года
Starlit
16 / / 17.05.2007
В Java есть удобный класс StringTokenizer. Может, кто-нить знает аналог этого класса в VCL?
24K
10 ноября 2007 года
Starlit
16 / / 17.05.2007
Вот решил сам написать :)
если будут замечания/предложения — с радостью выслушаю. Заранее спасибо.

Код:
class StringTokenizer {
public:
    StringTokenizer(String stringToParse, char _token) {
        fData = stringToParse;
        fToken = _token;
        fCount = getCountParts();
        fStrings = new String[fCount];
        parseData();
    }

    ~StringTokenizer() {
        delete []fStrings;
    }

    __property int count  = { read = fCount };
    __property char token = { read = fToken };
    __property String data  = { read = fData };
    __property String strings[int n]  = { read = getString };

private:
    String* fStrings;
    int fCount;

    String fData;
    char fToken;

    int getCountParts() {
        int c = 0;
        int ln = fData.Length();

        for(int j = 0; j < (ln+1); j++) {
            char ch = (data.c_str())[j];
            if(ch==token || ch=='\0') {
                c++;
            }
        }

        return c;
    };

    String getString(int n) {
        if (n<0 || n>fCount) {
            return "index out of bounds";            
        } else {
            return fStrings[n];
        }
    };

    void parseData() {
        int c = 0;
        String buffer = "";
        int ln = fData.Length();

        for(int j = 0; j < (ln+1); j++) {
            char ch = (data.c_str())[j];
            if(ch==token || ch=='\0') {
                fStrings[c] = buffer;
                c++;
                buffer = "";
            } else {
                buffer+=String(ch);
            }
        }
    };
};
1
10 ноября 2007 года
kot_
7.3K / / 20.01.2000
Цитата: Starlit
Вот решил сам написать :)
если будут замечания/предложения &#8212; с радостью выслушаю. Заранее спасибо.

 
Код:
class StringTokenizer {
...

};



спасибо конечно. А чем вас не устраивает стандартные методы класса TStrings? например DelimitedText? Это так - к слову. Функциональность вашего класса не проверял.

24K
10 ноября 2007 года
Starlit
16 / / 17.05.2007
Честно говоря, забыл про эту функцию. Спасибо, посмотрю, может она удобнее моего класса.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог