Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать функцию типа format, только чтобы не в текст [D7]


РеФорм ©   (2005-02-15 01:16:00) 

вставлялись цифры, а наоборот ?

У меня есть три числа : f1, f2, f3 : Single;
И есть шаблон : 'Position(%f, %f, %f);'

Мне надо, чтобы, например для строки 'Position(1, 2, 3);' в f1, f2, f3 помещались 1, 2, 3 соответственно.
А если 'Position(5, -22, 13);' то, чтобы в f1, f2, f3 помещались 5, -22, 13 соответственно. Ну, и так далее. Думаю понятно. Как такое сделать ?

Да, и должна быть возможность не только с тремя числами работать, а с разным количеством.

Думаю такая функция многим была бы полезна.


TUser   (2005-02-15 11:39:00) [1]

Для Delhpi есть компонент TRegExpr. Поищи на www.torry.net

Но, если честно, то в данном случае лучше не привязываться к каким-то компонентам, а писать все ручками, например так
buf:=''; n:=0; s:=0; S:=S+' ';
for i:=1 to length(S)
case s of
0:
if s[i] <> ' ' then
  buf:=buf+s[i]
  else begin
  s:=1; inc (n);
  f[n]:=StrToInt(buf);
  end;
1:
 if s[i] <> ' ' then begin
   buf:=s[i]; s:=0;
   end;
end; // case


REA   (2005-02-15 10:39:00) [2]

>Можно её конвертировать в Дельфи ?

Где то даже видел.


begin...end   (2005-02-15 09:06:00) [3]

> РеФорм   (15.02.05 2:20) [4]

> А поскольку никто никогда не сохраняет ничего в файлы,
> то и функция не нужна.

Вещественные числа (и вообще числа) нужно сохранять не в текстовые файлы, а в типизированные. И тогда то, что из файла прочитается, не надо даже разбирать, - всё и так понятно. Потому что читаться будут не строки с пробелами и запятыми, а сами числа.

А в случае, если от строк уйти (уже) нельзя, и никакие компоненты Вы использовать не хотите - почитайте про конечные автоматы. Здесь - довольно лёгкий случай. А можно даже и без автоматов в чистом виде.


Германн   (2005-02-15 02:34:00) [4]

2 РеФорм   (15.02.05 02:20) [4]
> ... или считываться из файла. А поскольку никто никогда не сохраняет ничего в файлы, то и функция не нужна. Правильно ?

А разве считывание из файла производится не в RealTime?


РеФорм   (2005-02-15 02:20:00) [5]


> iskatel ©   (15.02.05 01:29) [1]
> зто не функция, а целый раздел лексического анализа, называется
> регулярные выражения (RegExp) поищи...

БЕЗ РЕГЭКСПОВ !


> Германн ©   (15.02.05 01:35) [2]
> Поскольку совершенно понятно, что "реальные значения" параметров
> такой функции должны вводиться в RealTime,

... или считываться из файла. А поскольку никто никогда не сохраняет ничего в файлы, то и функция не нужна. Правильно ?


> Alex Konshin ©   (15.02.05 01:54) [3]
> Такая функция есть с C/C++, scanf называется.
> В Delphi иногда можно воспользоваться Read/Readln.

Как воспользоваться ? А можно код функции scanf ? Можно её конвертировать в Дельфи ?


Alex Konshin   (2005-02-15 01:54:00) [6]

Такая функция есть с C/C++, scanf называется.
В Delphi иногда можно воспользоваться Read/Readln.


Германн   (2005-02-15 01:35:00) [7]

Честно сказать, не понимаю, чем "такая функция" была бы полезна кому-нибудь, кроме ее автора. Поскольку совершенно понятно, что "реальные значения" параметров такой функции должны вводиться в RealTime, а там для ввода существует множество возможностей.


iskatel   (2005-02-15 01:29:00) [8]

зто не функция, а целый раздел лексического анализа, называется регулярные выражения (RegExp) поищи...


Наверх

Титульная страница Поиск, карта сайта Написать письмо