Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.08;
Скачать: 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 вся ветка

Текущий архив: 2006.01.08;
Скачать: CL | DM;

Наверх




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


14-1134560149
syte_ser78
2005-12-14 14:35
2006.01.08
Прога для вебмастеров


3-1131965881
alex-ran
2005-11-14 13:58
2006.01.08
FastReport: CrossView и значение CellMemoCross1


2-1134853618
Scripl
2005-12-18 00:06
2006.01.08
Caption


14-1133896573
@BraIN
2005-12-06 22:16
2006.01.08
Ура! Таки-упал жесткий диск :о)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский