Форум: "Основная";
Текущий архив: 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