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

Ваш аккаунт

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

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

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

Работа со строками

420
12 августа 2006 года
Fobos
197 / / 10.03.2006
Есть один вопросик. Кто хоть немного знает PHP должны знать функцию $arrayOfStr=explode($delimiter, $stroka);

Эта функция разбивает строку $stroka на массив подстрок $arrayOfStr, деля исходную строку в тех местах, где расположена строка (символ) $delimiter.

Вопрос 1: Я хотел спросить - есть ли в Delphi подобная функция или как её реализовать.

Вопрос 2: В общем есть такая фишка - текстовая БД. Мне из неё надо список с SQL запросами надо сделать. Вид строк в текстовой БД примерно такой:
Данные1|данные2|данные3|и т.д.|данные_n

На первый вопрос ответите, то будет понятно, как поделить данные друг от друга, но там другая проблема.
Каждый блок данных находится в отдельной строке, т.е.:
Данные1|данные2|данные3|и т.д.|данные_n
Данные1|данные2|данные3|и т.д.|данные_n
Данные1|данные2|данные3|и т.д.|данные_n
Загвоздка в том, что некоторые строки размером больше, чем 1024 символа и поэтому они разбиты на 2 строки. Вот я и думаю - как их объединять. Ведь из каждой строки формируется отдельный SQL запрос...

Заранее ОГРОМНОЕ СПАСИБО!
5
12 августа 2006 года
hardcase
4.5K / / 09.08.2005
Вот тебе explode на Делфи.
Код:
uses
  StrUtils;

// для Win32 созданный экземпляр TStringList нужно уничтожать Free методом
// в .NET среда сама его может угробить
//   это просто пример - в твоём коде вызов Result.Add можно заменить на передачу строки
//   некой обрабатывающей процедуре.
function Explode(const delim, str: string): TStringList;
var offset: integer;
    cur: integer;
    dl: integer;
begin
  Result:=TStringList.Create;
  dl:=Length(delim);
  offset:=1;
  while True do begin
      cur:=PosEx(delim, str, offset);
      if cur > 0 then
          Result.Add(Copy(str, offset, cur - offset))
      else begin
          Result.Add(Copy(str, offset, Length(str) - offset + 1));
          Break
      end;
      offset:=cur + dl;
  end;
end;


По вопросу обработки строк могу сказать только то, что нужно смотреть сколько вообще столбцов в БД. а потом их выбирать последовательно.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог