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

Ваш аккаунт

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

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

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

Загрузка из файла слова с разделителем Tab

13K
05 января 2007 года
CuHaK
31 / / 28.10.2006
Вот все обыскал ниче не нашел.
Такая вот проблемка.
Есть файл допустим такого содержания.
 
Код:
Слово1<TAB>Слово2<TAB>Слово3

Как видите между словами стоит разделитель который в текстовике ставится нажатием клавишой Tab так вот мне надо загрузить
Слово1->Edit1
Слово2->Edit2
Слово3->Edit3

Помогите реализовать никак не пойму. :( :confused:
1
05 января 2007 года
kot_
7.3K / / 20.01.2000
Использовать свойство класса TStringList->Delimeter - это раз. Самостоятельно считывать и парсить текст - это два.
13K
05 января 2007 года
CuHaK
31 / / 28.10.2006
А можно код если файл допустим лежит в папке с проектом и называется test.txt повторюсь в нем всего одна строка Слово1<TAB>Слово2<TAB>Слово3
11K
05 января 2007 года
zbestr
40 / / 07.04.2006
может что-то типа:
Цитата:

int file;
char ch; // буфер - одна буковка
AnsiString tmp, c;
// открываем
if ( (file = open("filename",O_RDONLY)) > 0) //а открылся ли???
{ //если да, то
do // читаем
{
read(handle, &ch, 1);
c = ch;
if (c == "\t") // вроде проверка на таб
{
// берем tmp и делаем с ним чего хотим
tmp = ""; // очищаем
}
else // читаем слово дальше
{
tmp = tmp+c; // прибавляем буковку
};

} while (!eof(handle)); // до конца файла
}
else {
// если нет, то сообщение надо бы вывести или обработать как-нибудь
};
close(handle); // закроем файлик


Ну а разберешься - упростишь...

294
09 января 2007 года
Plisteron
982 / / 29.08.2003
Цитата: kot_
Использовать свойство класса TStringList->Delimeter - это раз. Самостоятельно считывать и парсить текст - это два.


Почитать FAQ -- это три. :))

4.1K
09 января 2007 года
Zeran
80 / / 21.07.2006
А мона так, помому:
TStringList *LIST = new TStringList;
LIST->Delimiter = "\t";
LIST->DelimitedText = "Слово1<TAB>Слово2<TAB>Слово3";
Точно не помню, и неначем проверить под рукой, порой мануал по ДелимитедТексту...
294
10 января 2007 года
Plisteron
982 / / 29.08.2003
Цитата: Zeran
А мона так, помому:
TStringList *LIST = new TStringList;
LIST->Delimiter = "\t";
LIST->DelimitedText = "Слово1<TAB>Слово2<TAB>Слово3";
Точно не помню, и неначем проверить под рукой, порой мануал по ДелимитедТексту...



Ыгы. В FAQ этот метод наличествует.

1.9K
20 февраля 2007 года
Anton Chik
175 / / 26.09.2005
а как быть если у нас
 
Код:
LIST->DelimitedText = "Слово1 Слово2<TAB>Слово3 Слово 4 Слово 5<TAB>Слово6";

?
в смысле если добавить пробелы... разобьет не по табам а по пробелам...

ладно,не бейте, воспользовался поиском и попал сюда:
http://forum.codenet.ru/showthread.php?t=31001&highlight=Delimiter
18K
26 февраля 2007 года
xxZERANxx
12 / / 19.02.2007
Понимаю что позновато, но сам столкнулся с такой траблой...
Вот мож кому исчо понадобится, очень даже прикольная ф-ция =)
Код:
TStrings * _split(AnsiString inputString,AnsiString Separator,int counts)
{
        TStrings * result = new TStringList();
        int pos2=1, pos1=1, cnt;
        //=====================================
        for (;;)
        {
         pos2 = AnsiPos(Separator, inputString);
         cnt = pos2 - pos1;
         if (pos2 == 0){
          result->Add(inputString);
          break;
         } else {
         result->Add(inputString.SubString(pos1, cnt));
         }
         inputString.Delete(pos1, cnt+Separator.Length());
         if (pos2 == 0) break;
         if (counts != 0 && counts == result->Count)
         break;
        }
        //=====================================
        return result;
}

AnsiString inputString - строка, которую нуна порубать
AnsiString Separator - разделитель (символ или сттрока)
int counts - кол-во разбиваемых елементов (0 - разбить всю строку)
[SIZE="4"][COLOR="DarkRed"]Пример:[/COLOR][/SIZE]
 
Код:
Memo1->Lines = _split("1111SEPARATOR22222SEPARATOR33333SEPARATOR", "SEPARATOR", 2);

Результат:
1111
22222
 
Код:
Memo1->Lines = _split(SomeTextBuff, "\n", 0);

Результат:
Разобьет весь текстовый буфер на строки и вернет TString result, ими заполненый...
З.Ы: сам мучился месяц пока не поборол свою лень и не написал =)
Всем сенкс и бб...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог