![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Функции Delphi. [D6, 95/98, XP]
Shopot © (2006-11-04 09:07:00)Здравсвуйте!!! Есть ли в Delphi такие функции работы со строками как в
C++ - sscanf, sprintf?
palva (2006-11-04 20:22:00) [1]Если по сабжу, то есть функция wvsprintf
{$APPTYPE CONSOLE}
uses Windows;
var
s: String;
buf: array [0..99] of Char;
p: array[0..2] of Integer;
begin
p[0] := 355;
p[1] := Ord('Q');
p[2] := $fed;
wvsprintf(@buf[0], '%05d %c %04X', @p);
SetLength(s, lstrlen(buf));
lstrcpy(PChar(s), buf);
WriteLn(s); // 00355 Q 0FED
end.
Anatoly Podgoretsky (2006-11-04 18:13:00) [2]
> Какие умные бывают на свете. Все привыкли делать своими
> ручками.
Тебе привели TRegEXpr, тебе привели другие функции, а ты все неймешь, никак понять, что ты пока еще не умеешь программировать.
Твоя задачка для начальных курсов непрограммирующих пользователей
Percent (2006-11-04 12:58:00) [3]Shopot ©
А что, BlockRead() уже отменили?
DrPass (2006-11-04 12:28:00) [4]
> Когда считываешь Readln'ом потом преобразуешь - неудобно.
>
> Зачем изобретать велик. Ведь в C++ он есть.
Все равно непонятно. А что тебе мешает считать readln'ом без всяких преобразований? Ты ж пойми - он не только строки умеет считывать, а все подряд и в любом сочетании. Точно так же, как и scanf
А кроме того, если длина полей в файле известна, там вообще можно было бы обойтись без readln. А сделать соответствующую структуру, открыть файл как нетипизированный и в один прием залить из файла данные
Shopot (2006-11-04 12:24:00) [5]
> Anatoly Podgoretsky © (04.11.06 11:42) [4]
> Видимо ты не умеешь работать со строками
Какие умные бывают на свете. Все привыкли делать своими ручками.
Есть старое программное обеспечение под ДОС. Написанно на С. Так там инфа сохраняется в файлы корявого формата. Типа первая строка это
название 12 символов, имя оператора 10 символов, дата 10 символов.
Вторая строка курс валют, используемая по умолчанию валюта...
3 - я строка...
4 - я строка данные - 10 колонок где 1 - я и 10 - я колонка 8 символов, остальные по 9 символов.
Когда считываешь Readln'ом потом преобразуешь - неудобно.
Зачем изобретать велик. Ведь в C++ он есть.
TUser (2006-11-04 12:01:00) [6]Format
FormatStr
TRegEXpr
Kolan (2006-11-04 11:59:00) [7]> Вопрос на засыпку: что делает readln, а что делает printf?
А, ну да :) Перепутал.. про WriteLn говорил...правда тогда к [2] претензии необоснванные :)
Anatoly Podgoretsky (2006-11-04 11:51:00) [8]
> Вопрос на засыпку: что делает readln, а что делает printf?
Да ладно, парень глупость сморозил
Anatoly Podgoretsky (2006-11-04 11:50:00) [9]А тебе зачем?
В СИ нет процедур, там только функции, но все равно тебе зачем это, может алгоритм переписать, ну не нравится это, так используй формат, из него узнаешь до передачи, сколько там символов. Хотя ума не приложу куда это использовать, случайно не попугаев собираешься мерить.
А что в СИ все функции возрващают количество символов, если не все то твои претензии не обоснованы.
Кстати ты можешь переписать Write/WriteLN что бы такая информация была доступна.
Percent (2006-11-04 11:49:00) [10]Kolan ©
но printf возврашает кол-во выведенных символов, а ReadLn нет
procedure Readln(...
процедура это.
А printf - функция и возвращает int
О-о-о... как все запущено...
Вопрос на засыпку: что делает readln, а что делает printf?
Kolan (2006-11-04 11:46:00) [11]> Видимо ты не умеешь работать со строками
А тут причем?
procedureReadln(...
процедура это.
А printf - функция и возвращаетint
Anatoly Podgoretsky (2006-11-04 11:42:00) [12]
> Kolan © (04.11.06 11:37) [3]
Видимо ты не умеешь работать со строками
Kolan (2006-11-04 11:37:00) [13]> [2] DrPass © (04.11.06 11:35)
> sprintf - это Format. Аналога sscanf нет, но мне еще не
> встречалось случая, когда ее нельзя было бы заменить read/readln
Незнаю что естьsprintf, ноprintfвозврашает кол-во выведенных символов, аReadLnнет.. AFAIR
Virgo_Style (2006-11-04 11:35:00) [14]Таких - нету.
DrPass (2006-11-04 11:35:00) [15]sprintf - это Format. Аналога sscanf нет, но мне еще не встречалось случая, когда ее нельзя было бы заменить read/readln