Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2010, 17:06   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию Выбрать данные мкжду \

Есть строка
\параметр1\1\параметр2\2\параметр3\ 3\параметр4\1000\
Данные пытаюсь выводить так
Код:
var
  txt: string;
  a: Integer;
begin
  txt := '\параметр1\1\параметр2\2\параметр3\3\параметр4\1000\';
  txt := Copy(txt, 2, length(txt)); // Убираю первый \

  a := Pos('\', txt); // Позиционируюсь на \

  Label1.Caption := Copy(txt, 1, a - 1); // Вывожу параметр1
  Delete(txt, 1, a - 2); // Пытаюсь удалить параметр1, но без успешно
  Label2.Caption := Copy(txt, 1, a - 1); // пытаюсь вывести значение параметра1, но снова неудача и видимо из-запредыдущей строки
Прошу вашей помощи
Shouldercannon вне форума Ответить с цитированием
Старый 19.10.2010, 17:23   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Код:
function Tokenize(Str: WideString; Delimiter: string): TStringList;
var
  tmpStrList: TStringList;
  tmpString, tmpVal: WideString;
  DelimPos: LongInt;
begin
  tmpStrList := TStringList.Create;
  TmpString := Str;
  DelimPos := 1;
  while DelimPos > 0 do
  begin
    DelimPos := LastDelimiter(Delimiter, TmpString);
    tmpVal := Copy(TmpString, DelimPos + 1, Length(TmpString));
    if tmpVal <> '' then
      tmpStrList.Add(UpperCase(tmpVal));
    Delete(TmpString, DelimPos, Length(TmpString));
  end;
  Tokenize := tmpStrList;
end;
Код:
var sl: TStringList;
begin
sl:= TStringList.Create;
sl:= Tokenize('\параметр1\1\параметр2\2\параметр3\3\параметр4\1000\', '\');
ShowMessage(sl.Text);
sl.Free;
end;
_SERGEYX_ вне форума Ответить с цитированием
Старый 19.10.2010, 17:34   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Очень даже хороший пример, но
1. Почему он выводит данные справа налево
\параметр1\1\параметр2\2\ -> параметр2 - 2 - параметр1 - 1
2. Если в строке есть данные написанные с маленькой буквы, то после обработки они становятся с большой
max - MAX
P.S. Как можно полученный результат вывести ListView в две колонки (Параметр|Значение)?

Последний раз редактировалось Shouldercannon; 19.10.2010 в 17:37.
Shouldercannon вне форума Ответить с цитированием
Старый 19.10.2010, 17:43   #4
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

1.
Код:
tmpStrList.Add(tmpVal);
//напиши вместо этого, что-то типа
tmpStrList.Text:=tmpVal+#13+#10+ tmpStrList.Text;
//Чтобы строку не в конец а в начало писать.
2.
Код:
tmpStrList.Add(UpperCase(tmpVal));
//Убери UpperCase
tmpStrList.Add(tmpVal);
_SERGEYX_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как выбрать данные из таблицы и занести их в Edit Лера123 Помощь студентам 1 16.10.2010 14:35
Выбрать данные из диапазона дат в ADOQuery antoni БД в Delphi 4 27.07.2010 19:08
Выбрать данные по указанному условию Vladsgs Microsoft Office Excel 3 19.05.2010 12:58
как выбрать несовпадающие данные из двух таблиц Tatu Microsoft Office Access 2 16.03.2010 20:41
Выбрать данные из массива kzld Microsoft Office Excel 8 26.01.2009 06:36