Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразование переменных, соединение месяца и года 
:(
    Опции темы
ura5
Дата 1.6.2007, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Есть переменные -год и месяц:
Код
 
 strYear2 = FormatDateTime("yy",Now());
  strMonth = FormatDateTime("mm", Now());

Я формирую имя таблицы в зависимости от выбранного месяца и года:
Код
 ntabl="TEL"+AnsiString(strMonth-1)+AnsiString(strYear2); [ 


ВОПРОС:

Поскольку текущий месяц 5,то в (strMonth-1)  будет 4,а получается ,когда я вычту1 :
TEL107 ,а должно TEL0407.

   strMonth = FormatDateTime("mm", Now());// ФОРМИРУЕТСЯ МЕСЯЦ В Виде числа двухзначного 
т.е.текущий месяц -05.

Что неверно ?



PM MAIL   Вверх
SenkraD
Дата 1.6.2007, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ura5,  не знаю я вот ради интереса написал мне четыре показывает:
Код

String str1 = "05";
String str2 = str1 - 1;
ShowMessage(str2);  



--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
ura5
Дата 1.6.2007, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Правильно Вам показывает.
Мне тоже также показывает 4,а мне надо 04.

ntabl="TEL"+AnsiString(StrToInt(strMonth-1))+AnsiString(strYear2);

TEL0407        как?
Только проверкой ?
Нет ли такой команды чобы добавляла ноль перед однозначным месяцем -ведь 
strMonth = FormatDateTime("mm", Now());-формирует значение месяца в виде 05.


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


Опытный
**


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

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



Ну самое простое это так кажись:
Код

ntabl="TEL"+AnsiString(StrToInt(strMonth-1)).Insert(1, "0")+AnsiString(strYear2);

или так 
Код

ntabl="TEL"+ "0" + AnsiString(StrToInt(strMonth-1))+AnsiString(strYear2);


и ещё есть функция sprintf и такой же метод есть у класа String

Это сообщение отредактировал(а) SenkraD - 1.6.2007, 15:01


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
Fazil6
Дата 1.6.2007, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Код

    int newM = StrToInt(strMonth-1);
    int newYear = StrToInt(strYear2);

    if(!newM)
    {
        --newYear;
        newM = 12;
    }
    strMonth.sprintf("%02d", newM);
    strYear2.sprintf("%02d", newYear);
    
   String ntabl="TEL"+ strMonth + strYear2;

PM MAIL   Вверх
Klin
Дата 1.6.2007, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 20
Всего: 25



Цитата

TEL107 ,а должно TEL0407.

TEL407 ,а должно TEL0407 ?


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
ura5
Дата 4.6.2007, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Да,должен быть месяц двухзначным.Т.е. ,если месяц однозначный (январь-сентябрь),то надо перед ним добавить ноль 0.Это я понимаю,что можно сделать соединением типа "KK"+"0"   .есть ли такая функция или как там называется в С++Builder,чтобы она всегда высвечивала месяц в виде 2-значного числа.Ведь я первоначально получаю месяц в виде 2-значного числа,потом вычмтаю 1 и получаю почему-то уже 1 цифру :

Код
 strMonth = FormatDateTime("mm", Now());  //МЕСЯЦ :05
ntabl="KK" +AnsiString(StrToInt(strMonth-1))+AnsiString(strYear2);   //месяц: 4 


После таких преобразований получается имя таблицы "KK407",а надо  "KK0407"  .

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


Опытный
**


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

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



ura5,  а что вы хотели - зачем целочисленной переменной хранить спереди незначещий ноль?!
Вообщем, напишите свою функцию для этого дела и не мучайтесь - это более правильно и целесообразно, если вам где-то ещё придётся использовать это преобразование

Это сообщение отредактировал(а) SenkraD - 4.6.2007, 09:49


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
ura5
Дата 4.6.2007, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



SYSTEMTIME *pSystemTime;
   GetSystemTime(pSystemTime);
   pSystemTime->wMonth--;
   TDateTime pDateTime = SystemTimeToDateTime(*pSystemTime);
   AnsiString strDate = "KK" + pDateTime.FormatString("mmyy");
PM MAIL   Вверх
ura5
Дата 4.6.2007, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код
strNameMon = FormatDateTime("mmmm", Now());  //название месяца 
 
Вопрос:
есть ли готовая ф-ция для определения названия месяца (не текущего )или надо только самой писать?
PM MAIL   Вверх
SenkraD
Дата 4.6.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ura5,  я не совсем понял вопрос. Поясните, пожалуйста.


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
Fazil6
Дата 5.6.2007, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Цитата(ura5 @  4.6.2007,  15:48 Найти цитируемый пост)
или надо только самой писать?

Разве это сложно?
Код

const char *  GetMonthName(int num)
{
    static const char * MonthName[] = {"Январь", "Февраль", "Март", "Апрель"  /*и тд*/ }   ;
    if((num < 1) || (num > 12))
    {
        /*ну, например, исключение какое-нить*/
    }

    return MonthName[num - 1];
}


PM MAIL   Вверх
ura5
Дата 5.6.2007, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я привела пример определения названия месяца с помощью :
Код
FormatDateTime("mmmm", Now());  


Это пример для определения названия текущего месяца.
А как определить название месяца по любому выбранному номеру месяца?
Есть ли что-то стандартное или нет ?

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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Код

void ShowMonthName(int num)
{
    ShowMessage(FormatDateTime("mmmm", num * 30));
}

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


Шустрый
*


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

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



Fazil6, 
Вы написали мне пример.Извините за безграмотность,но я полагаю,что это функция ,которая выбирает номер месяца?И к ней надо обратиться из программы.Да?
И такое надо.

А у меня к Вам вопрос :
Как мне определить название месяца меньшего на единицу от текущей даты?
Спасибо.
 

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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