usver = getenv("USERNAME") ; далее эта переменная передается функцией char* usr = usver.c_str(); ShellExecute(0,"open","cmdprog.exe",usr,"",1); в качестве параметра консольной проге, которая отображает вместо того самого %username% параметра кракозябру. Как переделать чтобы воспринималось в правильной кодировке?
А почему не воспользоваться стандартной API-шной GetUserName? У нее Unicode-версия есть - и никаких проблем с кодировкой
Комраден, написал рекурсив на Борланде, который папку с файлами удаляет "Clear();"
Кусок:
TSearchRec SearchRec; if (FindFirst("*",faAnyFile,SearchRec)==0) do { char* attribf = SearchRec.Name.c_str(); SetFileAttributes(attribf,FILE_ATTRIBUTE_NORMAL); DeleteFile (attribf); или DeleteFile (SearchRec.Name);
и тд...
Файлы удаляет, потом папки RemoveDir();. Не удаляются файлы с именами на арабском и прочей кракозябре. Подскажите, пожалуйста, FindFirst виновата или DeleteFile?
Как исправить и стоит ли, может я колесо изобретаю и можно готовую взять, которая папки с файлами удаляет?
_________________ Геноцид русских - Белая Книга памяти:http://www.radosvet.net/zdrava/genocid/4331-genocid-russkix-belaya-kniga-pamyati.html
Advanced member
Статус: Не в сети Регистрация: 30.08.2003 Откуда: Санкт-Петербург
EXORCIST:)
Цитата:
char* attribf
:-o А если подумать? Арабский, крякозябры - Юникод. Для конвертации в ASCII нужно или играть с кодовой страницей... Или не использовать ASCII, а писать под Юникод. Могу и ошибаться - C++ Builder'ом не пользовался лет 5... Бо нафиг надо - MSVS.NET и gcc все мои потребности вполне удовлетворяют.
_________________ {:€ дед в законе :-) нородный окодемег почетный пользователь OpenSuSE 11.3 Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad
последний раз в builder`e лабал давно, и изрядно подзабыл вопрос - как подключиться к инету и прочитать страницу? помню, есть там компонент socket, но как юзать - забыл например, есть страница - http://www.12345.ru/index.html - как открыть на чтение?
последний раз в builder`e лабал давно, и изрядно подзабыл вопрос - как подключиться к инету и прочитать страницу? помню, есть там компонент socket, но как юзать - забыл например, есть страница - http://www.12345.ru/index.html - как открыть на чтение?
В экземпляре TClientSocket надо определить Address=www.12345.ru и Port=80. Создать TWinSocketStream. Записать туда что-то типа "GET /index.html HTTP/1.1\nHost: www.12345.ru\n\n" и ждать ответа.
Это опять я. Всем кто дает толковые советы Здравствуйте Есть у кого пример по написанию расширения оболочки такой как винрарная dll-ка например ? Рошал мне понятно не даст) Заранее Благодарен
_________________ Геноцид русских - Белая Книга памяти:http://www.radosvet.net/zdrava/genocid/4331-genocid-russkix-belaya-kniga-pamyati.html
Advanced member
Статус: Не в сети Регистрация: 30.08.2003 Откуда: Санкт-Петербург
EXORCIST:) 1) винрарная оболочка - слишком расплывчато. Конкретнее, что нужно - добавление своего пункта в контекстное меню проводника? 2) лениться не следует. 3)
Цитата:
Всем кто дает толковые советы
т.е. нужно готовое решение? Если подумать, то можно взять исходный код 7zip. Полагаю, что в состоянии его найти - там точно есть код интеграции в проводник.
_________________ {:€ дед в законе :-) нородный окодемег почетный пользователь OpenSuSE 11.3 Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad
Member
Статус: Не в сети Регистрация: 11.07.2004 Откуда: Москва
вопрос по visual c++. Необходимо сделать перевод из текста Edit1 и Edit2 (области ввода) в числа float, подсчитать по формуле (например Edit1+Edit2) и результат перенести в Edit3. Как это делается?
CItogDlg::CItogDlg(CWnd* pParent /*=NULL*/) : CDialog(CItogDlg::IDD, pParent) { //{{AFX_DATA_INIT(CItogDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); }
void CItogDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CItogDlg) // NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP }
// Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control }
// If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework.
void CItogDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting
// Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } }
// The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR CItogDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; }
void CItogDlg::OnChangeEdit1() { // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog() // function and call CRichEditCtrl().SetEventMask() // with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
}
void CItogDlg::OnChangeEdit2() { // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog() // function and call CRichEditCtrl().SetEventMask() // with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
}
void CItogDlg::OnChangeEdit3() { // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog() // function and call CRichEditCtrl().SetEventMask() // with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
}
void CItogDlg::OnOK() { // TODO: Add extra validation here
CDialog::OnOK(); }
void CItogDlg::OnCancel() { // TODO: Add extra cleanup here CString s; s.FormatMessage("123"); MessageBox(s, "456"); CDialog::OnCancel(); }
KI$ делается все через DoDataExchange, в редакторе ресурсов на нужном поле диалога правый клик, добавить переменную, выбираешь категорию Value (вместо Control), указываешь нужный тип.
ps лучше почитай книгу по MFC, там не все очевидно.
ps. ps а может лучше изучай что-нибудь другое, MFC технология устаревшая, MS ее не развивает практически.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения