bomzzz спросите на форумe wasm.ru
» Вопросы по программированию на C/С++
спрошу возможно. просто Си программистов на порядок больше.
дело в Integrity Level, новая "фенька" ядра добавленная в Vist-у, кроме тормознутости. нельзя иннжектироваться в процесс с более высоким уровнем, а я инжектировался в WinLogon - Integrity Level = System. погуглил погуглил - вся инфа в основном на английском, на wasm.ru действительно пару раз вопрос поднимался. но ответа как изменить или поднять этот уровень я пока не нашел
http://blog.didierstevens.com/2010/09/07/integrity-levels-and-dll-injection/
icacls.exe
http://winchanger.narod.ru/winprograms/icacls.htm
может это по их мнению и безопасность, но очень похоже что когда машина загорится человек из нее не выбереться, утонув в мандаториях
дело в Integrity Level, новая "фенька" ядра добавленная в Vist-у, кроме тормознутости. нельзя иннжектироваться в процесс с более высоким уровнем, а я инжектировался в WinLogon - Integrity Level = System. погуглил погуглил - вся инфа в основном на английском, на wasm.ru действительно пару раз вопрос поднимался. но ответа как изменить или поднять этот уровень я пока не нашел
http://blog.didierstevens.com/2010/09/07/integrity-levels-and-dll-injection/
icacls.exe
http://winchanger.narod.ru/winprograms/icacls.htm
может это по их мнению и безопасность, но очень похоже что когда машина загорится человек из нее не выбереться, утонув в мандаториях
Чего?Ни кто не подскажет?
Цитата:
Цитата:
Всем привет.
Совсем нуб!
Подскажите, как программа обменивается информацией с ком портом?
Вернее как она обменивается информацией не с комп-портом. а с ккм, через ком порт.
ККМ-КОМП-ПРОГРАММА
Как они обмениваются информацией? если порт открыт той программой, или железкой, в данном случае ккм, которая открыла порт первой.
или они закрывают его поочередно и потом открывают?
Много сайтов перелистал, но так и не понял.
Есть какие то прерывания, может быть во время этих прерываний приемник молчит,передатчик отдает, потом наоборот?
Заранее сенкс, не пинайте больно.
ну сам подумай - кто с ком портом развлекался, когда сд приводы уже на грани вымирания. на многих новых материнках ком порта в принципе нет, не то что разводку не сделали. гуглить надо врядли там что то сложное, хоть для 16 бит хоть для 32
ком порты еще используются , и я думаю еще долго не вымрут.
очень много периферии до сих пор используется на ком портах.Особенно в торговле.
очень много периферии до сих пор используется на ком портах.Особенно в торговле.
особенно в автоматизации, в аппаратном сопряжении...
ну тогда мы все во внимании - сейчас вы нам поведаете как его программировать. вдруг понадобиться.
Добавлено:
Цитата:
COM-порт в Windows (программирование)
много шума из ничего. в бейсике тоже самое было
dwShareMode
Задает параметры совместного доступа к файлу. Коммуникационные порты нельзя делать разделяемыми, поэтому данный параметр должен быть равен 0.
Добавлено:
Цитата:
С последовательными и параллельными портами в Win32 работают как с файлами. Для открытия порта используется функция CreateFile. Эта функция предоставляется Win32 API. Ее прототип выглядит так:
HANDLE CreateFile(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDistribution,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);
COM-порт в Windows (программирование)
много шума из ничего. в бейсике тоже самое было
dwShareMode
Задает параметры совместного доступа к файлу. Коммуникационные порты нельзя делать разделяемыми, поэтому данный параметр должен быть равен 0.
Cделал так:
Код:
String^ Line_s;
String^ sFileName;
sFileName = openFileDialog1->FileName;
FileInfo^ fi = gcnew FileInfo( sFileName );
array<unsigned char,1> ^ buff2 = gcnew array<unsigned char,1> (fi->Length);
buff2 = File::ReadAllBytes(sFileName);
MemoryStream^ memStream = gcnew MemoryStream (buff2,0,fi->Length);
System::IO::StreamReader ^ sr = gcnew System::IO::StreamReader(memStream , System::Text::Encoding::UTF8,false,50000);
while ((Line_s = sr->ReadLine()) != nullptr)
{
//обработка текущей строки.
}
Код:
String^ Line_s;
String^ sFileName;
sFileName = openFileDialog1->FileName;
FileInfo^ fi = gcnew FileInfo( sFileName );
array<unsigned char,1> ^ buff2 = gcnew array<unsigned char,1> (fi->Length);
buff2 = File::ReadAllBytes(sFileName);
MemoryStream^ memStream = gcnew MemoryStream (buff2,0,fi->Length);
System::IO::StreamReader ^ sr = gcnew System::IO::StreamReader(memStream , System::Text::Encoding::UTF8,false,50000);
while ((Line_s = sr->ReadLine()) != nullptr)
{
//обработка текущей строки.
}
gluk_123
А что это за язык? Я имею ввиду крышечки "^", похожи на паскалевские указатели
А что это за язык? Я имею ввиду крышечки "^", похожи на паскалевские указатели
doktorpilulkin
Вопрос то ни в этом,
Цитата:
Вопрос то ни в этом,
Цитата:
Подскажите, как программа обменивается информацией с ком портом?
Вернее как она обменивается информацией не с комп-портом. а с ккм, через ком порт.
ККМ-КОМП-ПРОГРАММА
Как они обмениваются информацией? если порт открыт той программой, или железкой, в данном случае ккм, которая открыла порт первой.
или они закрывают его поочередно и потом открывают?
попробуй да узнаешь. или пример найди в инете. с одной тсоронынаписано
Цитата:
с другой стороны писать в порт нельзя отложено то что пишеться должен тут же кто то принимать
Цитата:
dwShareMode
Задает параметры совместного доступа к файлу. Коммуникационные порты нельзя делать разделяемыми, поэтому данный параметр должен быть равен 0.
с другой стороны писать в порт нельзя отложено то что пишеться должен тут же кто то принимать
Вопрос не совсем по С++, а по настройке среды разработки: привык к Qt creator, но под windows не получается настроить отладчик - ни GDB(minGW), ни CDB(msvc). В первом случае при попытке отладить возникает ошибка "процесс gdb неожиданно завершился(код 0)" - пробовал ставить в качестве отладчика и сам бинарник gdb и pythongdb из состава qt SDK. При этом дело не в самой программе - валится даже на hello world. Попробовал с майкрософтовским отладчиком, но примерно тоже самое: установил Windows SDK, но, где лежит cdb.exe, непонятно(даже VS express поставил, но и там его нет). ПРи попытке запустить отладку появляется сообщение "Предпочтительный отладчик для программ типа x86-windows-msvc2010-pe-32bit" недоступен. В качестве него будет использоваться резервный отладчик GDB engine. Можете скинуть архив с бинарником отладчика? А то официальный инсталлятор его почему-то или не устанавливает, или ставит куда-то не туда
Цитата:
А что это за язык? Я имею ввиду крышечки "^", похожи на паскалевские указатели
managed C++. B VisualStuidio 2010 входит как один из 5 языков студии. По сути это обычный С++, но с добавками мелкомягких, типа управления сборщиком памяти и тп.
У меня есть С++ портабл. Она полнофункциональная или чего не хватает в ней?
Приветствую всех! Нужно сделать поддержку двух языков в приложении, написанном на C++Builder 2010. Для "hard-coded" строк TsiLang не очень подошел, так как половину не увидел, а другую изменил так, что посыпались ошибки. Решил набросать класс, где будут храниться строки на русском и английском, однако такой код отказывается компилироваться с ошибкой "Cannot initialize a class member here".
Это интерфейс класса в h-файле.
Код: class lang_manager {
const static int LNG_AMOUNT = 2;
public:
static int LNG_CURRENT;
static const int LNG_EN = 0, LNG_RU = 1;
// Error cause
static const UnicodeString EXPERIMENT[LNG_AMOUNT] = {
"Experiment", "Эксперимент"
};
};
Это интерфейс класса в h-файле.
Код: class lang_manager {
const static int LNG_AMOUNT = 2;
public:
static int LNG_CURRENT;
static const int LNG_EN = 0, LNG_RU = 1;
// Error cause
static const UnicodeString EXPERIMENT[LNG_AMOUNT] = {
"Experiment", "Эксперимент"
};
};
Проблема решена.
Вчера не нашел, а сегодня достаточно быстро решил.
h-файл.
Код: class lang_manager {
const static int LNG_AMOUNT = 2;
public:
static int LNG_CURRENT;
static const int LNG_EN = 0, LNG_RU = 1;
// Error cause
static const UnicodeString EXPERIMENT[LNG_AMOUNT];
};
Вчера не нашел, а сегодня достаточно быстро решил.
h-файл.
Код: class lang_manager {
const static int LNG_AMOUNT = 2;
public:
static int LNG_CURRENT;
static const int LNG_EN = 0, LNG_RU = 1;
// Error cause
static const UnicodeString EXPERIMENT[LNG_AMOUNT];
};
Red Planet
Константы для класса задаются через enum.
class SomeClass {
enum {
GOOD_RES=1,
BAD_RES=0,
FILE_NOT_READ=10
};
};
Но не очень удобно, проще чтобы инкрементировалось значение автоматически.
class SomeClass {
enum {
GOOD_RES,
BAD_RES,
FILE_NOT_READ
};
};
Константы для класса задаются через enum.
class SomeClass {
enum {
GOOD_RES=1,
BAD_RES=0,
FILE_NOT_READ=10
};
};
Но не очень удобно, проще чтобы инкрементировалось значение автоматически.
class SomeClass {
enum {
GOOD_RES,
BAD_RES,
FILE_NOT_READ
};
};
У кого есть ссылка на хороший учебник, скиньте!
Ребята, чё то у меня не пишется ничего в реестр:
TRegistry *reg=new TRegistry(KEY_ALL_ACCESS);
reg->RootKey=HKEY_LOCAL_MACHINE;
reg->OpenKey("\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer",true);
reg->WriteInteger("a4b",00000001);
reg->CloseKey();
delete reg;
Система Windows 7 x64, может из за этого? Может как нибудь по другому?
TRegistry *reg=new TRegistry(KEY_ALL_ACCESS);
reg->RootKey=HKEY_LOCAL_MACHINE;
reg->OpenKey("\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer",true);
reg->WriteInteger("a4b",00000001);
reg->CloseKey();
delete reg;
Система Windows 7 x64, может из за этого? Может как нибудь по другому?
гуру С++, очень надеюсь на вашу помощь. Проблема повторного включения файлов.
есть хидер:
MyClass.h
====================
#ifndef MYCLASS_H
#define MYCLASS_H 1
class MyClass
{
public:
.......
MyClass (int Value);
.......
MyClass operator ++ ();
.......
private:
.......
};
#endif
====================
как видим все методы встраиваемые кроме конструктора и перегрузки инкремента.
их реализация в файле MyClass.cpp:
MyClass.cpp
====================
#ifndef MYCLASS_CPP
#define MYCLASS_CPP 1
#include "Myclass.h"
MyClass::MyClass (int Value)
{
......
}
MyClass MyClass::operator ++ ()
{
......
}
#endif
====================
и есть main.cpp где подключается MyClass.cpp
main.cpp
====================
#include "MyClass.cpp"
.....
int main()
{
.....
MyClass NewObj(5);
.....
}
.....
====================
как видим инклюд гвард присутствует. тем не менее компилятор сообщает:
Описание Файл
Ошибка 1 error LNK2005: "public: __thiscall MyClass::MyClass(void)" main.obj
(??0MyClass@@QAE@XZ) уже определен в MyClass.obj
Ошибка 2 error LNK2005: "public: class MyClass __thiscall main.obj
MyClass::MyClass++(void)" (??EMyClass@@QAE?AV0@XZ)
уже определен в MyClass.obj
Ошибка 3 error LNK1169: обнаружен многократно MyApp.exe
определенный символ - один или более
------------------------------------------------------------------------------------------------------
помогите пожалуйста с проблемой. либо я дурак либо лыжи не едут.
заранее спасибо.
Забыл сказать. Используется VS 2010. И если в свойствах проекта выбрать опцию компоновщик->Общие->Принудительный вывод файла->Только многократно определенный символ (/FORCE:MULTIPLE)
то проект компилируется, хотя компилятор все равно ругается и сообщает об этих ошибках. Однако исполняемый файл создается и вроде корректно работает. Если кто знает, как заставить компилятор перестать ругаться на многократно определенный символ, и собирать проект без включения этой опции, подскажите.
есть хидер:
MyClass.h
====================
#ifndef MYCLASS_H
#define MYCLASS_H 1
class MyClass
{
public:
.......
MyClass (int Value);
.......
MyClass operator ++ ();
.......
private:
.......
};
#endif
====================
как видим все методы встраиваемые кроме конструктора и перегрузки инкремента.
их реализация в файле MyClass.cpp:
MyClass.cpp
====================
#ifndef MYCLASS_CPP
#define MYCLASS_CPP 1
#include "Myclass.h"
MyClass::MyClass (int Value)
{
......
}
MyClass MyClass::operator ++ ()
{
......
}
#endif
====================
и есть main.cpp где подключается MyClass.cpp
main.cpp
====================
#include "MyClass.cpp"
.....
int main()
{
.....
MyClass NewObj(5);
.....
}
.....
====================
как видим инклюд гвард присутствует. тем не менее компилятор сообщает:
Описание Файл
Ошибка 1 error LNK2005: "public: __thiscall MyClass::MyClass(void)" main.obj
(??0MyClass@@QAE@XZ) уже определен в MyClass.obj
Ошибка 2 error LNK2005: "public: class MyClass __thiscall main.obj
MyClass::MyClass++(void)" (??EMyClass@@QAE?AV0@XZ)
уже определен в MyClass.obj
Ошибка 3 error LNK1169: обнаружен многократно MyApp.exe
определенный символ - один или более
------------------------------------------------------------------------------------------------------
помогите пожалуйста с проблемой. либо я дурак либо лыжи не едут.
заранее спасибо.
Забыл сказать. Используется VS 2010. И если в свойствах проекта выбрать опцию компоновщик->Общие->Принудительный вывод файла->Только многократно определенный символ (/FORCE:MULTIPLE)
то проект компилируется, хотя компилятор все равно ругается и сообщает об этих ошибках. Однако исполняемый файл создается и вроде корректно работает. Если кто знает, как заставить компилятор перестать ругаться на многократно определенный символ, и собирать проект без включения этой опции, подскажите.
Kesha666
Цитата:
Так делать нельзя(комплиятор пропустит в некоторых случаях).
Для #include есть специальный тип файлов - заголовочный файл, не надо мешать с реализацией.
Файлы типа .cpp иначе оперируются. Если есть файл a.cpp, b.cpp, то комплиятор прообразует их в a.o, b.o, затем используется компоновщик.
Вместо #include "MyClass.cpp" написать следует #include "MyClass.h"
Цитата:
#include "MyClass.cpp"
Так делать нельзя(комплиятор пропустит в некоторых случаях).
Для #include есть специальный тип файлов - заголовочный файл, не надо мешать с реализацией.
Файлы типа .cpp иначе оперируются. Если есть файл a.cpp, b.cpp, то комплиятор прообразует их в a.o, b.o, затем используется компоновщик.
Вместо #include "MyClass.cpp" написать следует #include "MyClass.h"
Kesha666
Вообще подключать cpp-шники это что-то новое)) И я бы ругался
Вообще подключать cpp-шники это что-то новое)) И я бы ругался
Во многих учебниках читал, что это вполне нормальный подход: в хидер пишем интерфейс класса, реализацию в отдельном cpp и код основной программы где создается объект этого класса в другом cpp где инклюдится cpp c реализацией класса. Допустим они не правы. Как тогда по вашему организовать класс? Причем задача стоит именно в том, чтоб интерфейс в одном файле, реализация в другом, основное тело программы в третьем.
Цитата:
тогда подключится только текст с обявлением класса. а реализацию как подключить? или её не нужно подключать? достаточно только хидер объявить?
Добавлено:
Добрался до компа. да действительно, если включить только хидер, все работает.
cp58 спсибо.
тогда встречный вопрос?. если подключаем только хидер, откуда компилятор знает, где брать реализацию методов? реализация ведь в другом файле.
Цитата:
Вместо #include "MyClass.cpp" написать следует #include "MyClass.h"
тогда подключится только текст с обявлением класса. а реализацию как подключить? или её не нужно подключать? достаточно только хидер объявить?
Добавлено:
Добрался до компа. да действительно, если включить только хидер, все работает.
cp58 спсибо.
тогда встречный вопрос?. если подключаем только хидер, откуда компилятор знает, где брать реализацию методов? реализация ведь в другом файле.
Kesha666
Цитата:
линкер разберётся...
Цитата:
если подключаем только хидер, откуда компилятор знает, где брать реализацию методов? реализация ведь в другом файле.
линкер разберётся...
Понятно что разберется. Но как он в этом разбирается. Откуда он узнает? Спрашиваю просто так, с целью повышения собственного миропонимания.
компилятор только вставляет вызовы, а линкер "разрешает" внешние ссылки, т.е. подставляет реальный вызоа и тело вызываемой п/п
попробуй убрать из сборки файл MyClass.obj, в кот. как раз и находится код методов -- линкер заверещит, и это будет именно ошибка линкера, ошибка сборки...
попробуй убрать из сборки файл MyClass.obj, в кот. как раз и находится код методов -- линкер заверещит, и это будет именно ошибка линкера, ошибка сборки...
Все понял. Для эксперимента, убрал из проекта файл MyClass.cpp (не удалил, а именно исключил из проекта). В этом случае директива #include "MyClass.cpp" отработала как положено, ни ошибок компиляции, не ошибок линковки не было.
Вопрос: кто-нибудь знает чем отличаются С++ и Delphi? У меня есть портабл-программа, сделанная из обоих сразу. В интерфейсе можно переключать чем пользуешься. И еще: такой софт реально может без глюков работать?
dimon0476
странный какой-то вопрос...
что за программа, можно подробнее?
странный какой-то вопрос...
что за программа, можно подробнее?
Программа так и называется: Delphi. Но в интерфейсе переключение стоит: вкладки с командами могут быть как одно, так и другое. Надпись сверху может быть либо С++, либо Delphi. Работает как портабл.
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
Предыдущая тема: не знаю как назвать тему :-)
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.