PDA

Просмотр полной версии : [c/c++] Новичкам: задаем вопросы


Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20 21 22

Mozy
12.09.2009, 19:32
Благодарю)) слушай, я скачал, qt3, пользуюсь прогой dev-cpp, или как то так, как библиотеку в неё вмазать?)

http://habrahabr.ru/blogs/development/30636/

_nic
12.09.2009, 21:34
map <AnsiString,int> speeding;
........................................
for(;;)
{
strcpy(buf,speed);
strtok(buf,",");
speed+=strlen(buf)+1;
strcpy(buff,buf);
strtok(buff,";");
buf+=strlen(buff)+1;
speeding[AnsiString(buff)]=atoi(buf);
ComboBox2->Items->Add(AnsiString(buff));
buf=(char*)Rbuf;
if(strlen(speed)==0){break;}
}

Строка на входе имеет такой вид:"4;2705,"
Немогу понять почему atoi возвращяет 0 :confused:

Hiro Protagonist
12.09.2009, 22:00
2_nic
какбэ strtok не так работает )
http://msdn.microsoft.com/ru-ru/library/2c8d19sb.aspx

Gin
13.09.2009, 15:02
Переменная
std::string someString;
Содержит текст, в нем нужно найти подстроку, с помощью какой функции это сделать и какое значени возвращает функция в случае успеха и неуспеха.
Спасиб.

Ra$cal
13.09.2009, 15:17
http://www.cplusplus.com/reference/string/string/

razb
13.09.2009, 15:17
substr() _http://www.cplusplus.com/reference/string/string/

Gin
13.09.2009, 15:56
2razb
substr() тут не подойдет она выделяет подстроку с указанной позиции до указанной.
ф-ция find() подходит, причем именно в такой записи if(answer.find("needle")!=string::npos)

DemoN47
13.09.2009, 16:43
:confused: Как написать простенькую программу под консольку, чтоб подключала библиотеку пусть текстовой ф-л и перебирала пароли (Помогите начинающему программисту на С++)

Si{R}ius
13.09.2009, 17:02
Такой вопрос: что лучше изучать сначала: С или С++ ? Уже немного знаю Pascal и Delphi
И еще, насколько я понял: С - аналог Паскаля (в плане, только консольные приложения)
С++ - аналог Делфи (в плане, можно писать проги с формой и кнопками:))
Так ли это?

[R]eD
13.09.2009, 17:03
Нужен пример программы (c++/Delphi/VB), которая бы имитировала движение мышью (например на 100пикселей в правую сторону), и нажатие одной кнопки (например, N).

Спасибо :).

Gin
13.09.2009, 17:13
Как конвертировать System::String в std::string или в char хотяб.
Спасибо.

BrainDeaD
13.09.2009, 17:26
#include <stdlib.h>
#include <vcclr.h>
#include <string>
using namespace System;

bool To_CharStar( String^ source, char*& target )
{
pin_ptr<const wchar_t> wch = PtrToStringChars( source );
int len = (( source->Length+1) * 2);
target = new char[ len ];
return wcstombs( target, wch, len ) != -1;

}

bool To_string( String^ source, string &target )
{
pin_ptr<const wchar_t> wch = PtrToStringChars( source );
int len = (( source->Length+1) * 2);
char *ch = new char[ len ];
bool result = wcstombs( ch, wch, len ) != -1;

target = ch;
delete ch;
return result;
}

source (http://blogs.msdn.com/slippman/archive/2004/06/02/147090.aspx)

Ra$cal
13.09.2009, 17:39
Такой вопрос: что лучше изучать сначала: С или С++ ? Уже немного знаю Pascal и Delphi
И еще, насколько я понял: С - аналог Паскаля (в плане, только консольные приложения)
С++ - аналог Делфи (в плане, можно писать проги с формой и кнопками)
Так ли это?
нет, не так. на си можно писать приложения в оконным интерфейсом и на с++ консольные. начинать лучше имхо с C++, т.к. потом сложно перключиться с процедруного и модульного порграммирования на объектно ориентированное. если нет планов использовать ооп - хватит и си.

Ra$cal
13.09.2009, 17:41
[R]eD
http://msdn.microsoft.com/en-us/library/ms646260%28VS.85,loband%29.aspx
http://msdn.microsoft.com/en-us/library/ms646304%28VS.85%29.aspx

Gin
13.09.2009, 18:34
Каким образом можно распарсить урл на сервер и хост
http://somesite.com/somedirectory/
нужно чтоб было somesite.com
somedirectory/
Может есть стандартные функции вроде explode в php.
Заранее спасибо за то что помогатете

BrainDeaD
13.09.2009, 19:00
strtok (string, delimiter) не подходит?

ps: include string.h

_nic
14.09.2009, 13:36
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = TRUE;
HANDLE Wpip,Rpip;
SetLastError(0);
bool ppp=CreatePipe(&Rpip,&Wpip,&sa,0);
if(ppp==0){MessageBox(0,AnsiString(GetLastError()) .c_str(),"!!!!",MB_OK);}

Ф-ция обламывается :( Получаю код ошибки 1305 - "ERROR_UNKNOWN_REVISION" Никогда с таким несталкивался.Кто то знает че это за фигня?

slesh
14.09.2009, 17:06
ты полностью не инициализировал структуру sa.
вернее не очистил её содержимое и по этому она может быть забита всякой херью.
Так что или memset юзай или
SECURITY_ATTRIBUTES sa = {0};

p.s. это не важно, но всё равно обрати внимание
что ppp должна быть типа int а не bool

crawen_s
14.09.2009, 23:43
привет) Какой компилятор(среду разработки) можно использовать для компиляции С программ???

Hiro Protagonist
15.09.2009, 00:11
Можно :
- visual studio c++
- gcc / MinGW
- lcc
- Intel C++ compiler
- TCC
- Watcom C++
- итд

Но нужно ли?

А вообще посмотри соседнюю тему )

intNet
17.09.2009, 21:41
С delphi перехожу на си, и ксвоему огорччению не нашёл там привычных и удобных функций copy, delete, etc.
strstr(), strpos() и т.п. пока не приспособился к ним, по этому помогите, как например разделить список login;pass(т.е. занести в одну переменную login, в другую - pass) ?

Hiro Protagonist
17.09.2009, 21:56
strtok() - http://msdn.microsoft.com/ru-ru/library/2c8d19sb.aspx

А вообще про CRT (RTL) слабо почитать? В том же K&R в приложении стандартная библиотека описывается.

rudvil
18.09.2009, 01:54
Пишу на Visual С++ 2008
Конвертирую постфикс выражение в дерево.


tree.cppstruct Tree {
tree_type treetype;
int treesize;
char* value;
Tree* tree;
Tree () {
this->treesize = 0;
this->value = 0;
this->tree = 0;
}
};

void ParseAssigment (Tree& tree) {
std::queue<Token> Postfix; // В нем хранится постфикс выражение например [1][2][3] [+]
std::stack<Tree> postfixTree;
while (!Postfix.empty()) {
if (Postfix.front().tokentype == token_type_numeric) {
Tree* nodeTree = new Tree;
nodeTree->treetype = tree_type_num_value;
nodeTree->value = Postfix.front().value;
Tree* childTree = new Tree[2];
nodeTree->tree = childTree;
postfixTree.push(*nodeTree);
}
else if (isOperator(Postfix.front().tokentype)){
Tree* nodeTree = new Tree;
nodeTree->treetype = tree_type_operator;
nodeTree->value = strOperator(Postfix.front().tokentype);
nodeTree->treesize = 2;
Tree* childTree = new Tree[2];
nodeTree->tree = childTree;
nodeTree->tree[1] = postfixTree.top();
postfixTree.pop();
nodeTree->tree[0] = postfixTree.top();
postfixTree.pop();
postfixTree.push(*nodeTree);
}
Postfix.pop();
}
tree.treetype = tree_type_postfixexpr;
tree.tree = &postfixTree.top();
postfixTree.pop();
std::cout << "[" << tree.tree->tree[1].value << "]\n"; // Тут все значения корректны... т.е. показывает * как и должно быть, с остальными тоже все ок
}


main.cpp#include "tree.cpp"

int main () {
Tree* tree = new Tree;
ParseAssigment(*tree);
std::cout << "outside func[tree->tree->treetype][" << tree->tree->tree[1].value << "]\n"; // вот тут пишет "Unhandled exception. Access violation..."
return 0;
}
Сразу после конвертации проверяю дерево ещё внутри функции - все значения совпадают т.е. все ок.

Но после того как я возвращаю готовое дерево из функции и пытаюсь вывести содержимое мне пишет "Unhandled exception. Access violation...".
То что отмечено желтым кудато пропадает... std::cout << "[" << tree->tree->tree[1].value << "]\n";

Насколько я понимаю тутParseAssigment(*tree); происходит утечка(или потеря данных)...
Вопрос, как решить эту проблему, или если я где-то допускаю ошибку - поправьте плз)

Заранее огромное спасибо =]

Ra$cal
18.09.2009, 02:23
std::stack<Tree> postfixTree;
tree.tree = &postfixTree.top();

ты возвращаешь указатель на локальный объект, который умирает при выходе из функции. вопрос - зачем все делать на указателях? это ж гемор. сделай на нормальных членах данных, сделай копирование и не морочь себе голову временем жизни объектов. или юзай умные указатели.

rudvil
18.09.2009, 02:39
std::stack<Tree> postfixTree;
tree.tree = &postfixTree.top();

ты возвращаешь указатель на локальный объект, который умирает при выходе из функции. вопрос - зачем все делать на указателях? это ж гемор. сделай на нормальных членах данных, сделай копирование и не морочь себе голову временем жизни объектов. или юзай умные указатели.
Можно пример, если не трудно?)
Если речь идет о ретурне в функц. то у меня такая-же ошибка потом выскакивает =/

[R]eD
18.09.2009, 15:02
Дурацкий вопрос...

Как сделать цикл не в плюс а в минус, тоесть не с 1 до 100, а со 100 до 1 например?)))

Visual Basic

Dosia
18.09.2009, 15:10
Dim i As Integer
For i = 100 To 1 Step -1
Print i
Next i

Ra$cal
18.09.2009, 15:55
Можно пример, если не трудно?)
Если речь идет о ретурне в функц. то у меня такая-же ошибка потом выскакивает =/

std::stack<Tree> postfixTree;

Ты объявил стек локально. Значит после выхода из функции будет вызван деструктор, что должно удалить все записи в стеке. Поэтому индексация хоть и будет работать, но вот обращение будет по адресам типа fefefefe и прочими подобными. Ах да. Еще важнее момент, что ты объявил стек std::stack<Tree> а не std::stack<Tree*>. Таким образом элементы так же являются локальными для данной функции объектами.

Починить можно так - в функции перед выходом ты должен сделать не просто

tree.tree = &postfixTree.top();

Ты должен tree.tree = new Tree [postfixTree.size()];
И в цикле скопировать элементы.

А для понимания проблемы сделай контсруктор и деструктор Tree, которые в консоль выводят сообщения и посмотри, что появится в консоли при выходе из функции...

или другой враиант - делаешь типа такого:
struct Tree {
tree_type treetype;
int treesize;
char* value;
std::stack<Tree*> tree;
Tree () {
this->treesize = 0;
this->value = 0;
this->tree = 0;
}
};

rudvil
18.09.2009, 16:15
Ааа понял, спасибо)))
Теперь все понятно, вотк ак я решил эту проблему Tree* tmp = new Tree;
*tmp = postfixTree.top();
tree.tree = tmp;

А насчетstd::stack<Tree*> tree;спасибо, но это мне не нужно)
У меня в postfixTree стеке в конце функции(после всех операций) остается всего 1 елемент... так что мне нужно просто вытащить и присвоить этот елемент к другому tree.

-m0rgan-
20.09.2009, 19:37
re2all

Нужен класс для отправки сообщений на email и icq.

Пример:

...
char buff[SIZE];
...
Содержимое буффера необходимо отправить на мыло или асю.

Подскажите плз класс для этой цели.
Зарание благодарен!

herfleisch
20.09.2009, 20:16
re2all

Нужен класс для отправки сообщений на email и icq.

Пример:

...
char buff[SIZE];
...
Содержимое буффера необходимо отправить на мыло или асю.

Подскажите плз класс для этой цели.
Зарание благодарен!

MSDN: http://msdn.microsoft.com/ru-ru/library/system.net.mail.smtpclient.aspx

.Net Framework 3.5
Пространство имён System.Net.Mail
Класс SmtpClient


----------------------------

Если тебе нужен метод, чтобы тупо строку отправлять, то не знаю чем помочь. Ведь в реальных условиях нужно заполнять такие поля, как адрес получателя, тему письма, адрес отправителя и т.д.

rudvil
21.09.2009, 16:34
Есть "tokenizer.h" и "tokenizer.cpp", хочу некоторые функции объявить как "inline"...
Проблема в том что если прописать "inline" в "*.cpp" компилятор пишетerror LNK2019: unresolved external symbol "void __cdecl TokenAdd(enum token_type,enum value_type,void *,int)" (?TokenAdd@@YAXW4token_type@@W4value_type@@PAXH@Z) referenced in function _main
1>C:\Users\rudvil\Documents\Visual Studio 2008\Projects\resl\Debug\resl.exe : fatal error LNK1120: 1 unresolved externals
если прописать "inline" в "*.h" пишет тоже-самое, пробовал прописать в *.h и в *.cpp всеравно вылетает эта ошибка =/

Прикол ещё в том, что если не вызывать эти заинлайненые функ. в "main.cpp" то все компилится на ура, но это не выход...
Заранее спс, c меня + :)

razb
21.09.2009, 16:48
Нужен класс для отправки сообщений на email и icq.
_http://www.chilkatsoft.com/email-library.asp
_http://www.vmime.org/

mailbrush
21.09.2009, 16:58
char str[256];
SYSTEMTIME systime;
GetLocalTime(&systime);
sprintf(str, "%d", systime.wHour, systime.wMinute, systime.wSecond);
ShowMessage(str); //выводит 16
if(str=="16") //не выводит ничего
ShowMessage("hello");
Почему условие str=="16" не срабатывает?

c++

razb
21.09.2009, 17:06
Есть "tokenizer.h" и "tokenizer.cpp", хочу некоторые функции объявить как "inline"...
Проблема в том что если прописать "inline" в "*.cpp" компилятор пишет
Код в студию ...

Почему условие str=="16" не срабатывает?

c++
Потому что ты сравниваешь адреса, а не содержимое.
Либо _http://www.cplusplus.com/reference/clibrary/cstring/strcmp/ для С-строк
либо юзай std strings

seregkaz
21.09.2009, 19:43
Пожалуйста помогите решить лабу и код выложите тут!

http://letitbit.net/download/3251.39b07d0873b74fa9da9888096/lab3.doc.html

Если можно объясните в комментариях что к чему!
Жду... Очень срочно :(

seregkaz
21.09.2009, 23:14
Пожалуйста помогите решить лабу и код выложите тут!

http://letitbit.net/download/3251.39b07d0873b74fa9da9888096/lab3.doc.html

Если можно объясните в комментариях что к чему!
Жду... Очень срочно :(
я не вижу ответа, что тут некто не знает с++ ? не верю

rudvil
22.09.2009, 02:25
Код в студию ...
Смог сам разобраться, оказывается если вызывать заинлайненую функц. из другово файла(не из того где прописан inline) то будет эта ошибка выскакивать...
Решение - создать так сказать связную функцию)))

Chrek625
22.09.2009, 14:10
Доброго времени суток...
Подкиньте пожалуйста статей пл структурам в языке СИ...
Искал н могу ничего конкретного найти к сожалению сам.

herfleisch
22.09.2009, 14:17
http://phys.protres.ru/~mlobanov/c_lin/5.htm

http://www.mir-koda.ru/full_leson_cpp.php?id=20

Bitte )))

n4e/\@
22.09.2009, 21:31
Решаю задачу коммивояжера методом ветвей и границ. Нашел программу на паскале, переписал на си, вроде все правильно, но вываливает сегфолт на 146 строчки http://paste.org.ru/?asvtl7
Входной файл такой:
4
0 6 1 5
6 0 3 1
1 3 0 2
5 1 2 0

ICQ Hool
23.09.2009, 07:47
POSITION pos = m_ctlList.GetFirstSelectedItemPosition();
if (pos == NULL)
m_ctlList.AddItem( _T("nItem"),_T("no item selected"));
else
{
while (pos)
{
int i=0;
//nItem=0;
nItem[i] = m_ctlList.GetNextSelectedItem(pos);
test.Format("%d",nItem[i]);
m_ctlList.AddItem( _T("nItem"),_T(test));



while(!eof(fh))
{
_read(fh,&mstruct,sizeof mstruct);

if(nItem[i]==2)
{
out<<ms.k<<'\n';
}
if(nItem[i]==3)
{
out1<<ms.m<<'\n';
}
}
i++;
}}



при выделении 2-го и 3-го элемента записывает только второй

если выделить нулевой или первый элемент и второй то не запишет ничего => почему-то запоминается номер только первого выделенного элемента а вторых какбы нет...
что я делаю нетак

seregkaz
23.09.2009, 12:44
Пожалуйста помогите решить лабу и код выложите тут!

http://letitbit.net/download/3251.39b07d0873b74fa9da9888096/lab3.doc.html

Если можно объясните в комментариях что к чему!
Жду... Очень срочно :(
я не вижу ответа, что тут некто не знает с++ ? не верю

Kaimi
23.09.2009, 13:00
я не вижу ответа, что тут некто не знает с++ ? не верю

Ещё 10 раз напиши это и получишь неожиданный приз...

herfleisch
24.09.2009, 13:37
Как выглядит программа на С++ которая выключает или перезагружает компьютер ?

Программа выглядит примерно так:



#include <brain.h>
#include <iostream>

using namespace std;

int main(void)
{
Открыть_MSDN();
int Result = Найти_соответствующую_функ цию(POWER_OFF);
if (!Result)
cout << "Учись пользоваться MSDN" << endl;
else
{
Вставить_в_нужный_кусок_код а($Result);
}
return 0;
}

Kaimi
24.09.2009, 13:48
Как выглядит программа на С++ которая выключает или перезагружает компьютер ?

Видимо так

int main()
{
system("shutdown -r");
return 0;
}

Glazz
24.09.2009, 14:36
Kaimi благодарю работает
-----------------------------------
system("shutdown -r"); -перезагружает компьютер через минуту
system("shutdown"); - сразу после запуска
(Vista)
------------------------------------
А где можно узнать полный список возможностей функции system(" "); , а то я только знаю system("pause") ?
system() обращается к cmd, значит, там все команды cmd

n4e/\@
24.09.2009, 16:41
system() обращается к cmd, значит, там все команды cmd
----------------------------------------------------------------------------

В help-i нет всех команд, например shutdown я там не нашел
Не нашел, потому что shutdown это отдельная программа вызываемая из консоли, а не встроенная команда в CMD

click
24.09.2009, 17:59
Mitnick17,
в cmd набрать help
еще
%windir%/help/ntcmds.chm

\\ChaOs//
24.09.2009, 18:05
Как в Qt4 работать виджеты на форме, в потоке?
Пробовал так:

Имеется поток:
class Func : public QThread, public Ui::QTsquareClass
{
public:
void run()
{
QString str;
str=aA->text(); //вылетает здесь, обращается к не инициализированному элементу
}
};

связывю кнопку и поток:
QTsquare::QTsquare(QWidget *parent, Qt::WFlags flags)
: QDialog(parent, flags)
{
ui.setupUi(this);
Func *thr=new Func;

QObject::connect(ui.button,SIGNAL(clicked()),thr,
SLOT(start()));

}

Выше приведенные действия ни к чему не приводят, прога вылетает.
Не могу придумать как передать указатель на созданную форму в поток.


UPD:

Разобрался вопрос снимается.

click
24.09.2009, 18:10
Mitnick17, а тебе, что нужно? "не встроенные программы", это программы, находящиеся в директориях которые прописаны в path(набрать в path в cmd).
>>%windir%/help/ntcmds.chm нужно в cmd набрать?
провести столь безабидный эксперемент быстрее, чем написать сообщение на форум, ответ - да.
а вообще, зря ты тут спросил, оффтопик какбе. тему бы создал новую лучше... хотя поздно уже :)

horlyk
24.09.2009, 20:40
Вот столкнулся с такой проблемкой:
Мне нужно вычитать область памяти, адрес которой известен(hex). Сразу в голове построился процесс написания программы и что буду использовать. Сразу решил использовать указатели. Но вот проблема - при вводе в консоль адреса ячейки, которым нужно инициализировать указатель, чет не то происходит - адрес присваивается, но значение не вычитывается(то есть не правильное ).

1. В какой тип переменной можно записать hex, а потом его использовать для инициализации указателя?(с интом чаром чет не вышло)
2. Мне нужно вычитать к примеру 50 адресов, идущих после известного. Инкримент указателя для этого подойдет?

Смотрю, чет никто не отвечает. Вот к приведу пример как я делал:

void main()
{
int a = 19;
cout << "a = " << a << "\n&a = " << &a << endl;
}

это код в одной проге. Я ее запускаю и вижу адрес переменной а в памяти.

Далее я запускаю другую прогу, с кодом
void main()
{
int *a = (int*)0x0012FF60; //адрес переменной из 1-й проги
cout << "a = " << a << "\n*a = " << *a << endl;
}

Видно что адрес в указателе сменился, а вот доступиться к значению не могу по нормальному(((

А вообще нужно чтоб адрес был введен пользователем к примеру так:

char addr[10];
cin >> addr; // сюда вводится адрес из первой проги

char *mem = (char*) addr;

Подскажите плз, а то моск уже кипит от количеста перепробованных вариантов(((

Hiro Protagonist
25.09.2009, 00:02
2horlyk

1. память я надеюсь своего процесса? Если нет то читать из чужого ReadProcessMemory MSDN (http://msdn.microsoft.com/en-us/library/ms680553(VS.85).aspx)

Если из своего, то просто по указателю. Чтото типа этого.

int foo;
int bar;

foo = 0xXXXXXXXX;
bar = *((int *)foo);

для foo можно использовать любой тип, главное чтобы он был 4-x байтным.
Если в следующий раз будет что-то не получатся - покажи код!

2. Да, но следи, чтобы указатель не вылетал за пределы выделенной памяти, а то схватишь access violation.

horlyk
25.09.2009, 00:14
2horlyk
1. память я надеюсь своего процесса? Если нет то читать из чужого ReadProcessMemory MSDN (http://msdn.microsoft.com/en-us/library/ms680553(VS.85).aspx)


Да, именно в другом процессе. Так то оно выходит. Можно плз пример использования той ф-и, что ты мне дал в ссылке, а то я чет там ниче не понял.

Hiro Protagonist
25.09.2009, 00:26
2horlyk

Небольшой ликбез. В винде каждый процесс имеет свое изолированное адресное пространство, напрямую недоступное из другого процесса. Чтобы прочитать из другого процесса необходимо получить описатель объекта ядра типа процесс, связанного с другим процессом. Для этого нужно воспользоваться функцией OpenProcess (если конечно мы сами его не создавали, тк CreateProcess в структуре PROCESS_INFORMATION вернет описатели созданного процесса и его первичного потока).

HANDLE hProc;
hProc = OpenProcess(PROCESS_VM_READ, NULL, PID);
где PID - идентификатор процесса. Обрати внимание что перед этим необходимо установить привелегию seDebugPrivilege иначе читать нельзя будет, об этом читай здесь (http://www.rsdn.ru/article/baseserv/privileges.xml).

далее используешь этот описатель в ReadProcessMemory:

ReadProcessMemory(hProc, lpBaseAddress, ...);

где lpBaseAddress - указатель на данные в удаленном потоке (тот самый foo в примере выше). Остальные параметры должны быть понятны.

horlyk
25.09.2009, 00:33
Hiro Protagonist, спасибо, буду пробовать.

Gin
25.09.2009, 10:11
Столкнулся с проблемой.
Нужно прочитать из файла массив целочисленных переменных, как это можно реализовать.
файл вида
12 54 65 43 23
23 54 32 65 63
и т.д.
числа разделенны пробелом.
Спасибо.

Gray_Wolf
25.09.2009, 10:17
Столкнулся с проблемой.
Нужно прочитать из файла массив целочисленных переменных, как это можно реализовать.
файл вида
12 54 65 43 23
23 54 32 65 63
и т.д.
числа разделенны пробелом.
Спасибо.
Здесь нужно уточнить, что в итоге должно получиться:
одномерный массив со всеми числами, или двумерный...

Smapt
25.09.2009, 10:28
Как проверять валидность хттп и сокс прокси?

slesh
25.09.2009, 10:33
в зависимости от ситуации и способа использования. Очень удобное делать так:
сначала пингуеш его - чтобы отсеять те которые в офлайне компы.
А потом короткий тестовый запрос на крутой ресурс. хотябы на главную страницу гугля. ну или на свой гейт который даст ответ. И тогда ты можеш смотреть как именно пашет прокси. Но чаще всего хватает уже пинга

Gin
25.09.2009, 10:39
2Gray_Wolf
двухмерный в в первом элементе номер строки во втором массив значений.

Gray_Wolf
25.09.2009, 10:50
2Gray_Wolf
двухмерный в в первом элементе номер строки во втором массив значений.
Вот функция которая разбивает строку
http://www.cplusplus.com/reference/clibrary/cstring/strtok/
а всё остальное стандартно...

~NeiTRoN~
25.09.2009, 16:41
Народ помогите плиз.
Есть игруха(MFC). Там ве картинки bmp. Инициализированны:

HBITMAP hBitmap;
hDC=GetDC(hWnd);
hvozdDC=CreateCompatibleDC(hDC);
hBitmap=LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_v ozd));
SelectObject(hvozdDC,hBitmap);
DeleteObject(hBitmap);

Потом поле строится
BitBlt(hDC,x*weight,y*height,weight,height,hkirpDC ,0,0,SRCCOPY);
Как сделать чобы можно было использовать не только bmp, а png или jpg?

Ra$cal
25.09.2009, 17:14
подключай GDI+, там есть открытие всех основных типов файлов.

Kreoda
25.09.2009, 18:59
#include <stdio.h>

int main() {

printf("Hello!");
void getch();

}



Почему экран пропадает ? Должен ждать ввода же...

slesh
25.09.2009, 19:06
1) убери void
2) добавь хидер
#include <conio.h>

Kreoda
25.09.2009, 19:16
Спасибо,а почему void убрать нужно?

Fata1ex
25.09.2009, 19:19
Ты же вызываешь printf() без типа :) Зачем же тип при getch() ? Тип нужно указывать при определении функции, при ее вызове - нет. + Советую добавить в main "return 0;" или изменить int main() на void main().

slesh
25.09.2009, 19:20
а потому что небыло conio и следовательно getch былбы неизвестнйо функций.
А тут ты её описал как переменную типа void

Kreoda
25.09.2009, 19:33
Когда я хочу объявить void main(),то у меня ошибка вылетает - `main' must return `int'
Вот я и пишу int main()...в итоге все функции надо чтоли объявлять как интовые...бред какой-то.

click
25.09.2009, 19:37
main должен возварщать код возврата, целое, поэтому и int.
не забываем return 0; и откопай книгу, там все напсисано, любую.
И еще не надо путать вызов ф -ции с объявленияем

Kreoda
25.09.2009, 19:39
Я и не путаю - это ошибка компиля.Различие я знаю)

click
25.09.2009, 19:42
Kreoda, где это ты заметил ошибку компилятора? int main() так и должно быть.. или я что-то пропустил?

slesh
25.09.2009, 19:48
вообще всё зависит от версии компилятора и вообще всякой левой хрени.
Вот в MS VC++ 6.0 можно было описывать
int main(int argc, char* argv[])
а можно было писать и void main()
в всё зависит от функции InitCrt итд итп

Hiro Protagonist
25.09.2009, 20:10
гм, кабэ в последней студии все нормально и это отвечает стандарту. Kreoda чтото ты темнишь =\ код и версию студии сюда кидай.

Gin
25.09.2009, 21:38
Помогите написать функцию чтения из файла чисел типа double и поместить их в переменные.
Ниже привожу код, при компиляции выдает херню какую - то прочитанные числа не совпадают с
тем что написанно в оригинале.

текстовый файл вида

10.2 12.5 17.6 15.2
14.3 52.1 10.7 11.7
и т.д.

тип переменной elem


#define razmer 4

struct points
{
double aPoints[razmer];
};



Эта функция читает файл построчно, переменная kolvo следит за тем чтобы строк не было больше

чем массив.


int cCluster::load_file(char* name){
cout<<"Test function \n";
char line[100],*stroka;
FILE *fp;
fp=fopen(name,"r");
int i=0;

while(!feof(fp)){
if(i>kolvo)
break;
stroka=fgets(line,100,fp);
printf("Here is read %d line \n here znacheniy \n %s",i,stroka);
elem[i]=str2points(stroka);
i++;
}
fclose(fp);
return 0;
}




Функция str2points(char* line) разбивает строку на числа с помощью ф-ции strtok получает

числа и приводит их к типу double.


points cCluster::str2points(char* line){
char *str;
int i=0;
points temp;
str=strtok(line," ");
printf("here is strtok %s\n",str);
while(str!=NULL){
if(i>razmer)
break;

temp.aPoints[i]=(double)*str;
str=strtok(NULL," ");
printf("here is strtok %s\n",str);
printf("here is point %d\n",temp.aPoints[i]);
}

return temp;
}

Ra$cal
25.09.2009, 21:54
а структуру то зачем заводишь? можно просто массив переменных объявить, а то бред получается - излишнее усложнение. или планируется делать класс и добавлять методы?

Gin
25.09.2009, 21:55
2Ra$cal
Да я написал класс, просто весь выкладывать смысла нет, а вот в этом моменте у меня проблемы.

Ra$cal
25.09.2009, 22:00
temp.aPoints[i]=(double)*str; - негодится
_gcvt() используй

Gin
25.09.2009, 22:07
temp.aPoints[i]=(double)*str; - негодится
_gcvt() используй

Так мне же наоброт нужно из строки в double, gcvt() делает обратный преобразования из double в строку.

Если я не туда посмотрел, то дай ссылочку на ресурс где ф-ция разобранна.

Ra$cal
25.09.2009, 22:14
подскажу хитрый финт, как пользоваться документацией. вбиваешь "gcvt msdn" в гугле. открываешь страницу. смотришь вниз. видишь

See Also
Reference
Data Conversion
Floating-Point Support
atof, _atof_l, _wtof, _wtof_l
_ecvt
_fcvt

методом напряжения извилин понимаешь что нижние функции похожи на эту, но есть atof/wtof что говорит об ascii/wide, т.е. о строках, и f - float. итого получается что мы нашли нужную функцию просто проанализировав док известной нам функции. собсно это и есть основной способ добычи информации.

Gin
25.09.2009, 22:34
2Ra$cal
Мог бы просто посоветовать ссылку msdn (буду теперь впервую очередь там смотреть) а не указывать ф-цию которая подходит для других случаев и намекать на то что я лентяй.

В итоге код всеравно не работает, теперь показывает что все 0 помимо ф-ции atof пробовал strtod.

Ra$cal
25.09.2009, 22:38
да я не наводил на лень. просто спешу и не вникал в вопрос. поэтому и дал описание не той функции. ну и раз уж так получилось решил рассказать как пользоваться доками =)

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

Gin
25.09.2009, 22:47
2Ra$cal
Пробелов лишних вроде нет( только те что разделяют числа, единственное что может strtok нет работать я вот эту строчку совсем не понимаю str=strtok(NULL," ");) С разделителями поэксперементировал тот же хрен только в левой руке. Вообщем тривиальная задча а сижу над ней часа 4 точно.

Ra$cal
25.09.2009, 23:09
дык ты в отладчике посомтри, что передаешь функции atof, и вставь сюда.

-m0rgan-
25.09.2009, 23:20
Добрый день!
Пишу "Регулярку"..
код:

#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char buffer;
char * a;
char * b;
char text[] = "<a>ssssssssssssssss</a>";
a=strstr(text,"<a>");
if(a)
{
b=strstr(text,"</a>");
if(b)
{
strncpy(buffer,a,b-a);
}
}
cout<<buffer;
system("pause");
}


В итоге получаю:
<a>sssssssssssssss[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[...[ДОФИГА НЕПОНЯТНЫХ СИМВОЛОВ]

Как исправить?

Gin
25.09.2009, 23:25
Как говриться дурная голова рукам покоя не дает. Вся проблема была в том что выводя
это функцией
printf("here is point %d\n",temp.aPoints[i]);
Я выводил целое число вместо типа добле и получал херню полную, а так код работает.

Спасиб Ra$cal что возился со мной,мог бы поставил 10 '+.'

ЗЫ
Ну а что поделать опыт он вот так и появляется.

slesh
25.09.2009, 23:45
2 -m0rgan-
ты копируеш строку но забываеш про символ конца строки. можно сделать так:

len = b-a;
strncpy(buffer,a, len);
buffer[len] = 0;

-m0rgan-
25.09.2009, 23:58
slesh, спс иероглифов теперь нету, но есть "<a>":
<a>sssssssssssssss

-m0rgan-
26.09.2009, 12:26
Акиуально

fker
26.09.2009, 12:35
можно вот так

char *a="<a>asdasfasfas";
printf("%s\n",a);
a+=3;
printf("%s\n",a);

Ra$cal
26.09.2009, 15:01
правильнее все таки так:
a += strlen("<a>");
чтоб без магических циферок.

Kreoda
26.09.2009, 18:21
#include <stdio.h>
#include <conio.h>


int main() {
char *a = "shit";
int sam = strlen("a");
printf(sam);

}



А у меня не пашет:(

ЗЫ: поячти ни одну функцию норм не могу юзнуть ептю...даже abs()

Kreoda
26.09.2009, 18:43
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream>


int main() {

char *f = "C:\boot.ini";
char *str;
FILE *sex;
sex = fopen(f,"r");
str = fgets(str,1024,sex);
printf(str);
getch();

}



Выдаёт ошибку - An unhandled win32 exception in Безымянный3.exe [700]. Just-in-Time debugging this exception failed with the following error: No installed debugger has Just-In-Time debugging enabled.In Visual Studio,Just-In-Time debugging can be enabled from Tools/Options/Debugging/Just-In-Time.

При чем тут дебаггер епт...

razb
26.09.2009, 18:51
Книжку почитай, хотя бы первые 100 стр.

mailbrush
26.09.2009, 20:53
Как создать в приложении две группы RadioButton? Т.е. мне надо, например, чтобы пользователь выбирал
Пол:


*Не определился

Тип прокси:
*Socks4
*Socks5
*HTTP
Когда я тупо кидаю их на форму - юзер выбирает один из шести...

Kreoda
26.09.2009, 20:56
Следующий пример:

int main() {

FILE *f;
char *megafile = "sn.txt";
char *megastring = "Sjmmer was great!\n";

f = fopen(megafile,"w");

for (int i = 0; i < 32768; i++) {

fputs(megastring,f);

}

fclose;

}

Терь нужно тоже самое,но только динамически(с созданием строк к примеру файлов с N {1-1000} формата .txt к примеру).

Также вопрос:

1) Почему у меня не работает cout ? ((


ЗЫ: Тем,кто не хочет или не может помочь,лучше не отвечать вообще здесь.Что непонятно,я спрашиваю.Для этого и существует форум.

Ra$cal
26.09.2009, 21:06
Как создать в приложении две группы RadioButton? Т.е. мне надо, например, чтобы пользователь выбирал
Пол:


*Не определился

Тип прокси:
*Socks4
*Socks5
*HTTP
Когда я тупо кидаю их на форму - юзер выбирает один из шести...
лепи их в Group Box. 1 бокс для пола второй для типа прокси.

herfleisch
26.09.2009, 23:08
Не понял ничего по поводу "динамически"...


1) Почему у меня не работает cout ? ((


cout Скорее всего, если у тебя среда разработки Visual Studio, тебе нужно под подключением заголовочных файлов написать строку:
using namespace std;

horlyk
27.09.2009, 13:29
#include <stdio.h>
#include <conio.h>


int main() {
char *a = "shit";
int sam = strlen("a");
printf(sam);

}



А у меня не пашет:(

ЗЫ: поячти ни одну функцию норм не могу юзнуть ептю...даже abs()


Ну ты хоть сам понимаешь что ты тут делаешь?
Ты указателю выделил память или ты в нирвану пишешь слово? Далее, ты в переменную sam записываешь длину строки в кавычках, а я так понял что нужно размер переменной вывести. А про printf я вообще молчу.

Вот рабочий вариант:
int main() {
char a[] = "shit";
int sam = strlen(a);
printf("%d",sam);
}

Читай литературу!!!!!!

Hiro Protagonist
27.09.2009, 14:32
2horlyk

return 0; забыл )))

horlyk
27.09.2009, 14:40
2horlyk
return 0; забыл )))

:rolleyes: у него походу левый компил какой-то, который это нормально похавывает)а вообще да, эт нуно)

_nic
27.09.2009, 20:39
Можно как то в структуре обьявить поле ссылку на адрес памяти?

herfleisch
27.09.2009, 21:04
Можно как то в структуре обьявить поле ссылку на адрес памяти?


struct Structure {
void * Memory;
};


Так?

_nic
27.09.2009, 23:49
struct Structure {
void * Memory;
};


Так?
так у меня почему то не работает =/ Вообщем я хотел передавать в поток указатель на блок памяти выделенной в основном ,и копировать в ту память.

St0nX
28.09.2009, 16:22
так у меня почему то не работает =/ Вообщем я хотел передавать в поток указатель на блок памяти выделенной в основном ,и копировать в ту память.

Так получится только если указатель объявили глобально. Иначе к нему не будет доступа их другого потока.

вот полезность http://wasm.ru/article.php?article=1021004

Ra$cal
28.09.2009, 17:21
Так получится только если указатель объявили глобально. Иначе к нему не будет доступа их другого потока
не надо путать потоки и процессы. потоку очень даже легко передать указатель на память, куда он должен записать данные.

_nic
http://forum.antichat.ru/showpost.php?p=1549637&postcount=24

Smapt
29.09.2009, 07:37
Как в vc или buildere получить страничку по HTTPS?

fker
29.09.2009, 07:43
http://rudeserver.com/ssl/openssltutorial.html

gLuk!
01.10.2009, 21:38
какой функцией определить путь до каталога винды?

Kaimi
01.10.2009, 22:13
GetWindowsDirectory

t04
03.10.2009, 13:50
как в dev-cpp уменьшить размер компилируемого файла?
при подключении модуля <iostream> размер файла растет до 280 кб, против 7-8 билдеровских. может надо какую нить опцию у компилятора включить/выключить?

gLuk!
03.10.2009, 21:27
возможно ли с win api отследить подключение флэшки? либо перебирать циклом. если можно через винапи функцию в студию)

Ra$cal
03.10.2009, 21:33
http://msdn.microsoft.com/en-us/library/aa363480%28VS.85%29.aspx

SeNaP
04.10.2009, 20:24
Подкиньте пожалуйсто исходник вируса, любого, который сам распростроняется, чисто для изучения

ZirroCool
04.10.2009, 20:32
Подкиньте пожалуйсто исходник вируса, любого, который сам распростроняется, чисто для изучения
Посмотри это
http://www.kiber-zona.org/index.php?showtopic=2917
и это
http://www.kiber-zona.org/index.php?showtopic=3744
правда на делфи но я там все хорошо прокоментировал так что траблов в переводе возникнуть не должно!

SeNaP
04.10.2009, 21:01
Посмотри это
http://www.kiber-zona.org/index.php?showtopic=2917
и это
http://www.kiber-zona.org/index.php?showtopic=3744
правда на делфи но я там все хорошо прокоментировал так что траблов в переводе возникнуть не должно!
Вот если бы на C++ было бы вообще отлично :)

-m0rgan-
04.10.2009, 21:38
re2all!
Подскажите, почкму не работает:
#undef UNICODE
#include <windows.h>

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
char a[25] = "test";
MessageBox(NULL, LPCSTR(a) ,L"WinAPI App", 0); //сообщение
return 0;
}

Зарание благодарен!

-m0rgan-
04.10.2009, 22:56
UP

Irdis
04.10.2009, 23:01
а так ;)
#undef UNICODE
#include <windows.h>

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
char a[25] = "test";
MessageBox(NULL, LPCSTR(a) ,LPCSTR("WinAPI App"), 0); //сообщение
return 0;
}

NorB
04.10.2009, 23:10
подскажите какой функцией прочитать строку в переменную LPCSTR сразу?или как проще ето сделать.

-m0rgan-
04.10.2009, 23:27
а так ;)
#undef UNICODE
#include <windows.h>

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
char a[25] = "test";
MessageBox(NULL, LPCSTR(a) ,LPCSTR("WinAPI App"), 0); //сообщение
return 0;
}


Логично, спс!

SwitcH
04.10.2009, 23:39
подскажите пожалуйсто, как на С++ реализовать циклический сдвиг влево/вправо на m бит байта (unsigned char b)

ZirroCool
04.10.2009, 23:44
SwitcH, тебя на гугле забанили?
http://www.insidepro.com/kk/195r.shtml

desTiny
04.10.2009, 23:52
unsigned char a = 0x12;
_asm{
mov al, a
rol/ror al, 10
mov a, al
}

Ra$cal
04.10.2009, 23:55
DWORD rol32(DWORD x, UINT n){
return( ((x) << (n)) | ((x) >> (32-(n))) );
};

DWORD ror32(DWORD x, UINT n){
return( ((x) >> (n)) | ((x) << (32-(n))) );
};

BYTE rol8(BYTE x, UINT n){
return( ((x) << (n)) | ((x) >> (8-(n))) );
};
BYTE ror8(BYTE x,UINT n){
return( ((x) >> (n)) | ((x) << (8-(n))) );
};
Юзать асм вставки в с++ надо в очень крайних случаях, которые я еще не встречал =)

desTiny
05.10.2009, 00:12
ну тогда уж
#define ror8(x, n) ( ((x) >> (n)) | ((x) << (8-(n))) )

или функции
_rotl, _rotl16, _rotl64, _rotl8 и _rotr аналогичные

SwitcH
05.10.2009, 00:18
а можно без использования каких либо вставок ассемблера, например так
void main()
{
int b=9, m=1;
while (b!=0)
{

b= b>>m;
cout << b <<endl;

getch();

}

}

Ra$cal
05.10.2009, 00:38
SwitcH
это не циклический сдвиг.

desTiny
угу, но я не люблю дефайны. я сделал себе хидер с классом со статик методами, реализованными прямо в хидере, и скинул в папку своих классов, прописанную в настройках студию. В итоге делаю #include <bitworks.hpp>
и Bitworks::ror32(...);
Нагляднее и удобнее. И файл в проект добавлять не надо, компилится так, в отличие если делать реализацию в cpp файле.

n4e/\@
05.10.2009, 01:55
Столкнулся тут с проблемой.
Есть массив координат например mas[10][2]. т.е.:
x 200 300 120 ...
y 50 100 300 ...
так вот я беру еще одну координату например 25;25
Надо проверить в радиусе 5-ти клеток есть ли какие либо координаты из массива.
Если рядом есть точка вернуть 0, нету вернуть 1.
Сам составил, но видимо уже не соображаю, у меня то он сверяется только с первой координатой массива, то только с последней.

Irdis
05.10.2009, 02:51
покажи код

n4e/\@
05.10.2009, 11:09
Все сам составил:

for ( int i = 0; i < coordinates[0].size(); i++)
if ( coordinat[0][i] + SizePen > mouse->x() && coordinat[0][i] - SizePen < mouse->x() && coordinat[1][i] + SizePen > mouse->y() && coordinat[1][i] - SizePen < mouse->y() )

SeNaP
05.10.2009, 18:17
Ну может есть у кого исходник виря на C++?
Мне понят алгоритм размножение и т.п. ))))

Irdis
05.10.2009, 18:47
http://www.codeproject.com/info/search.aspx?artkw=rootkit
это про руткиты, по-моему самое важное в вирях...
тоны исходников и описания к ним. (все на инглише)
а размножение ctrl+C ctrl+V

gLuk!
05.10.2009, 20:41
char *RbcMessage[] =
{
"GET http://192.168.1.2/index.php?dfg HTTP/1.1\r\n",
"Connection: Keep-Alive\r\n",
"Accept: */*\r\n",
"Referer: http://www.127.0.0.1.ru\r\n",
"Accept-Language: ru\r\n",
"Accept-Encoding: gzip, deflate\r\n",
"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en)\r\n",
"Host: 192.168.1.2\r\n\r\n\r\n",
NULL
};
int iMsg = 0;
bool boolean;
char buffer[100];
int DataLen;
WSADATA WSAData;
WSAStartup(MAKEWORD(2,2), &WSAData);
SOCKET sock;
sock = socket(AF_INET,SOCK_STREAM,0);
sockaddr_in sendsock;
sendsock.sin_family = AF_INET;
sendsock.sin_port = htons(80);
sendsock.sin_addr.s_addr=inet_addr("http://192.168.1.2/index.php");
connect(sock,(LPSOCKADDR)&sendsock,sizeof(sendsock));
for(iMsg = 0;(RbcMessage[iMsg]); iMsg++)
send(sock, (LPSTR)RbcMessage, strlen(RbcMessage[iMsg]), 0);
closesocket(sock);
собсно тестил на локалхосте. даже логов в апаче о коннекте нету =\.

Kaimi
05.10.2009, 20:48
Может стоит для начала пример из мсдна посмотреть?
http://msdn.microsoft.com/en-us/library/ms740121%28VS.85%29.aspx

intNet
05.10.2009, 22:07
inet_addr("http://192.168.1.2/index.php");
Параметр данной ф-ии может быть только ip адрес.

\r\n\r\n\r\n

Чиатай rfc по протоколу HTTP.

-m0rgan-
05.10.2009, 23:08
Всем привет!
Нужна помощь.
Нужно перевести чимволы в ASCII код и наоборот.

В аски код вроде все ок:
...
char text[] = "test";
int ascii = (int)text;
...

А вот наоборот как - хз..

Если делать так:

...
int ascii = (int)text;
char nazad = (char)ascii;
...

Тогда переводится один байт, то есть а переменную nazad помещается 1 байт.

А с массивом не выходит =\

Выручайте!

Ra$cal
05.10.2009, 23:17
и что там у тебя все ок? ты просто записываешь в переменную ascii адрес строки. Опиши нормально, что ты хочешь получить? int, заполненный кодами символов или что.

ps: размер char сколько в байтах? И как ты ожидаешь туда засунуть больше одного байта?

Irdis
05.10.2009, 23:21
char лучше оставлять char"ом
const int length=10;
char a[length] = "123123";
int b[length];
for (int i=0; i<length;i++) // берём код символа
b[i]=(int)a[i];
for (int i=0; i<length;i++) //наоборот
a[i]=(char)b[i];

char <- 1байт
int <- 4байт
получаем увеличение в 4 раза. Что не есть гуд.

-m0rgan-
05.10.2009, 23:24
> пиши нормально, что ты хочешь получить? int, заполненный кодами символов или что.

Мне необходимо перевести латинские и русские символы в ASCII коды.

>ps: размер char сколько в байтах? И как ты ожидаешь туда засунуть больше одного байта?

Это меня и интересует, каким образом выполнить обратную операцию и поместиьть результат в массив?

Irdis
05.10.2009, 23:24
UP

-m0rgan-
05.10.2009, 23:36
Irdis,выводит 1 символ:

#include <iostream>
using namespace std;
int main()
{
int i = 0;
const int length=10;
char a[length] = "abc";
int b[length];
for (int i=0; i<length;i++) // берём код символа
b[i]=(int)a[i];
cout<<b[i]<<endl;
for (int i=0; i<length;i++) //наоборот
a[i]=(char)b[i];
cout<<a[i]<<endl;
system("pause");
}

Ra$cal
05.10.2009, 23:49
{} после for поставь, cout не входит в цикл пожтому и выводит 1 символ. хочешь вывести строку - cout << b ... cout << a
и зачем тебе массив int. вполне сгодится массив char

-m0rgan-
05.10.2009, 23:54
Irdis,Ra$cal - спс.

А подскажите еще: меня интересует шифровка текста по алгоритму типа:

CHAR --> ((((ASCII)^9)+1)/666)*16

Ну примерно так..на сколько это надежно?

Ra$cal
06.10.2009, 00:04
юзай str->rc4->base64 и не парься. остальной самопал ненадежен по определению.

ZnikiR
06.10.2009, 12:06
привет всем.
вот в универе начали изучать с++ и прошла первая контрольная,а я её конечно завалил.
В общем все мы попали на одном пункте,
1)вычеслите число (ПИ) и вычислите экспоненту.
Думал я думал,так ниче не предумал и решил спросить.
Подскажите.

cupper
06.10.2009, 13:51
народ помогите память чета отшибло, некак немогу вспомнить и найти функцию которая бы возвращала позицию первого/последнего вхождения строки str2 в строку str1, я прям точно помню что это в книжке Страуструпа есть но нету ее под рукой.

razb
06.10.2009, 14:57
http://www.cplusplus.com/reference/clibrary/cstring/strstr/

Irdis
06.10.2009, 15:10
ZnikiR
http://ru.wikipedia.org/wiki/%D0%9F%D0%B8
Бери любой ряд, и с помощью цикла вычисляй пи с любой точностью.
(экспонента точно также)

ZnikiR
06.10.2009, 18:24
http://upload.wikimedia.org/math/1/5/f/15f5460b0d41750d9f3f23f47e0ba5fd.png
вот функция,как её задать в с++???
и как в с++ значение y=e(в степени х)???

Ra$cal
06.10.2009, 18:31
это не функция, а предел. для вычисления проще использовать эту формулу

http://upload.wikimedia.org/math/2/9/1/29136695e59a83c8bdfdb5f0a3b8c85e.png

возведение в степень через функцию pow делается

-m0rgan-
06.10.2009, 19:25
Привет, я к вам со старым вопросом..
Вот что я написал:

#include <iostream>
using namespace std;
int main()
{
int i = 0;
char text[] = "TEXT";

for(int c = 0; i<strlen(text); i++)
{
int ascii = (int)text[i];
cout<<ascii;
}
}
...

А ТАКИМ же макаром произвести обратную операцию не выходит.

Поясню задание:

Необходимо сделать шифратор / дешифратор.

То есть ввыдишь чары они переводятся в аски, вводиши аски - они переводятся в чары.

Зарание спс.

Lee_fx
06.10.2009, 21:20
char TEXT[] = "text";
int ascii = TEXT[0] //ascii = 116
...
cin >> ascii; //вводим 116
TEXT[0] = ascii; //TEXT[0] = 't'

ZnikiR
06.10.2009, 23:14
это не функция, а предел. для вычисления проще использовать эту формулу

http://upload.wikimedia.org/math/2/9/1/29136695e59a83c8bdfdb5f0a3b8c85e.png

возведение в степень через функцию pow делается
а не можешь пример показать???

Ra$cal
06.10.2009, 23:31
double fact(int n){
double result = 1;
while(n > 0){
result *= n--;
}
return result;
}
void main(){
int limit = 1000;
int n = 1;
double e = 0;
while(n < limit){
e += 1 / fact(n++);
}
std::cout << e;
}

как то так. не проверял в студии, а так как сонный аццки баги наверняка есть.

_nic
07.10.2009, 01:49
Как можно ловить комбинации клавишь если окно не в фокусе?Допустим делается SW_HIDE и после нажатия опредленной комбинации SW_SHOW.Как реализовать если в своем окне уже не принимается WM_KEYUP ?

SwitcH
07.10.2009, 01:59
вобщем есть такая проблемка, как забодяжить генерацию случайных чисел для вот этой проги, чтоб можно было задать размер матрицы, и не мучатся с ручным вводом
#include<iostream.h>
#include <conio.h>

void main()

{
int x, y;
int a[5][5]={1,2,1,5,1,1,2,5,3,1,1,2,1,4,1,1,2,1,3,1,1,2,1,3, 1,};

for (int u=0; u<5; u++)
cout <<a[u][0]<<a[u][1]<<a[u][2]<<a[u][3]<<a[u][4]<<endl;


for (int k=0; k<5; k++)
for (int x=0; x<5; x++)
{
if (k%2==1)
a[x][k]=0;

}
cout<< "----------\n";
for ( int p=0; p<5; p++)
cout <<a[p][0]<<a[p][1]<<a[p][2]<<a[p][3]<<a[p][4]<<endl;
cout<<"vvedite element "<<endl;
cout<<"x<5"<<endl;
cin>>x;
cout<<"y<5"<<endl;
cin>>y;
cout<<"a["<<x<<"]["<<y<<"]="<<a[x][y]<<endl;



getch();
}

SwitcH
07.10.2009, 02:28
проверьте, может так:

#include<iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <iomanip.h>
void main()


{

int x, y;
int a[5][5];

for (int q=0; q<5;q++)
for (int w=0; w<5;w++)

a[w][q] = rand()%10;


for (int u=0; u<5; u++)
cout <<setw(6)<<a[u][0]<<setw(6)<<a[u][1]<<setw(6)<<a[u][2]<<setw(6)<<a[u][3]<<setw(6)<<a[u][4]<<endl;




for (int k=0; k<5; k++)
for (int x=0; x<5; x++)
{
if (k%2==1)
a[x][k]=0;

}
cout<< "----------\n";
for ( int p=0; p<5; p++)
cout <<setw(6)<<a[p][0]<<setw(6)<<a[p][1]<<setw(6)<<a[p][2]<<setw(6)<<a[p][3]<<setw(6)<<a[p][4]<<endl;
cout<<"vvedite element "<<endl;
cout<<"x<5"<<endl;
cin>>x;
cout<<"y<5"<<endl;
cin>>y;
cout<<"a["<<x<<"]["<<y<<"]="<<a[x][y]<<endl;



getch();
}
P.S. только не ругайте за кривоватый код!!

Ra$cal
07.10.2009, 03:56
_nic
либо хуки через SetWindowsHookEx либо через хоткеи RegisterHotKey

Chrek625
07.10.2009, 04:26
Доброго времени суток.
Разбираю язык Си. Застрял на работе с файлами подскажите где почитать реально полезный материал о работе с файлами в СИ.

И приведите пожалуйста не большой пример программы для считывания текста из файла и вывода на экран...
Заранее большое спасибо.

slesh
07.10.2009, 10:02
типа так

FILE * f;
char buf[256];

f = fopen("file.txt", "rt");
if (f)
{
while (!feof(f))
{
fgets(buf, 255, f);
printf(buf);
}
fclose(f);
}

cupper
07.10.2009, 11:41
http://www.cplusplus.com/reference/clibrary/cstring/strstr/
да этото я помню, она указательно возвращает, путем нехитрых манипуляция получить номер можно, а чтобы без этих нехитрых манипуляций... я так понял что нету таких

_nic
07.10.2009, 13:18
RegisterHotKey неподходит :( Если в фокусе другое окно сообщение WM_HOTKEY неприходит Неужели нету способов кроме тех которыеиспользуются кейлоггерами?

Ra$cal
07.10.2009, 16:04
почему не приходит. у меня все работало как надо, со скрытым окном. Ты или чтото путаешь или неправильно зарегистрировал хоткей.

_nic
07.10.2009, 16:18
почему не приходит. у меня все работало как надо, со скрытым окном. Ты или чтото путаешь или неправильно зарегистрировал хоткей.
Ну если просто SW_HIDE то приходит,а если взять в фокус другое окной блокнот к примеру.То неприходит.

RegisterHotKey(hWnd,1,MOD_ALT,112);

no_xxx
08.10.2009, 09:26
MVisual C#2008
вношу изменения в программу. а при отладке они не вступают в силу... то есть что бы я не менял в коде, она всегда запускается одинаково.

создаю новое приложение все работает.

в чем может быть проблема??

Hiro Protagonist
08.10.2009, 21:12
rebild делай. Под отладку запускается старый бинарник.

cupper
08.10.2009, 21:37
как реализовать такую штуку:
есть файл, сначало читаем его построчно, считываем первую строку находим в ней нужный параметр, запоминаем его позоцию, находм второй параметр запоминаем позицию.
Теперь нужно из этого же файла считать кусок начиная с первой позиции и заканчиваю второй.

Ra$cal
08.10.2009, 22:53
fseek(...)

CaraL
09.10.2009, 08:17
Приведие простой пример оконного приложения windows на c++

POS_troi
09.10.2009, 08:25
#include <windows.h>
#include <string.h>
#include <iostream>

/*
* This is the window function for the main window. Whenever a message is
* dispatched using DispatchMessage (or sent with SendMessage) this function
* gets called with the contents of the message.
*/
LRESULT CALLBACK
MainWndProc (HWND hwnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
{
/* The window handle for the "Click Me" button. */
static HWND hwndButton = 0;
static int cx, cy;/* Height and width of our button. */

HDC hdc;/* A device context used for drawing */
PAINTSTRUCT ps;/* Also used during window drawing */
RECT rc;/* A rectangle used during drawing */
/*
* Perform processing based on what kind of message we got.
*/
switch (nMsg)
{
case WM_CREATE:
{
/* The window is being created. Create our button
* window now. */
TEXTMETRIC tm;

/* First we use the system fixed font size to choose
* a nice button size. */
hdc = GetDC (hwnd);
SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT));
GetTextMetrics (hdc, &tm);
cx = tm.tmAveCharWidth * 30;
cy = (tm.tmHeight + tm.tmExternalLeading) * 2;
ReleaseDC (hwnd, hdc);

/* Now create the button */
hwndButton = CreateWindow (
"button",/* Builtin button class */
"Click Here",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
0, 0, cx, cy,
hwnd,/* Parent is this window. */
(HMENU) 1,/* Control ID: 1 */
((LPCREATESTRUCT) lParam)->hInstance,
NULL
);

return 0;
break;
}

case WM_DESTROY:
/* The window is being destroyed, close the application
* (the child button gets destroyed automatically). */
PostQuitMessage (0);
return 0;
break;

case WM_PAINT:
/* The window needs to be painted (redrawn). */
hdc = BeginPaint (hwnd, &ps);
GetClientRect (hwnd, &rc);

/* Draw "Hello, World" in the middle of the upper
* half of the window. */
rc.bottom = rc.bottom / 2;
DrawText (hdc, "Hello, World!", -1, &rc,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);

EndPaint (hwnd, &ps);
return 0;
break;

case WM_SIZE:
/* The window size is changing. If the button exists
* then place it in the center of the bottom half of
* the window. */
if (hwndButton &&
(wParam == SIZEFULLSCREEN ||
wParam == SIZENORMAL)
)
{
rc.left = (LOWORD(lParam) - cx) / 2;
rc.top = HIWORD(lParam) * 3 / 4 - cy / 2;
MoveWindow (
hwndButton,
rc.left, rc.top, cx, cy, TRUE);
}
break;

case WM_COMMAND:
/* Check the control ID, notification code and
* control handle to see if this is a button click
* message from our child button. */
if (LOWORD(wParam) == 1 &&
HIWORD(wParam) == BN_CLICKED &&
(HWND) lParam == hwndButton)
{
/* Our button was clicked. Close the window. */
DestroyWindow (hwnd);
}
return 0;
break;
}

/* If we don't handle a message completely we hand it to the system
* provided default window function. */
return DefWindowProc (hwnd, nMsg, wParam, lParam);
}


int STDCALL
WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow)
{
HWND hwndMain;/* Handle for the main window. */
MSG msg;/* A Win32 message structure. */
WNDCLASSEX wndclass;/* A window class structure. */
char*szMainWndClass = "WinTestWin";
/* The name of the main window class */

/*
* First we create a window class for our main window.
*/

/* Initialize the entire structure to zero. */
memset (&wndclass, 0, sizeof(WNDCLASSEX));

/* This class is called WinTestWin */
wndclass.lpszClassName = szMainWndClass;

/* cbSize gives the size of the structure for extensibility. */
wndclass.cbSize = sizeof(WNDCLASSEX);

/* All windows of this class redraw when resized. */
wndclass.style = CS_HREDRAW | CS_VREDRAW;

/* All windows of this class use the MainWndProc window function. */
wndclass.lpfnWndProc = MainWndProc;

/* This class is used with the current program instance. */
wndclass.hInstance = hInst;

/* Use standard application icon and arrow cursor provided by the OS */
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);

/* Color the background white */
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);

/*
* Now register the window class for use.
*/
RegisterClassEx (&wndclass);

/*
* Create our main window using that window class.
*/
hwndMain = CreateWindow (
szMainWndClass,/* Class name */
"Hello",/* Caption */
WS_OVERLAPPEDWINDOW,/* Style */
CW_USEDEFAULT,/* Initial x (use default) */
CW_USEDEFAULT,/* Initial y (use default) */
CW_USEDEFAULT,/* Initial x size (use default) */
CW_USEDEFAULT,/* Initial y size (use default) */
NULL,/* No parent window */
NULL,/* No menu */
hInst,/* This program instance */
NULL/* Creation parameters */
);

/*
* Display the window which we just created (using the nShow
* passed by the OS, which allows for start minimized and that
* sort of thing).
*/
ShowWindow (hwndMain, nShow);
UpdateWindow (hwndMain);

/*
* The main message loop. All messages being sent to the windows
* of the application (or at least the primary thread) are retrieved
* by the GetMessage call, then translated (mainly for keyboard
* messages) and dispatched to the appropriate window procedure.
* This is the simplest kind of message loop. More complex loops
* are required for idle processing or handling modeless dialog
* boxes. When one of the windows calls PostQuitMessage GetMessage
* will return zero and the wParam of the message will be filled
* with the argument to PostQuitMessage. The loop will end and
* the application will close.
*/
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
return msg.wParam;
}





а вообще

http://msdn.microsoft.com/ru-ru/library/bb384843.aspx

cupper
09.10.2009, 10:22
некодь так, это чистый WinAPI, несмотря что я сам обеими руками за него, но это уже пережитки прошлого.

POS_troi
09.10.2009, 11:18
некодь так, это чистый WinAPI, несмотря что я сам обеими руками за него, но это уже пережитки прошлого.

зато как красиво ;)

-m0rgan-
09.10.2009, 16:08
Привет.
Разбирался с апи..написал вот такую фигню:

#include <windows.h>
int main(int argc, char* argv[])
{
char * b = "a";
for(int a = 0; a < 10; b++)
{
MessageBox(NULL,b, "ss", MB_OK);
}
}

Запустил, но бля не могу понять что оно делает о.О
Выводит какие то куски кода о___О

scrat
09.10.2009, 16:25
Привет.
Разбирался с апи..написал вот такую фигню:

#include <windows.h>
int main(int argc, char* argv[])
{
char * b = "a";
for(int a = 0; a < 10; b++)
{
MessageBox(NULL,b, "ss", MB_OK);
}
}

Запустил, но бля не могу понять что оно делает о.О
Выводит какие то куски кода о___О
у тебя бред в цикле написан, b++ - ты, наверное, хотел a++

-m0rgan-
09.10.2009, 16:45
Да я понял что бред, меня интересует, что за куски кода выводятся в мессагебоксе?

POS_troi
09.10.2009, 16:51
А если к тебе начать прибавлять не девушку а ежика? тоже начнешь черти что пороть ;)

rudvil
09.10.2009, 16:54
А чего ты там ждал увидеть?
Длина "b" составляет 2 символа, а ты в бесконечном цикле переходишь на след. символ и выводишь все что за пределами этого чара, т.е. хз что...

-m0rgan-
09.10.2009, 17:35
угу, понял спс.
А можно пример использования ф-и sprintf() ?

Нужно перегнать инт в чар, то есть число в строку.

...
int a = &text;

Переменную а необходимо загнать в буффер (тип чар), чтобы потом вывести в мессагебоксе.
Зарание спс.

razb
09.10.2009, 17:46
http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/

POS_troi
09.10.2009, 17:49
Длина "b" составляет 2 символа, а ты в бесконечном цикле переходишь на след. символ и выводишь все что за пределами этого чара, т.е. хз что....

Buffer Overload =)

-m0rgan-
09.10.2009, 17:54
Это не переполнение буффера!

-m0rgan-
09.10.2009, 18:01
#include <windows.h>
#include <iostream>
#include <stdio.h>
using namespace std;
int main(int argc, char* argv[])
{
char buffer[50];
char * text = "dddddd";
int a;
a = sprintf(buffer,"%d",&text);
MessageBox(NULL,buffer, "ss", MB_OK);
cout<<&text;
}

почему коут и мессагебокс выводят адрес в разных системах счисления?
И как исправить?

rudvil
09.10.2009, 18:10
Нужно перегнать инт в чар, то есть число в строку.
#include <windows.h>
#include <sstream>

using namespace std;

int main () {
char text [50];
int integer = 12345;
stringstream sstream;
sstream << integer;
sstream >> text;
MessageBox(NULL, text, "_", MB_OK);
return 0;
}

-m0rgan-
09.10.2009, 18:18
2rudvil, спс конечно, но число в строку я уже перегнал, нужно инт в хекс превратить как то.
Инае говоря, необходимо выводить адрес не в десятичной, а в шестнадцатеричной системе счисления.

rudvil
09.10.2009, 18:30
2rudvil, спс конечно, но число в строку я уже перегнал, нужно инт в хекс превратить как то.
Инае говоря, необходимо выводить адрес не в десятичной, а в шестнадцатеричной системе счисления.
если я правильно понял, то так
#include <windows.h>
#include <iostream>
#include <sstream>

using namespace std;

int main () {
char text [50];
int integer = 12345;
stringstream sstream;
sstream << hex << integer;
sstream >> text;
MessageBox(NULL, text, "_", MB_OK);
return 0;
}

з.ы. гуглем запрещено пользоваться? :)

-m0rgan-
09.10.2009, 19:00
угу, ты правильно понял, спс.
Еще вопрос:
Я юзаю Code::Block, ибо студия тормозит очень..
Но при компиляции программы из 15ти строк, ее размер составляет почти 700кб.
Это не нормально.
Как уменшить размер?
Ведь в студии все ок.

rudvil
09.10.2009, 19:03
угу, ты правильно понял, спс.
Еще вопрос:
Я юзаю Code::Block, ибо студия тормозит очень..
Но при компиляции программы из 15ти строк, ее размер составляет почти 700кб.
Это не нормально.
Как уменшить размер?
Ведь в студии все ок.
Если у тебя в codeblocks используется mingw, то тебе сюда (http://www.mingw.org/wiki/Large_executables)

-m0rgan-
09.10.2009, 19:39
спс.
Как скрыть программу с процессов?
Слышал что то о хуке sdt, только вот объясните плз, что такое sdt, что такое хук, и как сделат этот же хук sdt ?

Зарание благодарен!

Ra$cal
09.10.2009, 19:48
гуглить то пробовал?

-m0rgan-
09.10.2009, 19:50
пробовал, нагуглил только это:
http://forum.antichat.ru/printthread.php?t=40497
и все

Ra$cal
09.10.2009, 19:50
задаем правильный вопрос гуглу (http://tinyurl.com/ylqz3nk)

Dark_Scorpicore
09.10.2009, 19:53
Народ, заранее извиняюсь за свою тупость, но все-таки прошу помощи, ибо сам уже не могу справиться :(
Короче, нужно составить список айпи адресов из блоков цифр
Каждый блок хранится в определенной переменной.
Например, в a хранится 92, в b 187 и т.д.

Мне нужно присвоить переменной, ну скажем z, значения a,b,c,d разделенные символом ".", как в айпи адресе...
После сегза с кавычками и постоянно ругающимся компилятором, я не вытерпел... что я делаю неправильно?
Пытался приблизительно так:

int z=a.b.c.d;

но, естественно, это неверно :(

Жду помощи, спасибо.

Ra$cal
09.10.2009, 20:06
если в строку надо слить цифры

char ip_string[20];
sprintf(ip_string, "%d.%d.%d.%d", a, b, c, d);

cupper
11.10.2009, 00:35
Наведите кто нибуть на материал по С++ (linux) для работы с GET POST, а то некогда не сталкивался с этим, незнаю даже с какой стороны начать капать.

Kaimi
11.10.2009, 00:41
Наведите кто нибуть на материал по С++ (linux) для работы с GET POST, а то некогда не сталкивался с этим, незнаю даже с какой стороны начать капать.

И в гугле забанили видимо...
http://coding.debuntu.org/c-linux-socket-programming-tcp-simple-http-client

n4e/\@
11.10.2009, 02:17
Еще можно использовать библиотеку boost.asio, она кроссплатформенная так что будет работать и в винде и в линуксе, в комплекте хорошая документация и несколько примеров.
http://www.boost.org/doc/libs/1_38_0/doc/html/boost_asio.html

horlyk
11.10.2009, 15:14
Подскажите плз где можно почитать нормальную инфу о выводе пикселя на экран. Мне нужно построить график ф-и, но я чет не наешл нормальной инфы. Видел только использование библиотеки graphics, но мой С++ с 2008-й студии не видит эту либу. скачал ее, ей понадобился еще 1 хедер, а тому еще один, а тому еще 10... Чет не интересно стало такой муйней заниматься. Подскажите плз, где можно нормально про это почитать и без такой волокиты.

Irdis
11.10.2009, 15:41
http://forum.antichat.ru/thread146496.html

-m0rgan-
11.10.2009, 17:22
Привет, как удалить директорию?
RemoveDirectory() не прокатит, так как директория содржит файлы.

Ra$cal
11.10.2009, 17:35
вот что нам глаголит мсдн

Remarks

The RemoveDirectory function marks a directory for deletion on close. Therefore, the directory is not removed until the last handle to the directory is closed.

To recursively delete the files in a directory, use the SHFileOperation function.

-m0rgan-
11.10.2009, 17:52
А аналоги у SHFileOperation() есть?
--
И как осуществить рекактирование файла, то есть консольное окно редактора, сложно это?
какую ф-ю юзать?

-m0rgan-
11.10.2009, 18:32
...
int Remove_dirA(LPCTSTR pPath)
{
SHFILEOPSTRUCTA sh;
ZeroMemory(&sh,sizeof(SHFILEOPSTRUCTA));
sh.wFunc = FO_DELETE;
sh.pFrom = pPath; //удаляемая директория
//(путь в формате Ansi, завершающийся NULL-терминатором...)
sh.fFlags = FOF_NOCONFIRMATION | FOF_SILENT;
return SHFileOperationA(&sh);
}
...
Remove_dirA(patch);
...
Патч:C:\FindBD\FBD\

Почему не удаляет?

Ra$cal
11.10.2009, 18:51
FO_DELETE
Delete the files specified in pFrom.

pFrom
Note This string must be double-null terminated.

доки надо читать не по диагонали. тем более если не работает код. Плюс в pFrom надо юзать * указывая все удаляемые файлы как я понял. Опять же из чтения примечаний.

-m0rgan-
11.10.2009, 19:56
>тем более если не работает код
Ra$cal, у меня все компелмруется, только не трет диру.

Ra$cal
11.10.2009, 20:19
это и значит, что котд не работает. иначе бы я сказал код не компилируется =)

-m0rgan-
11.10.2009, 23:37
как перевернуть строку задом на перед?
Типа:
char strinr[] = "text";
нужно перевернуть чтоб вышло "txet"
Как реализовать?

rudvil
11.10.2009, 23:39
как перевернуть строку задом на перед?
Типа:
char strinr[] = "text";
нужно перевернуть чтоб вышло "txet"
Как реализовать?
Руками

-m0rgan-
11.10.2009, 23:46
2rudvil, угу, ответ достойный хоцкера =\

Сделал..
Кому надо:
int main(int argc, char *argv[])
{
char string[] = "text";
int s = strlen(string);
while(s > 0)
{
s--;
cout<<string[s];
}

-m0rgan-
12.10.2009, 20:16
Привет!
Как сделать редактирование файла?
Ну как в фаре например.
Чтоб рткрылось окно редактора и я мог редактировать открытий файл.

Зарание блаодарен, с меня +++

Hiro Protagonist
12.10.2009, 21:15
2-m0rgan-

программно? RichEdit + CreateFile/ReadFile/WriteFile. А вообще я думаю стоит почитать книжку по программированию, а не писать посты на форуме. Производительнее както )

-m0rgan-
12.10.2009, 21:20
2Hiro Protagonist, в тех книгах которые я читал такое не пишут.
CreateFile/ReadFile/WriteFile
Это я знаю, меня интересует окно редактора, чтоб содержимое файла ВЫВЕЛОСЬ и я мог ЕГО ИЗМЕНЯТЬ

rudvil
12.10.2009, 21:25
2Hiro Protagonist, в тех книгах которые я читал такое не пишут.

Это я знаю, меня интересует окно редактора, чтоб содержимое файла ВЫВЕЛОСЬ и я мог ЕГО ИЗМЕНЯТЬ
Напиши сначала где редактировать, в консоле, или просто как в notepad илиже как в wordpad...

-m0rgan-
12.10.2009, 21:26
в консоле

rudvil
12.10.2009, 21:31
Выбирай (http://en.wikipedia.org/wiki/List_of_text_editors#Text_user_interface), какой больше понравится и посмотри как он устроен, имхо самому писать трудно будет...

Mozy
12.10.2009, 21:32
Именно в средствами самой консоли такое реализовать нельзя
Но в Windows консоль открывается при помощи окна
Именно как реализовать,сказать не могу
Но посоветую копай в сторону <windows.h>

rudvil
12.10.2009, 21:34
Кстати почему бы не посмотреть как в far это устроено, он ведь теперь опенсурс

-m0rgan-
12.10.2009, 22:25
2rudvil, спс.
Еще народ выручайте, проблема с CopyFile()
Обгуглил все, хз почему не копирует =\
...
char patch[] = ":\DIR";
char disk[9];
gets(disk);
strcat(disk,patch);
...
CopyFile(disk,"55.exe",false)
...

Почему не копирует?

scrat
12.10.2009, 22:28
Привет!
Как сделать редактирование файла?
Ну как в фаре например.
Чтоб рткрылось окно редактора и я мог редактировать открытий файл.

Зарание блаодарен, с меня +++

ну открываешь файл, выводишь его содержимое.

Ловишь сигналы с клавиатуры, соответственно меняешь то, что показывается на экране(курсор, сам текст) и в буфере правишь, что надо.

Сохраняешь содержимое из буфера, после редактирования.

_nic
12.10.2009, 22:38
Как можно по пиду процесса,найти его рабочую папку?

scrat
12.10.2009, 23:03
Как можно по пиду процесса,найти его рабочую папку?
ты бы описал где и как, но раз не описал, скажу как это делается в .net:

Получаем StartupInfo из объекта типа Process (http://msdn.microsoft.com/en-us/library/system.diagnostics.process.startinfo.aspx)

Берём от туда поле WorkingDirectory (http://bit.ly/muXtA)

загуглил за 5 минут.

_nic
12.10.2009, 23:30
ты бы описал где и как, но раз не описал, скажу как это делается в .net:

Получаем StartupInfo из объекта типа Process (http://msdn.microsoft.com/en-us/library/system.diagnostics.process.startinfo.aspx)

Берём от туда поле WorkingDirectory (http://bit.ly/muXtA)

загуглил за 5 минут.
Мне бы на winapi...

-m0rgan-
12.10.2009, 23:36
2rudvil, спс.
Еще народ выручайте, проблема с CopyFile()
Обгуглил все, хз почему не копирует =\
...
char patch[] = ":\DIR";
char disk[9];
gets(disk);
strcat(disk,patch);
...
CopyFile(disk,"55.exe",false)
...

Почему не копирует?

Ну так что там с CopyFile()

-m0rgan-
12.10.2009, 23:39
не актуально, разобрался

Gin
13.10.2009, 10:25
Помогите разобраться.
Дан массив чисел, произвольной длинны пытаюсь обойти его с помощью указателя,
а получаеться что он выходит за пределы массива.
Почему не верно:?

double max=*pArr;
while(*pArr){
if(max<*pArr)
max=*pArr;
pArr++;
}

BrainDeaD
13.10.2009, 11:02
потому что программа не занает где кончается массив. даже за пределами твоего массива в ячейках памяти находятся какие-то данные - цифровой мусор. программа не ясновидящая, что бы понять какие данные относятся к массиву, а какие нет. таким образом инкементируя адреса, указатель будет прыгать дальше, а в while(*pArr) выражение *pArr будет ещё долго true.

rudvil
13.10.2009, 12:53
Помогите разобраться.
Дан массив чисел, произвольной длинны пытаюсь обойти его с помощью указателя,
а получаеться что он выходит за пределы массива.
Почему не верно:?

double max=*pArr;
while(*pArr){
if(max<*pArr)
max=*pArr;
pArr++;
}

Похожим образом можно работать с char, но не с double...
Ну так если дан массив то работай с ним как с массивом т.е. double test[5];
for (int i = 0; i < (sizeof(test) / sizeof(double)); i++ ) {
std::cout << test[i] << "\n";
...
}

Gin
13.10.2009, 15:16
2rudvil and 2all
а по-красивей варианта нет :?
я массив в функцию передаю и такой ход может не прокатить.

rudvil
13.10.2009, 15:28
2rudvil and 2all
а по-красивей варианта нет :?
я массив в функцию передаю и такой ход может не прокатить.
Код в студию...

nitx
13.10.2009, 15:28
а по-красивей варианта нет :?
я массив в функцию передаю и такой ход может не прокатить.
объясни понятно что нужно сделать, какая вобще задача. Тот код что ты привел в пример смысла почти не имеет. Надо посчитать количество элементов массива? С помощью указателя и куска памяти где этот массив лежит это сделать нереально.

Gin
13.10.2009, 16:27
Вот изначально как выглядело. Цель банальна найти наибольший элемент в массиве.
Как уже выяснилось это заведомо неверный код, просто хочу показать как выглядело изначально и какие цели приследуются.


max_arr(double *pArr){
double max=*pArr;
while(*pArr){
if(max<*pArr)
max=*pArr;
pArr++;
}

-m0rgan-
13.10.2009, 17:21
Как в Code::Block добавить иконку?
То есть нужно прифигачить свою иконку в левую верхнюю часто консольного приложения, и естественно на екзешкик(ярлык).
Зарание благодарен!

n4e/\@
13.10.2009, 17:52
2Gin изначально массив как инициализирован?
Может стоит сделать структуру которая будет содержать значение, и указатель на следующйи элемент?
Тогда обход можно выполнять так:
for ( mas *pnt = temp; pnt != NULL; pnt = pnt->next )
Или гораздо проще использовать std::vector если нужун динамический массив

2-m0rgan-
Не уверен но может это поможет?
Добавляем в проект файл resource.rc.
Иконка приложения:

// should be first in alphabetical ID list, we use "AAAAAAA" name
AAAAAAA_PROGRAM_ICON ICON "PATH_to_icon/icon_NAME.ico"
Наткнулся на одном блоге.

-m0rgan-
13.10.2009, 18:51
2n4e/\@, не не прокатит

Ra$cal
13.10.2009, 18:58
для обычных массивов нада передавать его размер. других путей нет. прваильный же путь - юзать stl'ский vector.

-m0rgan-
13.10.2009, 21:23
Народ, дайте плз ХОРОШУЮ книгу по АПИ в С++, а то я уже заебался методом тыка шаманить с этими форточками =\\\

Hiro Protagonist
13.10.2009, 21:44
окошки
------------

(!) Петцольд Ч. Программирование для Windows 95
Щупак Ю. Win32 Api. Разработка приложений для Windows
Финогенов. WIN32

система
------------

(!) Рихтер. Windows via C/C++
Харт. Системное программирование в среде windows

Выделенные (!) обязательны к прочтению. Всё есть в сети (Правда по поводу Рихтера - последнего издания не уверен, но предыдущее есть, а там все почти тоже самое, за исключением висты).

ЗЫ Да и Петцольд НЕ УСТАРЕЛ в отношении оконного интерфейса. Про остальное лучше читать у Рихтера (dll, memory, etc)

scrat
13.10.2009, 21:44
Народ, дайте плз ХОРОШУЮ книгу по АПИ в С++, а то я уже заебался методом тыка шаманить с этими форточками =\\\
ну если хочешь написать что-то более-менее нормальное, советую win forms, остальной winapi - только в случае, когда нужно что-то системное сделать

-m0rgan-
13.10.2009, 21:52
2scrat, на даный момент я пишу простенькие програмки и набираюсь опыта.
Вот столкнулся с задачей реализации ГУИ приложений на С++
Благодарю за вин формс, попробую.

2Hiro Protagonist, благодарю за апи.

GenTao
15.10.2009, 01:20
Эм,гуи приложения лучше на борланд с++ билдере создавать.Так посоветовали.

BrainDeaD
15.10.2009, 02:37
не согласен. лично мне лучше VS, QT.

-m0rgan-
15.10.2009, 23:10
Как прикрутить интеловский конпелятор к Visual Studio 2008 ?

GenTao
16.10.2009, 18:34
1)Что такое динамически созданный объект в с++ ?
2) Использовал пример:



int main() {


int x = 5;
int *s = &x;
printf("%d",s);
getch();


}



Если подставить s,то выводит адрес переменной x,а если *s,то значение.Почему такой результат ? Указатель ведь адрес содержит,а не само значение.Из определения.

razb
16.10.2009, 18:59
может сперва стоит прочитать книжку

Gin
17.10.2009, 11:35
Уважаемое сообщество посоветуйте пользовательский класс для работы со строками/текстом, если такой имееться, а именно интересует функции подсчета кол-ва слов в тексте, возможность замены слов и т.д.Спасибо.

Irdis
17.10.2009, 14:37
http://www.cplusplus.com/reference/string/string/
для множества строк
http://www.cplusplus.com/reference/stl/list/

Глюконатор
17.10.2009, 19:15
int cpnum;

...

if (cpnum == 0) cout << "Orig.";
else cout << cpnum;

если написать так, то все норм, но если заменить if на

cout << cpnum == 0 ? "Orig." : cpnum;

то компилятор выдает ошибку
нет преобразования 'int' в 'const char *'

Почему так происходит?

visual studio 2008.

t4Nk
17.10.2009, 20:49
cout << cpnum == 0 ? "Orig." : cpnum;Почему так происходит?

Ну во-первых у оператора "<<" приоритет больше, чем у "?:",
поэтому сначала выведется cpnum, а потом то, что вернет cout будет сравниваться с 0... вобщем надо заключать в скобки весь тернарный оператор.

А во-вторых подстановка шаблонов происходит во время компиляции, и тут подставляется "Orig", т.е. char а потом в него выводится int-вое значение. Потому и ругается.

В твоем случае лучше написать так:
(cpnum == 0) ? cout << "orig" : cout << cpnum;

GenTao
18.10.2009, 14:21
Почему не могу использовать cout внутри класса ?



#include <stdio.h>
#include <conio.h>
#include <iostream>

class Sum {

int x,y,s; //private method of access data
public:

void vhod_1(int x) { x = 5;cout << x;}
void vhod_2(int y) { y = 3;}
void summa();

};


int main() { }