Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: NeuronViking
Дата сообщения: 27.04.2012 06:13
bomzzz спросите на форумe wasm.ru
Автор: doktorpilulkin
Дата сообщения: 27.04.2012 07:07
спрошу возможно. просто Си программистов на порядок больше.

дело в 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
может это по их мнению и безопасность, но очень похоже что когда машина загорится человек из нее не выбереться, утонув в мандаториях
Автор: dimpase
Дата сообщения: 27.04.2012 10:10
Чего?Ни кто не подскажет?

Цитата:
Всем привет.
Совсем нуб!
Подскажите, как программа обменивается информацией с ком портом?
Вернее как она обменивается информацией не с комп-портом. а с ккм, через ком порт.
ККМ-КОМП-ПРОГРАММА
Как они обмениваются информацией? если порт открыт той программой, или железкой, в данном случае ккм, которая открыла порт первой.
или они закрывают его поочередно и потом открывают?
Много сайтов перелистал, но так и не понял.
Есть какие то прерывания, может быть во время этих прерываний приемник молчит,передатчик отдает, потом наоборот?
Заранее сенкс, не пинайте больно.

Автор: doktorpilulkin
Дата сообщения: 27.04.2012 10:13
ну сам подумай - кто с ком портом развлекался, когда сд приводы уже на грани вымирания. на многих новых материнках ком порта в принципе нет, не то что разводку не сделали. гуглить надо врядли там что то сложное, хоть для 16 бит хоть для 32
Автор: dimpase
Дата сообщения: 27.04.2012 10:46
ком порты еще используются , и я думаю еще долго не вымрут.
очень много периферии до сих пор используется на ком портах.Особенно в торговле.
Автор: akaGM
Дата сообщения: 27.04.2012 12:05
особенно в автоматизации, в аппаратном сопряжении...
Автор: doktorpilulkin
Дата сообщения: 27.04.2012 13:45
ну тогда мы все во внимании - сейчас вы нам поведаете как его программировать. вдруг понадобиться.

Добавлено:

Цитата:
С последовательными и параллельными портами в 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.
Автор: gluk_123
Дата сообщения: 27.04.2012 15:00
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)
{
//обработка текущей строки.
}
Автор: kotlomoy
Дата сообщения: 27.04.2012 22:23
gluk_123
А что это за язык? Я имею ввиду крышечки "^", похожи на паскалевские указатели
Автор: dimpase
Дата сообщения: 28.04.2012 09:45
doktorpilulkin
Вопрос то ни в этом,

Цитата:
Подскажите, как программа обменивается информацией с ком портом?
Вернее как она обменивается информацией не с комп-портом. а с ккм, через ком порт.
ККМ-КОМП-ПРОГРАММА
Как они обмениваются информацией? если порт открыт той программой, или железкой, в данном случае ккм, которая открыла порт первой.
или они закрывают его поочередно и потом открывают?


Автор: doktorpilulkin
Дата сообщения: 28.04.2012 09:49
попробуй да узнаешь. или пример найди в инете. с одной тсоронынаписано

Цитата:
dwShareMode
Задает параметры совместного доступа к файлу. Коммуникационные порты нельзя делать разделяемыми, поэтому данный параметр должен быть равен 0.

с другой стороны писать в порт нельзя отложено то что пишеться должен тут же кто то принимать
Автор: Syjgin
Дата сообщения: 28.04.2012 12:21
Вопрос не совсем по С++, а по настройке среды разработки: привык к 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. Можете скинуть архив с бинарником отладчика? А то официальный инсталлятор его почему-то или не устанавливает, или ставит куда-то не туда
Автор: gluk_123
Дата сообщения: 28.04.2012 13:53

Цитата:
А что это за язык? Я имею ввиду крышечки "^", похожи на паскалевские указатели

managed C++. B VisualStuidio 2010 входит как один из 5 языков студии. По сути это обычный С++, но с добавками мелкомягких, типа управления сборщиком памяти и тп.
Автор: dimon0476
Дата сообщения: 30.04.2012 16:58
У меня есть С++ портабл. Она полнофункциональная или чего не хватает в ней?
Автор: Red Planet
Дата сообщения: 30.04.2012 21:23
Приветствую всех! Нужно сделать поддержку двух языков в приложении, написанном на 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", "Эксперимент"
    };
};
Автор: Red Planet
Дата сообщения: 01.05.2012 18:53
Проблема решена.

Вчера не нашел, а сегодня достаточно быстро решил.

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];
};
Автор: cp58
Дата сообщения: 07.05.2012 02:54
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
};
};
Автор: dimon0476
Дата сообщения: 09.05.2012 16:04
У кого есть ссылка на хороший учебник, скиньте!
Автор: crasylaser
Дата сообщения: 12.05.2012 15:42
Ребята, чё то у меня не пишется ничего в реестр:

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, может из за этого? Может как нибудь по другому?
Автор: Kesha666
Дата сообщения: 13.05.2012 12:10
гуру С++, очень надеюсь на вашу помощь. Проблема повторного включения файлов.
есть хидер:

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)
то проект компилируется, хотя компилятор все равно ругается и сообщает об этих ошибках. Однако исполняемый файл создается и вроде корректно работает. Если кто знает, как заставить компилятор перестать ругаться на многократно определенный символ, и собирать проект без включения этой опции, подскажите.
Автор: cp58
Дата сообщения: 13.05.2012 12:58
Kesha666

Цитата:
#include "MyClass.cpp"

Так делать нельзя(комплиятор пропустит в некоторых случаях).

Для #include есть специальный тип файлов - заголовочный файл, не надо мешать с реализацией.
Файлы типа .cpp иначе оперируются. Если есть файл a.cpp, b.cpp, то комплиятор прообразует их в a.o, b.o, затем используется компоновщик.

Вместо #include "MyClass.cpp" написать следует #include "MyClass.h"
Автор: kotlomoy
Дата сообщения: 13.05.2012 13:03
Kesha666
Вообще подключать cpp-шники это что-то новое)) И я бы ругался
Автор: Kesha666
Дата сообщения: 13.05.2012 14:04
Во многих учебниках читал, что это вполне нормальный подход: в хидер пишем интерфейс класса, реализацию в отдельном cpp и код основной программы где создается объект этого класса в другом cpp где инклюдится cpp c реализацией класса. Допустим они не правы. Как тогда по вашему организовать класс? Причем задача стоит именно в том, чтоб интерфейс в одном файле, реализация в другом, основное тело программы в третьем.


Цитата:
Вместо #include "MyClass.cpp"  написать следует #include "MyClass.h"


тогда подключится только текст с обявлением класса. а реализацию как подключить? или её не нужно подключать? достаточно только хидер объявить?

Добавлено:
Добрался до компа. да действительно, если включить только хидер, все работает.
cp58 спсибо.
тогда встречный вопрос?. если подключаем только хидер, откуда компилятор знает, где брать реализацию методов? реализация ведь в другом файле.
Автор: akaGM
Дата сообщения: 13.05.2012 14:38
Kesha666

Цитата:
если подключаем только хидер, откуда компилятор знает, где брать реализацию методов? реализация ведь в другом файле.

линкер разберётся...
Автор: Kesha666
Дата сообщения: 13.05.2012 14:41
Понятно что разберется. Но как он в этом разбирается. Откуда он узнает? Спрашиваю просто так, с целью повышения собственного миропонимания.
Автор: akaGM
Дата сообщения: 13.05.2012 14:43
компилятор только вставляет вызовы, а линкер "разрешает" внешние ссылки, т.е. подставляет реальный вызоа и тело вызываемой п/п
попробуй убрать из сборки файл MyClass.obj, в кот. как раз и находится код методов -- линкер заверещит, и это будет именно ошибка линкера, ошибка сборки...
Автор: Kesha666
Дата сообщения: 13.05.2012 15:18
Все понял. Для эксперимента, убрал из проекта файл MyClass.cpp (не удалил, а именно исключил из проекта). В этом случае директива #include "MyClass.cpp" отработала как положено, ни ошибок компиляции, не ошибок линковки не было.
Автор: dimon0476
Дата сообщения: 14.05.2012 07:35
Вопрос: кто-нибудь знает чем отличаются С++ и Delphi? У меня есть портабл-программа, сделанная из обоих сразу. В интерфейсе можно переключать чем пользуешься. И еще: такой софт реально может без глюков работать?
Автор: akaGM
Дата сообщения: 14.05.2012 13:29
dimon0476
странный какой-то вопрос...
что за программа, можно подробнее?
Автор: dimon0476
Дата сообщения: 14.05.2012 13:47
Программа так и называется: Delphi. Но в интерфейсе переключение стоит: вкладки с командами могут быть как одно, так и другое. Надпись сверху может быть либо С++, либо Delphi. Работает как портабл.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.