![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать функцию типа 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) поищи...