Форум: Форум C++Разное
Новые темы: 00
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ограничение числа выводимых символов
 
 автор: Kostia89   (25.11.2007 в 08:27)   письмо автору
 
 

Здравствуйте!
Скажите, плз, как ограничить число выводимых символов в ShowMessage (в C++Builder) ?

  Ответить  
 
 автор: cheops   (25.11.2007 в 08:32)   письмо автору
 
   для: Kostia89   (25.11.2007 в 08:27)
 

Не очень понятна проблема... Сколько хотите, столько и выводите... Или имеется в виду количество символов на одной строке? Если последнее - необходимо просто добавить символ перевода строки \r\n, чтобы вывод следующего фрагмента шёл с новой строки.

  Ответить  
 
 автор: Kostia89   (25.11.2007 в 09:20)   письмо автору
 
   для: cheops   (25.11.2007 в 08:32)
 

Нет. Т.е. я вывожу число (среднее арифметическое) типа double и надо ог7раничить число символов после запятой.

  Ответить  
 
 автор: alex19921992   (26.11.2007 в 03:25)   письмо автору
 
   для: Kostia89   (25.11.2007 в 09:20)
 

я придумал хорошую функцию преобразования числа double в строку:

void ftoa(char* r,float f)
{
int loop;

char a[79];
int i1,i2;
strcpy(a,ecvt(f,15,&i1,&i2));

if(i1>0)
{
for(loop=strlen(a)+1;loop!=i1;loop--)
{
a[loop]=a[loop-1];
}
a[loop]='.';
}
/////////////
if(i1==0)
{
for(loop=strlen(a)+2;loop!=1;loop--)a[loop]=a[loop-2];
a[1]='.';a[0]='0';
}
/////////////
if(i1<0)
{

for(loop=strlen(a)+2-i1;loop!=1;loop--)a[loop]=a[loop-2+i1];
a[1]='.';
a[0]='0';
for(loop=2;loop<2-i1;loop++)a[loop]='0';
}
if(i2!=0)
{
for(loop=strlen(a)+1;loop>0;loop--)a[loop]=a[loop-1];
a[0]='-';
}

strcpy(r,a);
}


просто преобразуйте число в строку и найдите в строке точку(сделайте циклом). далее от точки отступите N символов вправо и поставьте туда символ '\0' тогдо у вас будет N-1 знаков после запятой

  Ответить  
 
 автор: cheops   (26.11.2007 в 03:58)   письмо автору
 
   для: Kostia89   (25.11.2007 в 09:20)
 

Тогда удобно воспользоваться функцией printf()
#include <stdio.h>
using namespace std;

int main()
{
  double var = 2.343425234525;
  printf("%10.2f", var);

  return 0;
}

  Ответить  
 
 автор: alex19921992   (26.11.2007 в 05:57)   письмо автору
 
   для: cheops   (26.11.2007 в 03:58)
 

Так ему-то мессачбокс надо! принтфом тоже можно))))
а еще можно сделать такой изврат: делать временный файл, туда printf("%10.2f", var);
а потом читать как %s

  Ответить  
 
 автор: Фитч   (27.11.2007 в 00:02)   письмо автору
 
   для: alex19921992   (26.11.2007 в 05:57)
 

В ShowMessage передается строка типа AnsiString, а вней есть метод printf, т.е. можно сделать так:

AnsiString s;
s.printf("Вещественное число с двумя знаками после запятой: %10.2f",23.1234);
ShowMessage(s);

  Ответить  
 
 автор: Kostia89   (27.11.2007 в 08:15)   письмо автору
 
   для: Фитч   (27.11.2007 в 00:02)
 

Заработало! Спасибо большое!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования