Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разбор строки, Функция обратная формат 
:(
    Опции темы
WolfON
Дата 25.5.2007, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: нет
Всего: 8



Есть строка, допустим:
Код

3 2 1


Надо занести все эти значения в переменные.
Очень хочется найти что-то вроде sreadf(s, "%i %i %i", x, y, z);
PM MAIL ICQ   Вверх
Yanis
Дата 25.5.2007, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 6
Всего: 111



Код
var
  x, y, z: Integer;
begin
  with TStringList.Create do
    begin
      Text := StringReplace('3 2 1', #$20, sLineBreak, [rfReplaceAll]);
      x := StrToIntDef(Strings[2], 0);
      y := StrToIntDef(Strings[1], 0);
      z := StrToIntDef(Strings[0], 0);
      Free;
    end;
end;

Решение для частного случая.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
WolfON
Дата 25.5.2007, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: нет
Всего: 8



Без лишнего и достаточно тяжелого StringList нельзя?

Ищется именно просто решение - регекспы или парсинг строк по частям не подходит
PM MAIL ICQ   Вверх
Yanis
Дата 25.5.2007, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 6
Всего: 111



WolfON
Ну тада posposexcopydelete.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
drkot
Дата 25.5.2007, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



Цитата(WolfON @  25.5.2007,  22:07 Найти цитируемый пост)
Ищется именно просто решение

А что сложного в коде написанном Yanis?  Если думаеш, что 
Цитата(Yanis @  25.5.2007,  22:23 Найти цитируемый пост)
pos, posex, copy, delete.

проще, тогда вперед.


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
WolfON
Дата 26.5.2007, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: нет
Всего: 8



drkot, я наивно надеялся, что есть встроенные средства.
Просто как-то не очень хорошо выглядит, когда размер кода парсинга строк больше, чем код самой программы )
PM MAIL ICQ   Вверх
0LineGate
Дата 26.5.2007, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 176
Регистрация: 17.2.2007
Где: Россия, Тула

Репутация: 0
Всего: 2



2 WolfON
Конечный пользователь кода твоей программы не увидит, тем более несколько "лишних" килобайт - не смертельно.

Вот только что накатал:
Код

uses StrUtils;

var x,y,z,input: string;
begin
   input:=inttostr(random(99999))+' '+inttostr(random(99999))+' '+inttostr(random(99999))+' ';
   x:=copy(input,0,posex(' ',input,1)-1);
   y:=copy(input,posex(' ',input,1)+1,posex(' ',input,2)-1);
   z:=copy(input,posex(y+' ',input,1)+length(y)+1,length(input)-1);
   z:=copy(input,posex(y,input,1)+length(y)+1,length(input)-1);
   z:=stringreplace(z,' ','',[rfReplaceAll]);
end;


Вроде работает  smile 

Это сообщение отредактировал(а) 0LineGate - 26.5.2007, 13:57
PM MAIL WWW Skype   Вверх
WolfON
Дата 26.5.2007, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: нет
Всего: 8



0LineGate, конечный пользователь - преподаватель )
Ему как-раз таки и нужен красивый и опрятный код )

Да и мне под кучу задач куда удобнее было-бы переписать "%i %i %i" на допустим "%.2f %i %c %g", чем переписывать этот код.
PM MAIL ICQ   Вверх
drkot
Дата 26.5.2007, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



Цитата(WolfON @  26.5.2007,  16:11 Найти цитируемый пост)
"%.2f %i %c %g"

универсальный (в разумных приделах) парсер - это не 10 строк кода. Это пол тысячи строк и неделя упорного труда, как минимум.


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
aktuba
Дата 26.5.2007, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 7
Всего: 38



Цитата

универсальный (в разумных приделах) парсер


Парсер сам по себе не может быть универсальный... Точно так же, как и автомобиль - один предназначен для одного, другой - для другого...

Цитата

Да и мне под кучу задач куда удобнее было-бы переписать "%i %i %i" на допустим "%.2f %i %c %g", чем переписывать этот код. 


=))) А еще проще было бы, если за тебя это будет делать IDE или компилятор  smile 


--------------------
user posted image
PM MAIL WWW Skype   Вверх
0LineGate
Дата 26.5.2007, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 176
Регистрация: 17.2.2007
Где: Россия, Тула

Репутация: 0
Всего: 2



2 WolfON
работает мгновенно, код аккуратный... препод решит что ты головой мыслишь, решение не запарное, простое...
на конец мона отфоорматировать код  smile 
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0877 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.