Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.01.08;
Скачать: [xml.tar.bz2];

Вниз

функция, обратная 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.008 c
2-1134922994
Arazel
2005-12-18 19:23
2006.01.08
Как отсортировать название файлов/папок ListBox как Explorer?


4-1130680933
GuAV
2005-10-30 17:02
2006.01.08
Printer.Canvas с LOGPIXELSX <> LOGPIXELSY, что с Pen.Width ?


2-1134917493
newhite
2005-12-18 17:51
2006.01.08
Объясните!


6-1127653656
VolanD666
2005-09-25 17:07
2006.01.08
Обмен файлами по сети


3-1131960218
Ильичев С.А.
2005-11-14 12:23
2006.01.08
Rows Affected





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский