Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 ... 4 5 6 [7] 8   Вниз
  Печать  
Автор Тема: Эврика  (Прочитано 145984 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #180 : 25-08-2010 20:44 » 

Цитата: Алексей1153++
но после этого происходит страшная ругань
Хм... а у меня не происходит.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #181 : 25-08-2010 20:46 » 

Значит, тебе повезло больше Улыбаюсь)
Записан

Ochkarik
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #182 : 27-08-2010 08:21 » 

Алексей1153++, это ты инклудишь еще что то неправильно.
потому что WIN32_LEAN_AND_MEAN - всего лишь "Windows Headers use this symbol to exclude rarely-used header files. Please refer to Windows.H to determine the files that will be excluded when this symbol is defined. Since MFC defines WIN32_LEAN_AND_MEAN, all MFC projects automatically use it.  Non-MFC C++ and C applications can define WIN32_LEAN_AND_MEAN and any applicable NOservice defines, such as NOSOUND (see DevStudio\Vc\include\Windows.h), to reduce their build times."
http://msdn.microsoft.com/en-us/library/6dwk3a1z.aspx
« Последнее редактирование: 27-08-2010 08:22 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #183 : 27-08-2010 09:15 » 

Ochkarik, может быть . Но дело в том, что инкдудов не было больше никаких (поточнее гляну потом)
Записан

Ochkarik
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #184 : 27-08-2010 10:57 » 

Алексей1153++, тогда либо пути по умолчанию, либо настройки проекта неверные...
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #185 : 27-08-2010 15:18 » 

Ещё занимательная грабля Улыбаюсь
http://blogs.msdn.com/b/ruoldnewthing/archive/2009/06/01/createprocess.aspx
Записан

Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #186 : 27-08-2010 17:23 » 

Ага, там написано:
Цитата
Иначе вы можете получить рекурсивный цикл крахов : пытаясь запустить отладчик, вы валитесь, что означает - вы пытаетесь запустить отладчик для отладки нового краха , что опять валится, и так далее.
Как раз читал на днях в одном из девелоперских блогов про то, как в Windows генератор отчётов об ошибке (тот, что предлагает отправить отчёт о сбое в Microsoft) сам сбоил и пытался отправить отчёт об ошибке в самом себе, при этом происходил очередной сбой, и так по кругу Улыбаюсь
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #187 : 27-08-2010 17:34 » 

А я этот отправщик отчётов выключаю - тогда зависшая программа (особенно , если она монструозная) очень быстро выгружается из памяти, не "превращая комп на время в тыкву" (c) Улыбаюсь
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #188 : 28-08-2010 18:37 » 

как научить консоль выводить русский текст
Код:
#include <locale>

int main()
{
setlocale(LC_ALL,"Russian");
std::cout<<"русский текст"<<std::endl;
}
Записан

Ochkarik
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #189 : 28-08-2010 18:53 » 

 Не понял
или в OEM сконвертить) CharToOem()
« Последнее редактирование: 28-08-2010 18:55 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #190 : 28-08-2010 18:58 » 

Ochkarik, каждое сообщение ? ) Лениво же. А так - красота
Записан

Ochkarik
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #191 : 28-08-2010 19:48 » 

у нас на работе своя общая библиотека шаблонов... в том числе функция вывода сообщения - аналог printf-а, автоматом перенаправляющий либо в messagebox либо в консоль, в зависимости от проекта.
вообще стандартные типа std - стараемся не использовать...я по крайней мере.  ток линуксоиды наши им балуют.
« Последнее редактирование: 28-08-2010 19:51 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #192 : 28-08-2010 20:14 » 

а я вот ещё случайно сделал парсер конфигурационного файла )
Может, кому пригодится
Код:
//#define WIN32_LEAN_AND_MEAN
#include <windows.h> //для CP_ACP и MultiByteToWideChar
#include <iostream>
#include <fstream>
#include <string>
#include <map>
#include <vector>

//-----------------------------
//пример конфига:/*

[xxx]
111 = 1 #sdfgsdfgdh
22222 =     3

#dfgvdsfgds
#nvbndxfhnfgh
[yyy]
rrrrr=e   e ee
tttttt= 'e   e ee'     #
*/
//-----------------------------

//тип хранилища параметров
typedef std::map<std::string,std::string> td_ConfigContent;

//после парсинга приведённого выше конфига в хранилище будет содержиться следующее:
/*
"[xxx]111" ,"1"
"[xxx]22222" ,"3"
"[yyy]rrrrr" ,"e   e ee"
"[yyy]tttttt" ,"\'e   e ee\'"
*/


//argv - аргумент прямиком из main. Тут используется для добывания пути к экзешнику
//_config - сюда ДОБАВЯТСЯ пропарсенные параметры
void _ParseProgKeys_fromConfFile(char** argv,td_ConfigContent& _config)
{
//папка конфига (ищем конфиг рядом с экзешником)
std::string ConfigFolder__;
{
ConfigFolder__=argv[0];

int pos=ConfigFolder__.rfind('\\');
if(pos==std::string::npos)
{
ConfigFolder__="";
}
else
{
ConfigFolder__.erase(ConfigFolder__.begin()+pos+1,ConfigFolder__.end());
}
}

//имя конфига
std::string ConfigName="config.ini";

//полный путь к конфигу
std::string ConfigFullPath=ConfigFolder__+ConfigName;

//буфер для строки
std::vector<char> buffer(1024,0);

//открыть конфиг
std::vector<wchar_t> WideCharBuff;
{
int WClen= MultiByteToWideChar(CP_ACP,0,ConfigFullPath.c_str(),ConfigFullPath.size()+1,0,0);
if(!WClen)return;
WideCharBuff.resize(WClen,0);
MultiByteToWideChar(CP_ACP,0,ConfigFullPath.c_str(),ConfigFullPath.size()+1,&WideCharBuff[0],WideCharBuff.size());

if(WideCharBuff[WideCharBuff.size()-1]!=0)return;
}

std::cout<<"путь к конфигурационному файлу:"<<std::endl<<ConfigFullPath<<std::endl<<std::endl;
std::ifstream in(&WideCharBuff[0]);
if(!in)
{
std::cout<<"не могу открыть "<<ConfigName<<std::endl;
return;
}

//флаг показывает, что строка уже прочитана в буфер,
//тогда не нужно в начале итерации читать из файла
bool bBufferFilled=false;
for(;;)
{
if(bBufferFilled)
{
//строка уже загружена
bBufferFilled=false;
}
else
{
//читаем строку
if(!in)
{
break;
}
in.getline(&buffer[0], buffer.size());
}

const char* pbeg=&buffer[0];
const char* pend=0;
std::string PART;
std::string paramname;
std::string paramvalue;

//проверка на начало раздела [xxxx]
if( (*pbeg=='[') && (pend=strchr(pbeg,']')) )
{
PART.clear();
PART.insert(PART.end(),pbeg,pend+1);

//читаем параметры из раздела
for(;in;)
{
//читаем строку
bBufferFilled=_ParsePARTparam_ret_bBufferFilled(in,buffer,PART,paramname,paramvalue,_config);
if(bBufferFilled)break;//встретился новый раздел и строка загружена в буфер
}
}
}

//удаляем пустой ключ, если был где-то
_config.erase("");
}

//возвращает новое значение флага bBufferFilled
bool _ParsePARTparam_ret_bBufferFilled
(
std::ifstream& in,
std::vector<char>& buffer,
const std::string& PART,
std::string& paramname,
std::string& paramvalue,
td_ConfigContent& _config
)
{
const char* pbeg=0;
const char* pend=0;

std::string paramname_value;
paramname.clear();
paramvalue.clear();
in.getline(&buffer[0], buffer.size());

pbeg=&buffer[0];
if(*pbeg=='[')return true;//строка загружена, начат новый раздел

if(pend=strchr(pbeg,'#'))
{
//есть комментарий - удаляем
paramname_value.insert(paramname_value.end(),pbeg,pend);
}
else
{
//берём всю строку
paramname_value=pbeg;
}

if(paramname_value!="")
{
int pos1=0,pos2=0;
//начало имени параметра
pos1=paramname_value.find_first_not_of(" \t");
if(pos1==std::string::npos)return false;
pos2=paramname_value.find_first_of('=',pos1);
if(pos2==std::string::npos)return false;

paramname.insert(paramname.end(),&paramname_value[pos1],&paramname_value[pos2]);
//удалить пробелы в конце
while(!paramname.empty() && ( (*paramname.rbegin()==' ') || (*paramname.rbegin()=='\t') ) )paramname.resize(paramname.size()-1);


//начало значения
pos1=paramname_value.find_first_not_of(" \t",pos2+1);
if(pos1==std::string::npos)return false;
paramvalue.insert(paramvalue.end(),paramname_value.begin()+pos1,paramname_value.end());
//удалить пробелы в конце
while(!paramvalue.empty() &&  ( *paramvalue.rbegin()==' ' || *paramvalue.rbegin()=='\t') ) paramvalue.resize(paramvalue.size()-1);

_config[PART+paramname]=paramvalue;
}

return false;//строка не загружена
}
« Последнее редактирование: 28-08-2010 20:21 от Алексей1153++ » Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #193 : 28-08-2010 21:11 » 

Лёш, а зачем? Ведь есть две апишные ф-ции.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #194 : 29-08-2010 04:42 » 

Джон, а покажи, я ж не в курсе )
Записан

lag
Участник

ru
Offline Offline

« Ответ #195 : 29-08-2010 06:30 » 

Цитата
Лёш, а зачем? Ведь есть две апишные ф-ции.
А в Windows CE 4.2 их нет Жаль
Тоже пришлось свой парсер писать.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #196 : 29-08-2010 11:56 » 

Джон, а покажи, я ж не в курсе )


Да в курсе. Ага Get/Write-PrivateProfile-String/Int

А в Windows CE 4.2 их нет Жаль

Дык, там много чего нет. Она ж еmbedded.

ps Лёш, вопрос "зачем?" собственно породился из "случайно сделал". Против собственных ф-ций я ничего против не имею.
« Последнее редактирование: 29-08-2010 11:58 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #197 : 29-08-2010 11:59 » 

Да в курсе.  Get/Write-PrivateProfile-String/Int
та нет, никогда не пользовался таким. А так - запомню на всякий случай )
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #198 : 29-08-2010 12:00 » 

 "зачем?" - понадобилось, сел и сделал )) Я даже и не подумал, что в АПИ уже есть что-то такое
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #199 : 29-08-2010 16:39 » 

Лёш, а в MFC ты как с реестром работаешь? Какими ф-ми пользуешься? Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #200 : 30-08-2010 05:27 » 

У меня, вообще-то, свой класс на эту тему написан, поэтому названия функций с ходу не помню, но заглянул в код, вот список:
RegSetValueEx
RegQueryValueEx
RegCreateKeyEx
RegOpenKeyEx
RegDeleteKey
RegDeleteValue
Записан

resource
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #201 : 30-08-2010 05:51 » 

Леш, ну теперь ты уже и меня заинтриговал. Что же делают функции твоего класса, кроме вызова одноименных API-функций?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #202 : 30-08-2010 06:02 » 

resource, всего лишь человеческие названия + удобство )
Код:
bool Data_BINARY_Set (const char* pchValueName,const BYTE* const bindata,const DWORD datalen);
bool Data_BINARY_Set (const char* pchValueName,const std::vector<BYTE>& v);
bool Data_BINARY_Get (const char* pchValueName,const DWORD dwdToRead,BYTE* const bindata,DWORD& dwdRead,bool bExactlyLen=false);
bool Data_BINARY_Get (const char* pchValueName,const DWORD dwdToRead,std::vector<BYTE>& v,bool bExactlyLen=false);

bool Data_CHARFORMAT_Set (const char* pchValueName,const CHARFORMAT* pCF);
bool Data_CHARFORMAT_Get (const char* pchValueName, CHARFORMAT* pCF,const CHARFORMAT* pCF_Default=0);

bool Data_LOGFONT_Set (const char* pchValueName,const LOGFONT* plogfont);
bool Data_LOGFONT_Get (const char* pchValueName, LOGFONT* plogfont,const LOGFONT* plogfont_Default=0);

bool Data_CString_Set (const char* pchValueName,CString chText,bool bIs_REG_EXPAND_SZ=false);
bool Data_CString_Get (const char* pchValueName,CString& value,const char* pchDefaultVal="",DWORD dwdMaxSize=0,bool bIs_REG_EXPAND_SZ=false);

template<class SimpleType>
bool Data_SIMPLE_Set (const char* pchValueName,SimpleType& val);

template<class SimpleType>
bool Data_SIMPLE_Get (const char* pchValueName,SimpleType& val,SimpleType byDefault=(SimpleType)0);

bool Data_SIMPLE_Set_byLen (const char* pchValueName,const void* const pVal,const DWORD ValLen,bool bUse_WORD_like_DWORD=false);
bool Data_SIMPLE_Get_byLen (const char* pchValueName, void* const pVal, DWORD ValLen,bool bUse_WORD_like_DWORD=false);

bool Data_MainFramePos_Set (const char* pchValueName,HWND h);
bool Data_MainFramePos_Get (const char* pchValueName,HWND h);

bool Data_WindowPos_Set (const char* pchValueName,HWND h,bool bAbsoluteCoord=true);
bool Data_WindowPos_Get (const char* pchValueName,HWND h,bool bAbsoluteCoord=true,bool bCorrectIfNotOnScreen=true,bool bLoadWINDOWPLACEMENT=false);
Записан

resource
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #203 : 30-08-2010 06:11 » 

ааа. эт ваши плюсачные извраты  Улыбаюсь
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #204 : 30-08-2010 06:23 » 

нет, это экономия времени ))
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #205 : 10-09-2010 05:46 » 

"забавные" грабли
Код:
CString ttt;
std::string sss="1";
ttt.Format("%s",sss/*.c_str()*/);

//ttt=="(null)";

Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #206 : 10-09-2010 07:10 » 

Леш, а CString здесь работает с ASCII или с Unicode?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #207 : 10-09-2010 07:21 » 

кодировка в CString зависит от настроек проекта
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #208 : 10-09-2010 07:24 » 

у меня многобайтовая кодировка, юникода нет
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #209 : 10-09-2010 07:27 » 

Значит ANSI
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Страниц: 1 ... 4 5 6 [7] 8   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines