powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / из BC в Visual C++.
4 сообщений из 4, страница 1 из 1
из BC в Visual C++.
    #33628782
vavat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
привет! тут такая проблема.
жила была прога, эапускалась в среде BC.
а вот и она в сокращенном (но рабочем!) варианте:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
#include "stdafx.h"
#include <iostream.h>
class my_date
{  	int day, month, year;
    public:
      my_date(char* str);
      void print_date();
   void print_date1();   };
   
 void my_date::print_date()
{  	cout <<day<<'.'<<month<<'.'<<year<<endl; }
 
#include "stdlib.h"
my_date::my_date(char* str)
{   year=atoi(str+ 4 );
   *(str+ 4 )='\0';          
   month=atoi(str+ 2 );
   *(str+ 2 )='\0';
   day=atoi(str);
}
main()
{ 	 
      my_date thr_date=my_date("16032004");
     thr_date.print_date();
     }
приспичило мне ее переделать для работы в среде Visual C++.
ну переделал, вот что получилось(тоже работает):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
#include "stdafx.h"
#include <iostream>
#include "math.h"
using namespace std;
class my_date
{  	int day, month, year;
    public:
      my_date(char* str);
      void print_date();
   void print_date1();   };
   
 void my_date::print_date()
{  	cout <<day<<'.'<<month<<'.'<<year<<endl; }
 
#include "stdlib.h"
my_date::my_date(char* str)
{   year=atoi(str+ 4 );
   *(str+ 4 )='\0';          
   month=atoi(str+ 2 );
   *(str+ 2 )='\0';
   day=atoi(str);
}
main()
{ 	 char k[]="16032004"; 
      my_date thr_date=my_date(k);
     thr_date.print_date();
     }
в общем почти то же самое НО!
у меня гвоздь вот в чем:)
почему я не могу оставить как было
Код: plaintext
my_date thr_date=my_date("16032004");
а при попытке сделать это дебаггер сильно ругается (причем матом).
приходится вставлять ему
Код: plaintext
1.
char k[]="16032004"; 
      my_date thr_date=my_date(k);
ну так вот: объясните мне почему это так!
(каюсь, придумал это не сам)
объясните почему ругаеся дебаггер. объясните плиз почему работает именно так, а как в исходнике не работает.
...
Рейтинг: 0 / 0
из BC в Visual C++.
    #33628843
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavat
объясните почему ругаеся дебаггер. объясните плиз почему работает именно так, а как в исходнике не работает.
Обсуждалось тут недавно (разбиралась работа функции AnsiToOem()):

Дебаггер выдает тебе AV совершенно правильно.

Когда ты пишешь:
Код: plaintext
1.
my_date thr_date=my_date("16032004");
ты передаешь константу , а внутри класса пытаешься в ней что-то поменять... Это некорректно.

А вот второй вариант (с передачей переменной) отрабатывает совершенно корректно.

Почему раньше работало - это фича Борланда (пришли к такому мнению)... Она и Билдере осталась...
...
Рейтинг: 0 / 0
из BC в Visual C++.
    #33628849
roman10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому, что вы передаете в конструктор строковую константу. Конструктор же ваш эту строку меняет.
...
Рейтинг: 0 / 0
из BC в Visual C++.
    #33629760
vavat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ага! спасибочки!
еще little вопросик из этой же стихии.
рабочий кусок из той же проги

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
#include "stdafx.h"
#include <iostream>
#include "math.h"
using namespace std;

class my_date
{  	int day, month, year;
    public:
   my_date();
   void print_date();
      };
   void my_date::print_date()
{  	cout <<day<<'.'<<month<<'.'<<year<<endl; }

 #include "time.h"
my_date::my_date()
{  
   time_t t= time(NULL);
   tm *tmp = localtime(&t);
   day=tmp->tm_mday;
   month=tmp->tm_mon+ 1 ;
   year=tmp->tm_year+ 1900 ;
}
main()
{ 	 
     my_date one_date=my_date();
     one_date.print_date();
}

можете объяснить работу функции my_date::my_date()
т.е. так то впринципе понятно, пару момонтов поясните плиз

time_t t= time(NULL); что эта кострукция творит?
ИМХО(скорее всего неправильному) она инициализирует все элементы
структуры нулевыми элементами или выделяет память..?ересь?

tm *tmp = localtime(&t); это указатель на те элементы которые хранят(или
как там ..)время, время беретя с каледаря компа.

вот как то так. просвятите непровященного.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / из BC в Visual C++.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]