Вниз
Скачать: CL | DM;

функция, обратная format   Найти похожие ветки 

 
MetalFan ©   (2005-12-07 17:16) [0]

существуют ли такая? или подскажите библиотеку, где это реализовано!
спасибо за советы!


 
Reindeer Moss Eater ©   (2005-12-07 17:18) [1]

В результате выполнения Format получилась строка
"автомотовелофототелерадиомонтер".

Что должна сделать функция обратная Format?


 
Digitman ©   (2005-12-07 17:19) [2]

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


 
MetalFan ©   (2005-12-07 17:20) [3]

разобрать исходную строку на подстроки согласно шаблону... вроде как.
хотя вообще-то Вы правы... если шаблон был вида "%s%s%s%s", то конечно обратнимую функцию не сделать...


 
Reindeer Moss Eater ©   (2005-12-07 17:22) [4]

Смотри ExtractStrings и всю категорию
string handling routines (null-terminated)


 
Digitman ©   (2005-12-07 17:29) [5]


> разобрать исходную строку на подстроки согласно шаблону


на то есть regular expressions


 
Игорь Шевченко ©   (2005-12-07 17:34) [6]

Digitman ©   (07.12.05 17:29) [5]

На то есть функция (s)scanf в С :))


 
Digitman ©   (2005-12-07 18:01) [7]


> Игорь Шевченко ©   (07.12.05 17:34) [6]


напомни, что она делает ..


 
Игорь Шевченко ©   (2005-12-07 18:13) [8]

Digitman ©   (07.12.05 18:01) [7]

Чтение по формату, обратная (s)printf

sscanf (s, "%s %d %d", strvar, & intvar1, & intvar2);


 
MetalFan ©   (2005-12-07 19:04) [9]

На то есть функция (s)scanf в С :))ъ
а на delphi аналог не посоветуете?


 
Alexander Panov ©   (2005-12-07 19:08) [10]

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


 
MBo ©   (2005-12-07 19:22) [11]

function sscanf(InputStr, FormatStr: PChar): LongInt cdecl varargs; external "msvcrt.dll" name "sscanf";


 
Alexander Panov ©   (2005-12-07 20:06) [12]

MBo ©   (07.12.05 19:22) [11]
function sscanf(InputStr, FormatStr: PChar): LongInt cdecl varargs; external "msvcrt.dll" name "sscanf";


s := Format("%d%d",[11,1]);

Как вернуть исходные параметры?

А если такая:

var
 a,b: Integer;
 s: String;
begin
 Format("%d%d",[a,b]);


?


 
MBo ©   (2005-12-07 21:25) [13]

>Alexander Panov
Я не являюсь апологетом всеобщей применимости "обратного форматирования", так что убеждать меня ни в чем не надо ;)
Однако при чтении текстовых файлов с жестко заданной структурой я не стеснялся на Паскале использовать Readln(file, X[i], Y[i], Z[i]), что принципиально от scanf не отличается (эта функция, если не ошибаюсь, возвращает количество успешно принятых аргументов).
Здесь встает вопрос о неукоснительном выполнении определенных соглашений передающей и принимающей сторонами - так в этом ничего сверхъестественного нет, все механизмы обеспечения взаимодействия так работают.


 
Alexander Panov ©   (2005-12-07 21:28) [14]

MBo ©   (07.12.05 21:25) [13]
Совершенно согласен.

Все применимо только к конкретным случаям.


 
Anatoly Podgoretsky ©   (2005-12-07 22:30) [15]

Игорь Шевченко ©   (07.12.05 18:13) [8]
А что толек, например для sscanf (s, "%s %s %s", strvar1, strvar2, strvar3); и значении 1 2 3 4 5, как только в строке появляются символьные не конце, весь разбор идет боком.
Тоже самое и для Readln который является аналогом и при том не менее общим.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.014 c
14-1134384980
Piter
2005-12-12 13:56
2006.01.08
Управление клиентом p2p сети Direct Connect (DC), UKC, DC++


2-1135162251
Steplerr
2005-12-21 13:50
2006.01.08
Cохранение нескольких изображений в один файл?


2-1135035793
kizam
2005-12-20 02:43
2006.01.08
картинка на RichEdit-e


2-1135003854
Majesto
2005-12-19 17:50
2006.01.08
Вопрос по SQL. Работа с несколькими таблицами.


14-1134385970
lookin
2005-12-12 14:12
2006.01.08
Печать фотографий




   Наверх