4 / 4 / 1
Регистрация: 23.01.2015
Сообщений: 330

Глобальный объект

30.10.2017, 17:28. Показов 3065. Ответов 49

Студворк — интернет-сервис помощи студентам
Есть у меня приложение с формой Win Forms(CLR) Ну у меня весь код соответственно в .h файле. Как там объявить вектор, что-бы его можно было использовать во всех ф-циях? Вот вектор: std::vector < HANDLE > Hl;
Пишет, что член класса управляемый не может относиться к типу класса не управляемый ...\MyForm.h
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.10.2017, 17:28
Ответы с готовыми решениями:

Глобальный объект
Как сделать, чтобы я создал объект, и его видел весь файл? Суть в том, что в конструктор я хочу передать аргумент. Или нужно сделать...

Динамический глобальный объект.
Здравствуйте. Пишу Auto-Clicker . Текущая версия содержит заранее созданный массив объектов класса &quot;TClickBase&quot; в каждом объекте...

Глобальный объект класса
Добрый вечер всем!) Вообщем суть такая: пишу статическую библиотеку, которая состоит из кучи файлов. Есть класс, конструктор которого...

49
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
31.10.2017, 21:44
Студворк — интернет-сервис помощи студентам
Я вообще не знал, что так можно сделать. Какая-то неясная возможность.
0
4 / 4 / 1
Регистрация: 23.01.2015
Сообщений: 330
31.10.2017, 21:44  [ТС]
Эх... с CreateFile всё идеально работало... Я с ним даже такую полезную ф-цию сделал:
C++
1
2
3
4
5
6
7
8
9
private: System::Void textBox1_TextChanged(System::Object^  sender, System::EventArgs^  e) {
    HANDLE H = CreateFileA(LPCSTR((char*)Marshal::StringToHGlobalAnsi(textBox1->Text).ToPointer()), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_POSIX_SEMANTICS, NULL);
    if (H == INVALID_HANDLE_VALUE) {
        addb->Enabled = false;
        DWORD gle = GetLastError();
        addb->Text = "Добавить (Код ошибки: "+ String::Format("{0}", gle) +")";
    }else { addb->Enabled = true; addb->Text = "Добавить"; }
    CloseHandle(H);
}
Добавлено через 32 секунды
Цитата Сообщение от nmcf Посмотреть сообщение
Я вообще не знал, что так можно сделать. Какая-то неясная возможность.
Вы про что?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
31.10.2017, 21:54
Заблокировать папку.
0
4 / 4 / 1
Регистрация: 23.01.2015
Сообщений: 330
31.10.2017, 22:04  [ТС]
Дааа, РАБОТАЕТ!
C#
1
2
3
4
5
6
7
8
9
10
[DllImport("Kernel32.dll", SetLastError = true)]
        static extern IntPtr CreateFile(
            string lpFileName,
            [MarshalAs(UnmanagedType.U4)] FileAccess dwDesiredAccess,
            [MarshalAs(UnmanagedType.U4)] FileShare dwShareMode,
            IntPtr securityAttributes,
            [MarshalAs(UnmanagedType.U4)] FileMode dwCreationDisposition,
            uint dwFlagsAndAttributes,
            IntPtr hTemplateFile
        );
И использование:
C#
1
IntPtr H = CreateFile("Путь или файл", FileAccess.Read, FileShare.None, IntPtr.Zero, FileMode.Open, 0x02000000 | 0x01000000, IntPtr.Zero);
Теперь помогите, как сделать такую проверку:
C++
1
2
3
if (H == INVALID_HANDLE_VALUE) {
        DWORD gle = GetLastError();
        addb/*(button)*/->Text = "(Код ошибки: "+ String::Format("{0}", gle) +")"; }
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
31.10.2017, 22:09
А что не получается? Двоеточия на точку замени.
0
4 / 4 / 1
Регистрация: 23.01.2015
Сообщений: 330
31.10.2017, 22:11  [ТС]
C++
1
if (H == INVALID_HANDLE_VALUE) {
Как вот это сделать?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
31.10.2017, 22:17
Попробуй привести к int.
0
4 / 4 / 1
Регистрация: 23.01.2015
Сообщений: 330
31.10.2017, 22:50  [ТС]
КАК? Можно код хоть разок?

Добавлено через 28 минут
Жаль, что за всё время, ты дал мне всего-лишь пару подсказок
Вот код:
C#
1
2
3
4
5
6
7
8
9
static extern /*IntPtr*/SafeFileHandle CreateFile(...
 
SafeFileHandle H;...
 
H = CreateFile("путь", FileAccess.Read, FileShare.None, IntPtr.Zero, FileMode.Open, 0x02000000 | 0x01000000, IntPtr.Zero);
            if (H.IsInvalid) {
                int le = Marshal.GetLastWin32Error();
                MessageBox.Show("Код ошибки: " + le.ToString(), "Ошибка");
            }
Добавлено через 20 секунд
C#
1
using Microsoft.Win32.SafeHandles;
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
31.10.2017, 22:56
C#
1
H.toInt64()
Там же есть справка.

Добавлено через 1 минуту
С таким надо в раздел C# идти.
0
4 / 4 / 1
Регистрация: 23.01.2015
Сообщений: 330
31.10.2017, 23:10  [ТС]
Если есть какие-нибудь идеи, то буду раз их увидеть...
(То, что я пытался сделать на c++ https://yadi.sk/d/gwLeghaf3PHNQJ)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.10.2017, 23:10

Глобальный объект класса
Ребят, написал класс для реализации очереди на основе массива в отдельном юните, теперь мне нужно в другом получить объект класса, который...

Правильно созданный глобальный объект
Необходимо создать создать несколько объектов классов глобально. Я делаю: Создаю h-файл. в нем объявляю(создаю) объекты. И в срр -...

Почему глобальный объект, объявленный до main, конструируется в ней?
Всё просто, имеем код: #include &lt;windows.h&gt; #include &lt;stdio.h&gt; using namespace std; class x { public: x () { printf...

Может ли объект-член, или объект-элемент достучаться к содержащему его?
Предположим, class A { ... }; class B { .... A a; ... };

Зачем при перегрузке оператора >> в параметр включать ссылку на объект, а не сам объект?
Зачем в параметры функции включать ссылку на объект: istream &amp;operator&gt;&gt;(istream &amp;stream, myclass &amp;ob) Почему не работает так:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
50
Ответ Создать тему
Опции темы

Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru