Pull to refresh
-29
@hard2018read⁠-⁠only

User

Send message

вы ужаснётесь если узнаете насколько прикладники этого всего не умеют.

Я точно, как прочитал, ужаснулся. Не знал, что всё проще на самом деле и из за этого не устраивался работать по специальности. Но...

такие коренные познания нужны и прикладникам, я считаю. Иначе их место (в головах людей) будут занимать околошизоидные представления.

Задачи могут поставить так: “подружить микроконтроллер и айфон”, “оживить плату”, “подружить платы”

Вот это как раз такие случаи.

Ещё у чужого кода есть диалекты, стандарты, требования к использованию. Знать их все не обязательно, потому что невозможно, но «надо их уважать». Ибо раз я читаю и хочу использовать их код, а не они мой, то уважаемые люди – они.

А кто вас уважать должен с вашим нытьём? Радуйтесь, что не мешки таскаете.

От того что вы прочитаете чужой код вы не умрёте.

Ну это цикл обработки сообщений, как в винде. А объекты типа класс окна есть в андроид?

Так что, если рассматривать айти-профессии по взрослому, то там всё сложно, с наскоку не освоишь.

Вспоминаю, когда искал первую работу именно программистом. А у меня даже IDE не было установлено. Что такое отладка, тоже без понятия. Лишь сексуальный финансовый интерес.

КАК? Как ты можешь? В 28. Я в ах**

для работы с битами фотографий используется Emgu CV.

Это да, современным программистам для битовых манипуляций нужны библиотеки.

Хотяя... это лучше, чем изобретать собственную, ни с чем не совместимую штуку

smthWrongWithHumans : public (std::exceptions) {
  public:
  smthWrongWithHumans(int count):humanCount(count) {};
  ...
  private:
  int humanCount{0};
}

...
  
void newShelterPopulationInfoRcv(int humansCount) {
  if (humansCount <= 0) {
    throw smthWrongWithHumans(humansCount);
    // пусть братва из вышележащего сервиса разирается
    return;
  }
  
  sendNewFoodDistribution(TotalFood/humansCount);
}

Зачем шило заворачивать в капусту?

Можно проще, привести ЯВНО переменную к типу int

Вот так throw (int)humansCount;

Просто укажите, что у вас исключения целочисленного типа.

Я делаю так:

int findtext(const wchar_t* file, const wchar_t* text)
{
	FILE* hfile = nullptr;
	wchar_t* memptr = nullptr;
	intptr_t hfind = 0;
	_finddata_t data;
	_fsize_t& size = data.size;
	int retval = 0;
	try
	{
		if ((file == nullptr) && (text == nullptr)) throw (int)EINVAL;
		hfind = _findfirst(file, &data);
		if (hfind == 0)  throw (int)ENFILE;
		_findclose(hfind); 
		hfind = 0;
		memptr = (wchar_t*)malloc(size);
		if (memptr == nullptr)  throw (int)ENOMEM;
		hfile = fopen(file, "rt");
		if (hfile == nullptr)  throw (int)EACCES;
		fread(memptr, sizeof(wchar_t), size, hfile);
		fclose(hfile); 
		hfile = nullptr;		
		retval = _memfind(memptr, text);
	}
	catch (int err)
	{
		_set_errno(err);
	};
	if (hfile) { fclose(hfile); hfile = nullptr; };
	if (memptr) { memset(memptr, '/0', _msize(memptr));  free(memptr); memptr = nullptr; };
	if (hfind) {_findclose(hfind); hfind = 0; };
	return retval;
}

Такой подход делает код совместимым, т. к. исключения допустимы не везде. Вместо этого мы используем номера ошибок в POSIX. Механизм исключения используется, чтобы передать управление в хвост.

У меня была идея использовать сигналы. Пишем обработчик сигнала, а в самой функции, что я привёл, пишем raise(SIGINT), я не знаю насколько это правильно.

void handler(int signo)
{
	if (signo == SIGINT)
  	perror("Error: ");
}

int findtext(const wchar_t* file, const wchar_t* text)
{
	FILE* hfile = nullptr;
	wchar_t* memptr = nullptr;
	intptr_t hfind = 0;
	_finddata_t data;
	_fsize_t& size = data.size;
	int retval = 0;
	try
	{
		if ((file == nullptr) && (text == nullptr)) throw (int)EINVAL;
		hfind = _findfirst(file, &data);
		if (hfind == 0)  throw (int)ENFILE;
		_findclose(hfind); 
		hfind = 0;
		memptr = (wchar_t*)malloc(size);
		if (memptr == nullptr)  throw (int)ENOMEM;
		hfile = fopen(file, "rt");
		if (hfile == nullptr)  throw (int)EACCES;
		fread(memptr, sizeof(wchar_t), size, hfile);
		fclose(hfile); 
		hfile = nullptr;		
		retval = _memfind(memptr, text);
	}
	catch (int err)
	{
		_set_errno(err);
    raise(SIGINT);
	};
	if (hfile) { fclose(hfile); hfile = nullptr; };
	if (memptr) { memset(memptr, '/0', _msize(memptr));  free(memptr); memptr = nullptr; };
	if (hfind) {_findclose(hfind); hfind = 0; };
	return retval;
}

Описать не могу, но имею право зарегаться и написать любую чушь. Понял.

Information

Rating
Does not participate
Registered
Activity