Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Форматирование номера телелефона по маске 
V
    Опции темы
Akella
Дата 31.8.2010, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Есть строки, содержащие номера телефонов: '0507045645' или '7634587' или '380442447815', т.е. строка состоящая из цифр без каких либо символов. Но пользователю нужно показать это всё в удобоваримом формате, соответственно '050-704-56-45' или '763-45-87' или '38-044-244-78-15'
Я пытался использовать маску и функцию Format
Код
result := Format(sMask, [Strings[i]])

Но безрезультатно.

в Strings[i] номер телефона
пробовал маски типа: (999)-000-00-00 или ###-###-##
но функция возвращает просто значение самой маски.

Чтобы не создавать свой лисапед, может уже есть решения в этой области?
PM MAIL   Вверх
chip_and_dayl
Дата 31.8.2010, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 1
Всего: 9



Так ф-ция Формат предназначена для другого http://www.delphisources.ru/pages/faq/faq_...Format.php.html

А по поводу телефона, а если использовать MaskEdit (вродь так компонент называется)!?!

Добавлено через 5 минут и 30 секунд
Хотя нет, MaskEdit не выход


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Данкинг
Дата 31.8.2010, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Я в своё время как раз лисапед изобретал (правда, на фоксе). Т.е. ставил тире (скобки для кода и т.п. )в зависимости от числа цифр в номере.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Qu1nt
Дата 31.8.2010, 16:03 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 13.1.2007

Репутация: 18
Всего: 50



Код

uses
  MaskUtils;

ShowMessage(MaskDoFormatText('(999)-000-00-00', '0507045645 ', ' '));

Велосипедисты smile
PM MAIL   Вверх
aleksh
Дата 31.8.2010, 16:03 (ссылка)   | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 609
Регистрация: 8.7.2008

Репутация: 3
Всего: 13



может так
Код

result := FormatFloat('###-##-##', strtoint(strings[i]));

PM MAIL   Вверх
Akella
Дата 31.8.2010, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(Qu1nt @  31.8.2010,  16:03 Найти цитируемый пост)
uses
  MaskUtils;

 smile век живи, век учись


осталось подобрать правильную маску, ибо (999)-000-00-00 показывает 7значные телефоны криво :(

Добавлено через 21 секунду
Может можно определять кол-во цифр в номере и подставлять маску?
PM MAIL   Вверх
Qu1nt
Дата 31.8.2010, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 13.1.2007

Репутация: 18
Всего: 50



Код

program FormatDemo;

{$APPTYPE CONSOLE}

uses
  SysUtils, MaskUtils;

function FormatText(const Value: String): String;
begin
  Result := Trim(FormatMaskText('!00 000 000-00-00;0', Value));
end;

begin
  WriteLn(FormatText('7634587'));
  WriteLn(FormatText('0507045645'));
  WriteLn(FormatText('380442447815'));
  ReadLn;
end.

PM MAIL   Вверх
Romikgy
Дата 31.8.2010, 17:43 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



а я все по велосипедам)))))))))))))))))))))0
Код

function n2p(sx: string): string;
  var
    zx: string;
 begin
   if Length(sx)>=2 then
   begin

     Result:=copy(sx,Length(sx)-1,2);
     sx:=Copy(sx,1,Length(sx)-2);
     if  Length(sx)>=2 then
     begin
        Result:=copy(sx,Length(sx)-1,2)+'-'+Result;
        sx:=Copy(sx,1,Length(sx)-2);
        if  Length(sx)>=3 then
           begin
              Result:=copy(sx,Length(sx)-2,3)+'-'+Result;
              sx:=Copy(sx,1,Length(sx)-3);
              if  Length(sx)>=3 then
                 begin
                    Result:='('+copy(sx,Length(sx)-2,3)+')-'+Result;
                    sx:=Copy(sx,1,Length(sx)-3);
                    if Length(sx)>0 then
                    Result:=sx+'-'+Result;
                    sx:='';
                 end
                 else
                 begin
                   while Length(sx)<>3 do
                   sx:='0'+sx;
                   Result:='('+sx+')-'+Result;
                   sx:='';
                 end;  ;
           end;
     end;
   end
   else
   Result:=sx;
   if sx<>'' then
   Result:=sx+'-'+Result;
 end;


Это сообщение отредактировал(а) Romikgy - 31.8.2010, 17:46


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Akella
Дата 1.9.2010, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(Qu1nt @  31.8.2010,  17:07 Найти цитируемый пост)
Trim(FormatMaskText('!00 000 000-00-00;0',

да, пробелы вместо ( и -, и Trim делают своё дело smile
Спасибо!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1949 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.