Главная страница
    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-1134845614
Exploit
2005-12-17 21:53
2006.01.08
Мышь


4-1130759002
Reset
2005-10-31 14:43
2006.01.08
В OLE32.dll есть курсор с именем 2 ...


9-1122632450
HPR
2005-07-29 14:20
2006.01.08
Не работают ссылки на файлы библиотек:


14-1134028622
WondeRu
2005-12-08 10:57
2006.01.08
Начинаю ненавидеть людей, которые присылают "письма счастья"!


3-1131691195
irq
2005-11-11 09:39
2006.01.08
IB компоненты и Firebird





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