Главная страница
    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-1135099118
Tiwaz
2005-12-20 20:18
2006.01.08
Фильтрация по двум базам


4-1131174643
Soler
2005-11-05 10:10
2006.01.08
Добавить текст в edit


2-1134849713
Энди
2005-12-17 23:01
2006.01.08
Запуск приложений из программы


1-1133804644
dDan
2005-12-05 20:44
2006.01.08
Сортировка колонки в ListView


1-1134049064
NiGGa
2005-12-08 16:37
2006.01.08
Application.OnException





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