Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2015, 09:34   #1
Prostaf
Пользователь
 
Регистрация: 09.09.2015
Сообщений: 25
По умолчанию function Format

Это часть кода сервера. Данный код чекает все параметры http(get) запроса и выводит значения этих параметров. Помогите с использованием function Format, чтобы значение параметра sum выводилось всегда с десятичным разделителем, т.е не просто 25, а 25.00?
Вот сам запрос http://<URL>:8443/payment_app.cgi?command=check&txn_i d=1234567&account=101&sum=10.45
Код:
function GetCheck(account:integer;sum:double;txn_id:integer):string;
var
  i:integer;
  y:integer;
  //Проверка параметра account
begin
  y:=-1;
  for I := 0 to Length(clients) - 1 do
    if clients[i].id=account then
    begin
      y:=i;
      break;
    end;
  if y=-1 then
  Begin
   result:='Client identifier is not found';
End;
end;
//Функция ответа command=check
function answer(Params:TStrings):string;
var
  account:integer;
  sum:double;
  txn_id:integer;
begin
  if(Params.IndexOfName('command')=-1)then
  begin
      answer:='<answer></answer>';
  Exit;
end;
  if((Params.Values['command']<>'pay')and(Params.Values['command']<>'check'))then
  begin
      answer:='<answer>error</answer>';
  Exit;
end;
  //Параметр команды поиска
  if(Params.Values['command']='check')then
  begin
    if(Params.IndexOfName('account')=-1)then
  begin
      answer:='<answer>Client not found</answer>';
  Exit;
  end;
    if(Params.IndexOfName('txn_id')=-1)then
    begin
      answer:='<answer>Incorrect transaction number</answer>';
      Exit;
    end;
    if(Params.IndexOfName('sum')=-1)then
    begin
      answer:='<answer>Incorrect amount</answer>';
      Exit;
    end;
    if(not TryStrToInt(Params.Values['account'], account))then
    begin
      answer:='<answer>Client not found</answer>';
      Exit;
    end;
       if(not TryStrToInt(Params.Values['txn_id'], txn_id))then
    begin
      answer:='<answer>Incorrect transaction number</answer>';
      Exit;
    end;
       if(not TryStrToFloat(Params.Values['sum'], sum))then
    begin
      answer:='<answer>Incorrect amount</answer>';
      Exit;
    end;
    answer:='<answer>'+GetCheck(account,sum,txn_id)+'</answer>';
  end;
end;
Prostaf вне форума Ответить с цитированием
Старый 30.09.2015, 09:58   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

format в Основах Delphi http://www.delphibasics.ru/Format.php
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 30.09.2015, 10:02   #3
Prostaf
Пользователь
 
Регистрация: 09.09.2015
Сообщений: 25
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
format в Основах Delphi http://www.delphibasics.ru/Format.php
Читал данный материал, но у меня идет вывод значений параметров запроса в .xml.
Прописывал данную функцию, но ничего не меняется!
Prostaf вне форума Ответить с цитированием
Старый 30.09.2015, 10:07   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Прописывал данную функцию, но ничего не меняется!
Показывай как прописывал )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.09.2015, 10:11   #5
Prostaf
Пользователь
 
Регистрация: 09.09.2015
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Показывай как прописывал )
Что-то типа такого.

Код:
function Format ( Const Formatting : string; Const Data : array of const ) : string;
var
sum:double;
begin
Format('%.2f', [sum]);
Prostaf вне форума Ответить с цитированием
Старый 30.09.2015, 10:15   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А надо так:
Код:
Переменка или выражение := format(...
Это всетки функция.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.09.2015, 10:19   #7
Prostaf
Пользователь
 
Регистрация: 09.09.2015
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А надо так:
Код:
Переменка или выражение := format(...
Это всетки функция.
Т.е. у меня параметр sum: double, следовательно должно быть
sum:=Format('%.2f', [sum]); ???
Prostaf вне форума Ответить с цитированием
Старый 30.09.2015, 10:33   #8
Prostaf
Пользователь
 
Регистрация: 09.09.2015
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А надо так:
Код:
Переменка или выражение := format(...
Это всетки функция.
Прописал вот так

Код:
function Format ( Const Formatting : string; Const Data : array of const ) : string;
var
s:string;
sum:double;
begin
s:=Format('%.2f', [sum]);
end;
Но всеравно значение записывается не 10.00(например), а просто 10.
Prostaf вне форума Ответить с цитированием
Старый 30.09.2015, 10:34   #9
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

И получил Stack Overflow при работе программы ?
phomm вне форума Ответить с цитированием
Старый 30.09.2015, 10:35   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

format() возвращает строку. Т.е. тебе нужно его запихнуть в выражение, или писать возврат в переменную типа string.
Цитата:
Прописал вот так
Убери немедля эту куйню )
В какое выражение ты хочешь форматирование подставить в своем коде в топе, покажи.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с Format mutabor Общие вопросы Delphi 5 19.10.2009 12:24
zip format Jelena Помощь студентам 2 04.01.2009 18:26
Format() eda Microsoft Office Excel 6 28.08.2008 11:21
Format malevich Общие вопросы Delphi 5 31.12.2006 00:37