Просмотр полной версии : [c/c++] Новичкам: задаем вопросы
Страницы :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[
20]
21
22
Чтобы лучше разобратся с указателями, напиши простенькую прогрумку аля
void mail(void)
{
char *text = "test";
MessageBox(NULL, text, "cap", MB_OK);
return;
}
Потом открой ее в отладчике(OllyDbg) и посмотри как используется указатель на текст.
ЗЫ
Я сам, пока не посмотрел в отладчике, не до конца понимал принцип указателей.
да никак по сути. вот самое простое но может изза оптимизации...
77502800 90 nop
77502801 90 nop
77502802 90 nop
77502803 C700 01000000 mov dword ptr ds:[eax],1
77502809 90 nop
7750280A 90 nop
7750280B 90 nop
7750280C C3 retn
7750280D 90 nop
7750280E 90 nop
7750280F 90 nop
77502810 C700 02000000 mov dword ptr ds:[eax],2
77502816 90 nop
77502817 90 nop
77502818 90 nop
77502819 C3 retn
7750281A > 55 push ebp
7750281B 8BEC mov ebp,esp
7750281D 51 push ecx
7750281E CC int3
7750281F 8D45 FC lea eax,dword ptr ss:[ebp-4]
77502822 E8 D9FFFFFF call cspeed.77502800
77502827 E8 E1FFFFFF call cspeed.7750280D
7750282C 33C0 xor eax,eax
7750282E C9 leave
7750282F C2 1000 retn 10
а сама прога
void __stdcall f1(int *v)
{
__asm{
nop
nop
nop
}
*v = 1;
__asm{
nop
nop
nop
}
}
void __stdcall f2(int &v)
{
__asm{
nop
nop
nop
}
v = 2;
__asm{
nop
nop
nop
}
}
//////////////////////////////////////////////////////////////////////////
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
int d;
__asm int 3;
d=0;
f1(&d);
f2(d);
return 0;
}
Krist_ALL
29.01.2010, 18:57
Скажите почему так мона:
char *a = "lalala";
а так нельзя:
int *a = 5;
Alexan007
29.01.2010, 23:09
Товарищи, много писал раньше под дос на си, сейчас пересел на вижуал си 2008, не могу понять как увязываются коды и виз часть, и то и другое освоил, а вместе никак, посоветуйте плиз книженцию полезную, с примерчиками, интересует использование вижуал си для написания прикладных мат программ, пишу диплом связанный с этим, за любую помощь заранее спасибо
Marchcat86
30.01.2010, 18:38
Всем привет.
Есть такая IDE называется SlickEdit - очень удобная, можно настроить под себя обсолютно все (юзал под асмом) :)
И вот какая проблема: подскажите пожалуста как к SlickEdit прикрутить компилятор Intel C++ если это вообще возможно?
Данный вопрос меня интересует т.к. нужна переносная (на флешке 2ГБ) среда программирования на C++ (т.к. нет возможности на работе установить VS2005 и всего остального конечно тоже)
Заранее благодарен.
zeppe1in
31.01.2010, 14:37
можно как нибудь по простому подключить длл без .lib? имеется ввиду статическая линковка.
типо typedef такаято функция в такойто длл. VS2008.
Всем привет! у меня такой вопрос: как в Visual C++ (работаю в Visual Studio 2008), выбрав в мастере создания MFC пункт Dialog Based, поместить на этот стандартный диалог стандартное меню, которое будет содержать файл-> новое окно.(и чтобы при нажатии new window отображалось пустое стандартное диалоговое окно).
подскажите пожалуйста какой -нибудь хороший задачник по С++ где можно скачать. Гуглил, но ничего не нашел хорошего, или где можно скачать книгу шилдта теория и практика С++
Critical
06.02.2010, 14:40
Вопрос тем, кто знаком с Microsoft Visual C++ 2008 Express Edition (я только начал изучение и знаю очень мало, могут быть не точности):
Почему нельзя откомпилировать код из одного файла (запустить отладчик)? Ну то есть у меня прога простая на пару действий но я не могу её откомпилировать и запустить. Вот сам код:
#include <iostream>
#include <stdio.h>
using namespace std;
int HackAlert()
{
string answer;
cout << "Are you a hacker? (Y or N)" << endl;
cin >> answer;
if (answer == "N")
{
cout << "Huh... I was afraid." << endl;
}
else
{
cout << "You are an idiot" << endl;
}
getchar();
return 0;
}
int main()
{
string password;
cout << "Enter the password:" << endl;
cin >> password;
if (password == "i am a hero")
{
cout << "The password is correct!" << endl;
}
else
{
cout << "Password is incorrect!" << endl;
HackAlert();
}
getchar();
return 0;
}
Кнопка "Отладка" не доступна (серая и все).
Может я в чем то ступил или просто не знаю какогото аспекта?
ПРосто например в Dev-C++ можно написать код, откомпилировать и запустить... А в Microsoft Visual C++ 2008 Express Edition нету простой компиляции...
P.S.: если в коде есть не точности или ошибки то напишите какие!
\\ChaOs//
06.02.2010, 14:56
2 Critical Нужно проект создать, а не просто файл с++
Critical
06.02.2010, 15:51
2 Critical Нужно проект создать, а не просто файл с++
А без этого не как?
Просто не удобно всегда проект новый создавать...
Я уже создавал через проект и поэтому там все подключаемые файлы нужно добавлять в проект и в данном случае я не знаю где искать iostream.h и stdio.h
Critical
06.02.2010, 16:48
Я нашел те два файла, подключил... Но там такое мясо начинается: при использовании "using namespace std" пишет что нет такого пространства...
Вот все ошибки:
d:\just\just\just.cpp(5) : error C2871: std: пространство имен с таким именем не существует
d:\just\just\just.cpp(8) : error C2065: string: необъявленный идентификатор
d:\just\just\just.cpp(8) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "answer"
d:\just\just\just.cpp(8) : error C2065: answer: необъявленный идентификатор
d:\just\just\just.cpp(9) : error C2065: cout: необъявленный идентификатор
d:\just\just\just.cpp(9) : error C2065: endl: необъявленный идентификатор
d:\just\just\just.cpp(10) : error C2065: cin: необъявленный идентификатор
d:\just\just\just.cpp(10) : error C2065: answer: необъявленный идентификатор
d:\just\just\just.cpp(11) : error C2065: answer: необъявленный идентификатор
d:\just\just\just.cpp(13) : error C2065: cout: необъявленный идентификатор
d:\just\just\just.cpp(13) : error C2065: endl: необъявленный идентификатор
d:\just\just\just.cpp(17) : error C2065: cout: необъявленный идентификатор
d:\just\just\just.cpp(17) : error C2065: endl: необъявленный идентификатор
d:\just\just\just.cpp(24) : error C2065: string: необъявленный идентификатор
d:\just\just\just.cpp(24) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "password"
d:\just\just\just.cpp(24) : error C2065: password: необъявленный идентификатор
d:\just\just\just.cpp(25) : error C2065: cout: необъявленный идентификатор
d:\just\just\just.cpp(25) : error C2065: endl: необъявленный идентификатор
d:\just\just\just.cpp(26) : error C2065: cin: необъявленный идентификатор
d:\just\just\just.cpp(26) : error C2065: password: необъявленный идентификатор
d:\just\just\just.cpp(27) : error C2065: password: необъявленный идентификатор
d:\just\just\just.cpp(29) : error C2065: cout: необъявленный идентификатор
d:\just\just\just.cpp(29) : error C2065: endl: необъявленный идентификатор
d:\just\just\just.cpp(33) : error C2065: cout: необъявленный идентификатор
d:\just\just\just.cpp(33) : error C2065: endl: необъявленный идентификатор
d:\just\just\just.cpp(38) : error C2065: cout: необъявленный идентификатор
Хотя я в коде подключил все что надо:
#include <iostream>
#include <stdio.h>
using namespace std;
Всем привет! у меня такой вопрос: как в Visual C++ (работаю в Visual Studio 2008), выбрав в мастере создания MFC пункт Dialog Based, поместить на этот стандартный диалог стандартное меню, которое будет содержать файл-> новое окно.(и чтобы при нажатии new window отображалось пустое стандартное диалоговое окно).
Господа, мне кто-нибудь поможет с этим вопросом?
Вопрос тем, кто знаком с Microsoft Visual C++ 2008 Express Edition (я только начал изучение и знаю очень мало, могут быть не точности):
Почему нельзя откомпилировать код из одного файла (запустить отладчик)? Ну то есть у меня прога простая на пару действий но я не могу её откомпилировать и запустить. Вот сам код:
#include <iostream>
#include <stdio.h>
using namespace std;
int HackAlert()
{
string answer;
cout << "Are you a hacker? (Y or N)" << endl;
cin >> answer;
if (answer == "N")
{
cout << "Huh... I was afraid." << endl;
}
else
{
cout << "You are an idiot" << endl;
}
getchar();
return 0;
}
int main()
{
string password;
cout << "Enter the password:" << endl;
cin >> password;
if (password == "i am a hero")
{
cout << "The password is correct!" << endl;
}
else
{
cout << "Password is incorrect!" << endl;
HackAlert();
}
getchar();
return 0;
}
Кнопка "Отладка" не доступна (серая и все).
Может я в чем то ступил или просто не знаю какогото аспекта?
ПРосто например в Dev-C++ можно написать код, откомпилировать и запустить... А в Microsoft Visual C++ 2008 Express Edition нету простой компиляции...
P.S.: если в коде есть не точности или ошибки то напишите какие!
#include <iostream>
#include <string>
using namespace std;
int HackAlert()
{
string answer;
cout << "Are you a hacker? (Y or N)" << endl;
cin >> answer;
if (answer == "N")
{
cout << "Huh... I was afraid." << endl;
}
else
{
cout << "You are an idiot" << endl;
}
cin.get();
return 0;
}
int main()
{
string password;
cout << "Enter the password:" << endl;
cin >> password;
if (password == "i am a hero")
{
cout << "The password is correct!" << endl;
}
else
{
cout << "Password is incorrect!" << endl;
HackAlert();
}
cin.get();
return 0;
}
Ты использовал класс string не подключив соответствующей библиотеки, и зачем ради getchar() подключать stdio.h, воспользуйся cin.get() из iostream.
Critical
09.02.2010, 00:37
to Ins3t
Может ты мне простишь, я все таки пару дней назад начал учить C++...
Какая библиотека нужна для string?
А как скомпилировать саму програмку где я написал свой код? ведь он же просто так переформатируя на С++ не получится запустить правильно, в итоге он открывает фаил не как программу а как блокнот
Radical Edward
09.02.2010, 01:26
Зависит от среды разработки. Обычно, в меня юдля этого есть специальная кнопка типа "Build Solution", "Compile" и тому подобное. Если ты работаешь в MS Visual Studio, нажми Ctrl+F5....касательно других сред поищи в менюшке...
Dark_Scorpicore
09.02.2010, 08:05
Здравствуйте!
Недавно перешел с Netbeans на M$ Visual C++ . Вроде бы все нравится, но пара деталей не очень устраивает, посему интересует ответ на 2 вопроса:
1) Можно ли как-то в пределах одного проекта компилить, например, только один исходник, если их, допустим, 3? А то для каждой маленькой программы создавать отдельный проект не очень удобно.
2) Как расширить подсветку кода? Некоторые типы переменных и то не подсвечиваются(например, тип string). Есть ли какие-то модификации, или что-то нужно в настройках менять?
Также огромная просьба прояснить такую ситуацию:
Например пишу я консольную программку, которая делает какие-либо действия и выводит резалт в cmd, можно ли, в дальнейшем при разработке GUI- интерфейсов заюзать код консольного приложения? Допустим, я захочу выводить резалт работы проги в текстбокс на форме, много ли для этого "консольного" кода перелопатить нужно?
Спасибо за ответ .
p.s. Извините за тупые вопросы, в гугле ответы не смог найти
Dark_Scorpicore
1 - нет. можно в одном проекте делать много классов и менять код мейна для теста классов.
2 - visual assist
3 - http://ru.wikipedia.org/wiki/Model-View-Controller (в конце ссылки на примеры)
При написании одной проги возник вопрос. Какой функцией воспользоваться, чтобы она возвращала в какой-нибудь массив имена всех файлов, которые лежат в указанной папке? Желательно использовать только чисто сишные функции и желательно, чтобы они работали и под Windows и под Unix.
При гуглении на эту тему нашёл два модуля: DirectoryListBox и FileListBox, но к сожалению, во-первых, не смог найти описания функций этих библиотек, а во-вторых это, как я понял, плюснутые функции, а мне хотелось бы написать на чистом С.
P.S. Заранее благодарен за ответы =)
VIP, opendir/readdir/closedir
VIP, opendir/readdir/closedir
Спасибо большое! Именно то, что искал =)
Начал изучать C++ тут...
#include <iostream>
void main()
{
cout << "Hello, world!";
}
Некомпилируется :eek: :confused:
error C2065: 'cout' : undeclared identifier
P.S. Знаю, что дурак, если че :rolleyes:
ты забыл про пространство имен
using namespace std;
поэтому он у тебя и cout не видет
:)
Critical
11.02.2010, 00:27
Начал изучать C++ тут...
#include <iostream>
void main()
{
cout << "Hello, world!";
}
Некомпилируется :eek: :confused:
error C2065: 'cout' : undeclared identifier
P.S. Знаю, что дурак, если че :rolleyes:
После "#include <iostream>" напиши с новой строки "using namespace std;".
Начал изучать C++ тут...
#include <iostream>
void main()
{
cout << "Hello, world!";
}
Некомпилируется :eek: :confused:
error C2065: 'cout' : undeclared identifier
P.S. Знаю, что дурак, если че :rolleyes:
Так правильнее будет#include <iostream>
int main (int argc, char* argv[]) {
std::cout << "Hi!\n";
return 0;
}
Всем спасибо... :)
Можно еще в двух словах - что есть это самое std?
Critical
11.02.2010, 00:33
Так правильнее будет#include <iostream>
int main (int argc, char* argv[]) {
std::cout << "Hi!\n";
return 0;
}
Может и правильно, но не очень удобно...
Хотя конечно для такой маленькой проги можно специально и не указывать пространство имен.
Так правильнее будет#include <iostream>
int main (int argc, char* argv[]) {
std::cout << "Hi!\n";
return 0;
}
мне кажется если человек только начал изучать С++
то лучше пока не использовать аргументы функции main() argc и argv.
Для начало лучше так(это просто субьективное мнение)
#include<iostream>
using namespace std;
int main()
{
cout<<"Hellow world";
return 0;
}
:) :)
Всем спасибо... :)
Можно еще в двух словах - что есть это самое std?
SHARA уже написал что это.
Пространство имен.
2rudvil, я уверен, что он все понял )
2Jino
http://ru.wikipedia.org/wiki/Пространство_имён_(програм ирование)
http://ru.wikipedia.org/wiki/Пространство_имён_(програм ирование)
Хорошая статья, мне понравилась, спасибо
// Popo.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
int n;
n = 100;
cout << n;
return 0;
}
Лог:
1>------ Build started: Project: Popo, Configuration: Debug Win32 ------
1>Compiling...
1>Popo.cpp
1>c:\documents and settings\администратор\мои документы\visual studio 2008\projects\popo\popo\popo.cpp(12) : error C2065: 'cout' : undeclared identifier
1>Build log was saved at "file://c:\Documents and Settings\Администратор\Мои документы\Visual Studio 2008\Projects\Popo\Popo\Debug\BuildLog.htm"
1>Popo - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Среда: MS visual C++ 2008 express edition.
Что сделать чтобы не было ошибки?
P.S.
Какая разница между MS visual C++ 2008 express edition и MS visual C++?
После
#include <iostream>
Напиши:
using namespace std;
Ins3t, спасибо! выручил
P.S. мне тупо интересно, что это за std?
--------------------------
ОЙ блииииин, сорри за невнимательность.... :o
Читай мой пост выще:
2rudvil, я уверен, что он все понял )
2Jino
http://ru.wikipedia.org/wiki/Пространство_имён_(програм ирование)
FireRidlle
12.02.2010, 18:59
исходный код:
#include <iostream>
using namespace std;
int main()
{
cout <<"hi";
return 0;
}
выдает ошибку
1>------ Построение начато: проект: s, Конфигурация: Debug Win32 ------
1>Компиляция...
1>s.cpp
1>.\s.cpp(8) : fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "stdafx.h"" в источник.
1>Журнал построения был сохранен в "file://c:\Documents and Settings\POKER STAR\Рабочий стол\s\s\Debug\BuildLog.htm"
1>s - ошибок 1, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
после добавление дерективы
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
cout <<"hi";
return 0;
ошибка
1>------ Построение начато: проект: s, Конфигурация: Debug Win32 ------
1>Компиляция...
1>s.cpp
1>.\s.cpp(1) : fatal error C1083: Не удается открыть файл предкомпилированный заголовок: Debug\s.pch: No such file or directory
1>Журнал построения был сохранен в "file://c:\Documents and Settings\POKER STAR\Рабочий стол\s\s\Debug\BuildLog.htm"
1>s - ошибок 1, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
среда MS visual c++ 2008 exspres editor
исходный код:
#include <iostream>
using namespace std;
int main()
{
cout <<"hi";
return 0;
}
выдает ошибку
1>------ Построение начато: проект: s, Конфигурация: Debug Win32 ------
1>Компиляция...
1>s.cpp
1>.\s.cpp(8) : fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "stdafx.h"" в источник.
1>Журнал построения был сохранен в "file://c:\Documents and Settings\POKER STAR\Рабочий стол\s\s\Debug\BuildLog.htm"
1>s - ошибок 1, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
после добавление дерективы
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
cout <<"hi";
return 0;
ошибка
1>------ Построение начато: проект: s, Конфигурация: Debug Win32 ------
1>Компиляция...
1>s.cpp
1>.\s.cpp(1) : fatal error C1083: Не удается открыть файл предкомпилированный заголовок: Debug\s.pch: No such file or directory
1>Журнал построения был сохранен в "file://c:\Documents and Settings\POKER STAR\Рабочий стол\s\s\Debug\BuildLog.htm"
1>s - ошибок 1, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
среда MS visual c++ 2008 exspres editor
Для такой программы создай проект "empty project".
создал CLR windows form aplication, накидал на форму кнопок. Вопрос: как обрабатывать кнопки? Чтобы нажал на кнопку и она что - нибудь сделала. В книге ничего не понял. Хочу посмотреть наглядно.
FireRidlle
12.02.2010, 21:04
Для такой программы создай проект "empty project".
спасибо. теперь такая ошибка. исходник тотже
1>------ Построение начато: проект: lol, Конфигурация: Debug Win32 ------
1>Внедрение манифеста...
1>.\Debug\lol.exe.intermediate.manifest : general error c1010070: Failed to load and parse the manifest. 5 C405BAO =09B8 C:070==K9 D09;.
1>Журнал построения был сохранен в "file://d:\visual c++\VC\vcprojects\lol\lol\Debug\BuildLog.htm"
1>lol - ошибок 1, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Хм. спасибо много нового узнал !
2VERte][, если не ошибаюсь - то нужно использовать "const_cast<>"
Есть файлы: form1.h, form1.h [design], project.cpp
Декларировал переменную в project.cpp
bool zpt;
Потом в файле form1.h назначаю событие к button11
private: System::Void button11_Click(System::Object^ sender, System::EventArgs^ e) {
if (zpt != true)
{
this->textBox1->Text = L",";
zpt = true;
}
}
Ошибка компиляции
1>c:\documents and settings\администратор\мои документы\visual studio 2008\projects\calc\calc\Form1.h(408) : error C2065: 'zpt' : undeclared identifier
Почему так происходит? Я же все декларировал.
определи эту переменную в .h файле, ибо при подключении этого .h файла получается так что переменная используется до определения
VERte][, Спасибо! А можешь объяснить зачем вообще нужен cpp файл в Windows Form проге? Чисто из - за стандарта?
VERte][, Спасибо! А можешь объяснить зачем вообще нужен cpp файл в Windows Form проге? Чисто из - за стандарта?
c Windows Form не знаком, но думаю в cpp файле все же находится код, если это программа)
DiHWO
книжки читать явно не пробовал. методом тыка c++\clr не учится. лучше делфи займись.
Сорри за тупые вопросы, я разобрался, просто надо было глубже копнуть.
Может кто показать пример простейшей программы смены мак адреса + ип адреса
под борланд буилдер 6 ?
т.е. вводишь мак без двоеточий, и ип жмешь сменить и все меняется
Вопрос к тем кто учился на програмистов или специальности близкой к програмированию. Может у кого остались конспекты, методички и задания к курсовым??? Я разбираюсь на данный момент по книгам и мануалам с интернета, что-то написать уже могу - но хотелось бы увидеть чему учат в универах.
интересует php, C++, можно еще ассемблер.
Вопрос к тем кто учился на програмистов или специальности близкой к програмированию. Может у кого остались конспекты, методички и задания к курсовым??? Я разбираюсь на данный момент по книгам и мануалам с интернета, что-то написать уже могу - но хотелось бы увидеть чему учат в универах.
интересует php, C++, можно еще ассемблер.
да ничему там по большому счету не учат, там учат синтаксису, так что если хочешь что-то знать садись сам, читай книги, статьи и пиши, лучше не придумаешь. Правда у нас на семинарах был препод, который вместо обучения языку рассказывал интересные вещи про оптимизацию, про то как компилятор переводит код на асм, вообщем всякие тонкости в расчете на тех кто знает уже синтаксис, но это исключение
Вопрос к тем кто учился на програмистов или специальности близкой к програмированию. Может у кого остались конспекты, методички и задания к курсовым??? Я разбираюсь на данный момент по книгам и мануалам с интернета, что-то написать уже могу - но хотелось бы увидеть чему учат в универах.
интересует php, C++, можно еще ассемблер.
Ничегошеньки интересного
Скукота
Я на лекциях в основном лабы пишу,но бывают и исключения
Вот к примеру (http://rghost.net/990813)
BrainDeaD
15.02.2010, 01:28
я учил всё сам. университетская программа принесла мне 0 пользы в программиривании. могу сказать одно: читай книжки и кодь как можно больше. несравнимую пользу приносит работа в команде специалистов, но не у всех есть такая возможность.
http://ifolder.ru/16418097 - лекции по ТРПО. Уровень несколько выше конкретных языков. Снабдили знакомые.
А так в универе дают основы. Чтобы получить хорошие знания и опыт советую почитать следующие книги:
http://www.books.ru/shop/books/25832
http://www.books.ru/shop/books/330247
http://www.books.ru/shop/books/352130
http://www.books.ru/shop/books/30436
http://www.books.ru/shop/books/455133
http://www.books.ru/shop/books/147550 (низачто не покупать и не читать русское издание. абсолютно кривой перевод. многие термины пересобачены наоборот. читать либо на английском(вполне покатит чтение буки на русском с постоянной сверкой с оригиналом, ибо художественные моменты переведены норм, а вот программерские - пиздец), либо ждать издания нового перевода этой же книги только про C#
http://www.books.ru/shop/books/728454 - больше для пром софта в серьезных конторах, хотя есть очень интересные моменты и для прикладного софта
универ не подготовит программиста.
универ выпускает людей которые потенциально могут стать кодерами, так как есть основа для начала дальнейшего самостоятельного обучения.
Надо самому, сидеть и заниматься))), читать больше книг, точней кода в книгах)) и практиковаться, решать задачи студентам с лабами на ачате :) тогда будет толк.:)
Мне универ вообще ничего не дал.
fenixelite
15.02.2010, 13:48
Хочу на www.specialist.ru пройти курс TeachPro по С++, как думаете стоит ли оно того, или лучше самому учить?
учи сам. а потом курс пройдешь :)
fenixelite
15.02.2010, 15:05
Жаль просто что бесплатного курса нет, на том же ИнУИТ'e по Дельфи был нормальный курс, с большим кол-во практики и т.д а вот по С++ нет (( Ладно, лучше наверное сам пока буду учить, а потом посмотрим..
на самом деле, можно самому учить, и стараться как-можно больше решать задач :)
fenixelite
15.02.2010, 15:46
Ну это понятно, все равно когда в том же универе выучишься, надо дальше продолжать изучать что то новое, и все это придеться делать самомоу )) Щас скачал книгу С++ за 21 день, тут вроде рекоммендовали именно с нее начать.
мне не понравился книга С++ за 21 день
лучше почитай Герберта Шилдта, у него есть хорошая книга С++ базовый курс, там все хорошо написано, потом можно прочитай полный справочник по С++, шилдта
Или Страутрупа почитать
Тем более меня смущает название С++ за 21 день
Хотя это субьективное мнение, каждому свое :)
вот здесь есть некоторые книжки. посмотир по изучай сайт
http://progbook.net/info/
fenixelite
15.02.2010, 16:04
Ну я как понял в ней написано основное, а потом уже с помощью других книг или инфы, углублять свои знания. Хотя хз, я все таки не читал еще. В общем надо будет посмотреть ее седня.
InterLife
15.02.2010, 17:24
Подскажите пожалуйста сайт-справочник по функциям c++, типа php.su по php. Желательно русский.
InterLife
15.02.2010, 18:43
Мне например сейчас нужна функция разбора строки в массив с сепаратором. Мой английский не так хорош, как хотелось бы, когда я пытаюсь найти подобные функции, поэтому все-таки хочется русский
Большое спасибо всем кто ответил, :) все ответы принесли пользу. Нашел много лабораторных в разделе лабораторные)
А если я стану неплохо програмировать, кроме сети я смогу заработать себе на хлеб этим?
То есть прихожу я на фирму и говорю что могу, а они меня возьмут при наличии хороших знаний?
Вообще как берут на работу?
То есть прихожу я на фирму и говорю что могу, а они меня возьмут при наличии хороших знаний?
Если твоя характеристика устроит фирму - ты будешь взят работать на пробный период, разумеется с минимальной зарплатой.
Усли в пробный период покажешь себя хорошо - будешь принят на работу.
2InterLife, смотри здесь:
http://worldcpp.vingrad.ru/
InterLife
15.02.2010, 19:42
2 Ins3t
не нашел там, чего искал, но портал очень полезный и интересный, спасибо
F&D
А тебе никто не говорил, что это не с++ и даже не с.
Chubakur
15.02.2010, 21:33
F&D
А тебе никто не говорил, что это не с++ и даже не с.
Это C# вроде.
F&D
А тебе никто не говорил, что это не с++ и даже не с.
Блин.. точно, сорри. Тему перепутал. :rolleyes:
Код:
char* param = "0";
//траляля, всякие обработчики и т.д
this->textBox1->Text = param;
Ошибка:
1>c:\documents and settings\администратор\мои документы\visual studio 2008\projects\calc\calc\Form1.h(426) : error C2664: 'void System::Windows::Forms::Control::Text::set(System: :String ^)' : cannot convert parameter 1 from 'char *' to 'System::String ^'
что за тип "System::String ^" ??? Книги читал, про него ничего не сказанно, подозреваю что это какой - то стандартный тип в MS visual c++. Как конвертить? И как можно изначально переменную приписать к этому типу? Пытался
System::String ^ my_var;
//error
String ^ my_var;
//error
String^ my_var;
//error
это c++\clr - c++ в перемешку с .NET. Не самая лучшая комбинация для изучения с нуля.
Ra$cal, дак ты можешь помочь? Меня какбе не волнует какая это комбинация и лучшая она для изучения или нет. У меня есть проблема, мне надо решить её.
-------------------------------
Попробовал еще так:
using namespace System;
//ляляля
String ^ param = gcnew String("abc");
Вычитал сие чудо в msdn. Но всеравно выдает ошибку:
(26) : error C3145: 'param' : global or static variable may not have managed type 'System::String ^'
Ок, я вижу никто помочь не может, тогда зайду с другой стороны, как организовать вывод в Edit теста через переменную?
Я могу сделать это так:
this->textBox1->Text = L"text";
но не могу так:
this->textBox1->Text = var;
Где можно почитать подробно о том, работать с файлами, считывать инфу итд.
Имеется ввиду не как просто считать строку, а например как считать числа разделенные пробелами в массив, если размер масива неизвестен, без выделения лишней памяти.
Вобщем ожидаю какую-нибудь обьемную статью\мануал, в котором расписано всё это от самых азов до приведенных мною примеров, на понятном уровне ) Книги не пjljqlen, так как нужно быстро прочитать об этом и продолжить изучение.
Язык с++, используя только стандартные библиотеки(stdio/iostream).
Где можно почитать подробно о том, работать с файлами, считывать инфу итд.
Имеется ввиду не как просто считать строку, а например как считать числа разделенные пробелами в массив, если размер масива неизвестен, без выделения лишней памяти.
Вобщем ожидаю какую-нибудь обьемную статью\мануал, в котором расписано всё это от самых азов до приведенных мною примеров, на понятном уровне ) Книги не пjljqlen, так как нужно быстро прочитать об этом и продолжить изучение.
Язык с++, используя только стандартные библиотеки(stdio/iostream).
в конечном счёте все равно считывается строка, просто раздели её.
ну и ещё погуглить как вариант можно:
http://www.cplusplus.com/doc/tutorial/files/
http://www.bgsu.edu/departments/compsci/docs/read.html
raven314
18.02.2010, 13:53
посоветуйте опенсорсный компилятор на с++.
я просто только начал его учить, и хз какие где брать.
желательно чтонибудь, что можно использовать в граф средах
а не из под консоли.
посоветуйте опенсорсный компилятор на с++.
я просто только начал его учить, и хз какие где брать.
желательно чтонибудь, что можно использовать в граф средах
а не из под консоли.
gcc
У меня компилятор Визуал С++ 6.0
по книжечке делаю браузер. Точнее надстройку над ИЕ. Но почему-то отсутствует компонент
Microsoft Web Browser Control
подскажите где можно скачать и как его забросить)
в гугле искал - пока без результатов.
BastardFromHell
18.02.2010, 20:18
http://dl.dropbox.com/u/4408578/MinGW%20Developer.exe
MinGW Developer
gcc
ты читал вообще, что спрашивал топик стартер?
http://dl.dropbox.com/u/4408578/MinGW%20Developer.exe
MinGW Developer
ты читал вообще, что спрашивал топик стартер?
я наверно ошибся и там нет граической среды.
виноват. давай немножко повежлевей только.
rankor777
18.02.2010, 20:36
Человек неправильно задал вопрос. Компилятор - GCC/MinGW. А ему походу нужна IDE. Подойдет Qt Creator или Eclipse например.
Всем привет :) Подскажите пожалуйста, как сделать выход из программы? Например, если ответ на N, то совершается выход из проги
Всем привет :) Подскажите пожалуйста, как сделать выход из программы? Например, если ответ на N, то совершается выход из проги
if(1 = 1){
return 0;
}
А вобще хоть что нибудь почитай
Теперь другая проблема. Все скомпилировалось. Когда я запускаю и начинаю прогонять прогу, то вылетает 3 сообщения подряд, что память не может быть "read". Что делать? Компилятор молчит!
Странно, кинул другу, чтобы проверил, у него все нормально...
Теперь другая проблема. Все скомпилировалось. Когда я запускаю и начинаю прогонять прогу, то вылетает 3 сообщения подряд, что память не может быть "read". Что делать? Компилятор молчит!
Странно, кинул другу, чтобы проверил, у него все нормально...
На зверьков проверься
Пытаюсь писать на C++ на чистом WinApi без RTL и всякой фигни , как узнать какие именно функции используют RTL ? и какие есть альтернативы функций strcpy , strcat , fopen , fprintf ?
Перепутал , strcpy , strcat они без RTL пашет , а вот fopen , fprintf CRT юзают ,
как только я начинаю их использовать ошибко
1>LIBCMT.lib(crt0.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
С fopen,fprintf разобрался альтернатива CreateFile и WriteFile
Double2
для начала код сюда вставь
Dark_Scorpicore
19.02.2010, 19:09
Привет, я снова с чертовыми нубскими вопросами :(
Сначала немного предыстории: прежде чем написать свое первое оконное "приложение", думал, что же лучше, юзать конструктор windows forms из M$VS или писать на чистом Windows API. Остановился на втором. Изучал тонны манов, прежде чем получить заветное окно после нажатия f5(вообщем, каждую строку кода в своей программе объяснить смогу, хотя рвал из разных источников куски) :)
В итоге получил что-то вроде этого (http://www.functionx.com/win32/Lesson05.htm) (самый первый сорец; до слов Windows Messages
Window Creation).
Теперь возникает интерес, какие api-функции можно заюзать для "связи" моего кода (напомню, недавно вышел из консоли) и, например, текстбокса на форме, т.е. в текстбокс положить, допустим, значение переменной.
Не обязательно сорец, можно просто названия, примеры сам найду.
http://msdn.microsoft.com/en-us/library/bb773173%28VS.85%29.aspx
Почему строка "Again? y/n" выводится дважды и откуда в переменной gt лежит перевод строки ? =D
#include <stdio.h>
main()
{
char gt='0';
while(gt!='n')
{
printf("Again? y/n\n");
scanf("%c", >);
}
return 0;
}
Почему строка "Again? y/n" выводится дважды и откуда в переменной gt лежит перевод строки ? =D
#include <stdio.h>
main()
{
char gt='0';
while(gt!='n')
{
printf("Again? y/n\n");
scanf("%c", >);
}
return 0;
}
У меня выводится один раз.
После функции scanf() автоматом осуществляется переход на следующую строку.
Ну мы на двух разных компах запускаем на одном Borland С++, на втором MSVisual Studio оба выводят строку два раза *WALL*
Ну... Это как бэ прога прикол :) Вот код:
#include <iostream>
#include <cstdio>
using namespace std;
int ifansn()
{
cout << "You don't want to download and install upgrade.\n";
cout << "Exiting...";
return 0;
}
int ifansn2()
{
cout << "#Installation canceled by user\n";
cout << "#Exiting...";
return 0;
}
int ifansy2()
{
char* nothing;
cout << "#Updates installing...\n";
cout << "#.......30%";
cout << "#................50%";
cout << "#.................................100%";
cout << "#Great! Update installed, need reboot!";
cin >> nothing;
}
int ifansy()
{
char* otv2;
cout << "#Great! Wait, while update downloading...\n";
cout << "#...";
cout << "............50%";
cout << "....................86%";
cout << "........................100%\n";
cout << "#Update download! You want to install it?\n";
cout << "#Y or N\n";
cout << "#";
cin >> otv2;
if((otv2="Y") || (otv2="y"))
{
ifansy2();
}
if((otv2="N") || (otv2="n"))
{
ifansn2();
}
}
int main()
{
bool prov;
char* otv;
cout << "#Welcome to updater of DoubleOS\n";
cout << "#If you want update OS to version 5.1.5\n";
cout << "#Press Y, then press Enter\n";
tochka: cout << "#If you don't want install update, press N, then Enter\n";
cout << "#";
cin >> otv;
if((otv="Y") ||(otv="y"))
{
prov=true;
}
else if((otv="N") ||(otv="n"))
{
prov=false;
}
if(prov=true)
{
ifansy();
}
else if(prov=false)
{
ifansn();
}
else
{
cout << "I don't know this command!";
goto tochka;
}
return 0;
}
Про goto можете не говорить :)
rankor777
20.02.2010, 00:46
На govnokod.ru тянет ;)
И все же, почему не робит?) Что не так?
BastardFromHell
20.02.2010, 02:05
if((otv2="Y") || (otv2="y"))
ты не сравниваешь, а присваиваешь. Дальше не смотрел. Какой-то бред вообще
char* otv;
...
cin >> otv;
это не так
if((otv2="Y") || (otv2="y"))
ты не сравниваешь, а присваиваешь. Дальше не смотрел. Какой-то бред вообще
Почему? Разве оператор || это не ИЛИ?
char* otv;
...
cin >> otv;
это не так
А как надо?
Почему? Разве оператор || это не ИЛИ?
перепиши свой код так.
if(("Y" = otv2) || ("y" = otv2))
и скомпиль.
Выдает "untitled2.cpp": E2277 Lvalue required in function main() at line 60
BastardFromHell
20.02.2010, 02:34
ты язык знаешь или просто копипастишь? = это присвоить, == это сравнение. массив чар создавай char array[31337]
та не сравнивают строки простым оператором ==. я просто показал его косяк - он не сравнивает вообще, а приравнивает указатель на строку.
Double2
уже который раз я это пишу в этом топике - читай книги или не трогай c++. зря время потратишь.
BastardFromHell
20.02.2010, 03:56
та не сравнивают строки простым оператором ==. я просто показал его косяк - он не сравнивает вообще, а приравнивает указатель на строку.
Double2
уже который раз я это пишу в этом топике - читай книги или не трогай c++. зря время потратишь.
if (char a='a' == 'a') cout << "tadam!!!";
я думал там как-то так сравнивается, я просто весь сурс не читал, первое что в глаза бросилось.
raven314
20.02.2010, 11:10
на языке С++ можно писать программы для процессоры AVR и прошивать их в дальнейшем ?
или я чтото неправильно понял, разбирая работы процессоров\программаторо \языков?
rankor777
20.02.2010, 11:29
Можно, Гуглим (http://www.google.ru/search?hl=ru&newwindow=1&rlz=1C1GGLS_ruRU364RU365&q=c%2B%2B+avr&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=&aq=f&oq=)
BastardFromHell
char сравнивается так, но в вопросе char*. а с ним такое не канает.
100DEADRABBITS
20.02.2010, 20:17
С++visual 2008 подскажите плиз в компоненте webBrawser1 какое свойство можно назначить чтобы программно textBox1 ->text отвечал за посты в чате на narod.ru
немогу понять как сделать чтобы можно было отправлять сообщение с textBox по клику button прямо в чат . Спасибо
StriplOol
20.02.2010, 23:38
Здравствуйте,
Есть клиент исходников которого нет, необходимо чтобы программа которую я напишу изменяла/добавляла пакет отправляемый клиентом на сервер, хотелось бы услышать как примерно это реализуется и если знаете то какие-нибудь гайды.
заранее благодарю.
Chubakur
20.02.2010, 23:48
Здравствуйте,
Есть клиент исходников которого нет, необходимо чтобы программа которую я напишу изменяла/добавляла пакет отправляемый клиентом на сервер, хотелось бы услышать как примерно это реализуется и если знаете то какие-нибудь гайды.
заранее благодарю.
Если нет исходных кодов, то реверсинг. Брать в руки отладчик типа OllyDebugger, и может сможешь что-нибудь накопать. Кстати, разделом ты ошибся.
Rio-de-Janeiro
21.02.2010, 01:19
Здравствуйте.
Почему вот это чудо не хочет компилироваться в консоли Qt?
#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc,argv);
QLabel *label = new QLabel("Hello World!");
label ->show();
return app.exec();
}
Пишет много чего:
http://gyazo.com/4f42def4cb8c56930a7207026843a24a.png
Версия Qt Creator 1.3.0
Пример честно полностью взят из учебника.
Vanterlog
21.02.2010, 04:46
Как на visual с++ отбросить десятки
пример: от 64 - получаем 4
BastardFromHell
21.02.2010, 04:49
%10;
Можно ли как-то управлять форматом вывода используя функцию cout?
Например есть число 2.535 надо вывести его с одинарной точностью(2.5).
Если использовать printf(), то понятно как, нужно именно cout.
_iks_
http://www.cplusplus.com/reference/iostream/manipulators/setprecision/
Rio-de-Janeiro
а в книжке точно именно такой командой компилят?
Rio-de-Janeiro
21.02.2010, 13:42
Rio-de-Janeiro
а в книжке точно именно такой командой компилят?
Нет, компилят не так, это я что-то под ночь так...
Но все равно не получается скомпилировать. Делаю по порядку:
1.Создаю файл исходников(hello.cpp) и наполняю его.
2.Создаю папку для проекта(hello)
3.Далее пишу qmake -project, создаются файлы проекта(hello.pro)
4.Далее пишу qmake hello.pro, создается файл makefile
5.Далее по книжке надо выполнить команду make, но у меня такой команды не существует...
значит у тебя не установлен mingw.
Rio-de-Janeiro
21.02.2010, 14:06
значит у тебя не установлен mingw.
Да вот он вроде вместе с Qt сам ставился...
Ладно, сейчас все по-человечески вручную установлю.
UPD:
В общем все переустановил, установил...
Теперь команда make работает, но при компиляции выходит ошибка:
http://gyazo.com/341051055ecbade948bc15eebab9c1d0.png
Может быть из-за разницы версий? Пример дан для версии 4.1, у меня 4.6. Хотя по-идеи проблем не должно быть, но может кто-нибудь написать какой-нибудь 100 % компилируемый код, чтобы я проверил...
для начала попробуй использовать QtCreator. Там не требуется никаких консолей, все как в обычной IDE. Если не скомпилится - значит опять замуты с установкой.
Таких ошибок не встречал, так что хз что подсказать. Код вроде итак 100% компилируемый.
Rio-de-Janeiro
21.02.2010, 17:37
В QtCreator тоже не компилируется...
Запускается: c:/qt/4.6.2/bin/qmake.exe C:/[здесь путь]test.pro -spec win32-g++ -r
Cannot find file: C:\[здесь путь]\test.pro.// Хотя файл там есть!
Завершено с кодом 2.
Ошибка во время сборки проекта test
Во время выполнения сборки на этапе 'QMake
Путь к проекту не содержит пробелов?
Rio-de-Janeiro
21.02.2010, 17:52
Путь к проекту не содержит пробелов?
Содержал... Блин, а я ринулся и уже все удалил :D
Скачал версию 4.4.1 и ее думаю поставить...
Вот сейчас ставиться, посмотрим, хотя это уже бред...
Rio-de-Janeiro
21.02.2010, 18:12
Ну в общем поставил версию 4.4.1, все равно пишет ту же ошибку, только перед ней больше текста намного мелькает.
пути, куда установил mingw, qt, проект. проверь так же переменные среды. ну и полный лог ошибки давай сюда.
и собсно какую версию qt ставишь? mingw, vs, или sdk.
Rio-de-Janeiro
21.02.2010, 18:49
Версия Qt mingw(но с самого начала ставил сдк и проблема та же)
Пути:
qt - C:\DevTools\Qt
mingw- C:\DevTools\MinGW
проект - C:\DevTools\test
В переменные среды прописал, как положено: C:\DevTools\MinGW\bin
Полный лог... Он огромен, как его с консоли скопировать? Если скрином, то скрина 3-4 надо.
Сейчас попробую IDE поставить QtCreator и вновь скомпилировать проект.
чтобы копировать консоль - левой кнопкой давишь иконку в левом верхнем углу окна, там где C:\_ -> Edit -> Mark -> дальше выделяешь область мышкой и жмешь в ней правой кнопкой - выделение слетает и текст попадает в буфер обмена. Либо Select All и так же правой кнопкой на выделенной части.
Rio-de-Janeiro
21.02.2010, 19:12
Там в общем ооочень много текста, так что даже не поместилось все в самой консоли.
Мне удалось попытаться скомпилировать код в IDE, но вылезло 6 ошибок:
http://gyazo.com/1ff9abd1d698efb9937d39df18f115a7.png
в настройках криейтора кьют указан?
Знакомые ошибки, только не помню, как я их починил. В данном случае у тебя не видится Qt компилеру.
В переменных окружения путь до qt задан?
Rio-de-Janeiro
21.02.2010, 19:22
в настройках криейтора кьют указан?
Знакомые ошибки, только не помню, как я их починил. В данном случае у тебя не видится Qt компилеру.
В переменных окружения путь до qt задан?
В настройках путь указал, а вот в переменных средах нет, сейчас попробую
Rio-de-Janeiro
21.02.2010, 19:30
Прописал путь до основной папки Qt, то же самое... В общем, никак.
QTDIR = C:\Qt\2009.05\qt
внутри лежит configure.exe
Rio-de-Janeiro
21.02.2010, 19:53
Это переменную создать? Если да, то не помогло.
П.С. Мб гоу в аську? 248465
Люди добрые покажите простой пример чтение функцией ReadFile текстового файла для дальнейшего вывода этого текста в MessageBox
agrofyl2
22.02.2010, 00:28
помогите пожалуйста
Нужно поверх всех окон написать большими буквами текст.
Ну а потом убрать.
Приложение Win 32
BastardFromHell
22.02.2010, 00:32
google GDI
agrofyl2
22.02.2010, 01:03
Мне бы функцию чтоли... Я новичок сам врядли разберусь.
BastardFromHell
22.02.2010, 02:18
Мне бы функцию чтоли... Я новичок сам врядли разберусь.
http://www.rsdn.ru/forum/winapi/3551012.flat.aspx
но принцип примерно такой :)
#include <windows.h>
#include <stdio.h>
extern "C" WINBASEAPI HWND WINAPI GetConsoleWindow ();
int main()
{
HWND hWindow = NULL; // дескриптор окна
HDC hDeviceContext; // контекст устройства
HPEN hPen; // дескриптор пера
HGDIOBJ hObject; // дескриптор GDI объекта
// получаем дескриптор окна
hWindow = GetConsoleWindow();
if (hWindow == NULL)
{
printf("Get console window failed.\n");
return 1;
}
else
printf("Cet console window is done.\n");
// получаем контекст устройства
hDeviceContext = GetDC(hWindow);
// создаем перо
hPen = CreatePen(PS_SOLID, 10, RGB(0, 255, 0));
// устанавливает перо
hObject = SelectObject(hDeviceContext, hPen);
// рисуем x
MoveToEx(hDeviceContext, 100, 200, NULL);
LineTo(hDeviceContext, 200, 100);
MoveToEx(hDeviceContext, 200, 200, NULL);
LineTo(hDeviceContext, 100, 100);
//y
MoveToEx(hDeviceContext, 300, 200, NULL);
LineTo(hDeviceContext, 400, 100);
MoveToEx(hDeviceContext, 300, 100, NULL);
LineTo(hDeviceContext, 350, 150);
//й
MoveToEx(hDeviceContext, 500, 100, NULL);
LineTo(hDeviceContext, 500, 200);
LineTo(hDeviceContext, 600, 100);
LineTo(hDeviceContext, 600, 200);
MoveToEx(hDeviceContext, 540, 50, NULL);
LineTo(hDeviceContext, 560, 70);
LineTo(hDeviceContext, 580, 50);
// востанавливает старый объект
SelectObject(hDeviceContext, hObject);
// освобождаем объекты
DeleteObject(hPen);
ReleaseDC(hWindow, hDeviceContext);
return 0;
}
raven314
22.02.2010, 08:37
ребят, с+/ подойдет для использования его в процессе программирования микросхем авр\пик ? или все же мне за ассемблер садиться ?
agrofyl2
22.02.2010, 13:25
BastardFromHell спасибо
Если кому надо вот что я накопал
void Draww(const char *string) {
LOGFONT lf;
HFONT hf;
HDC hDeviceContext; // контекст устройства
//HPEN hPen; // дескриптор пера
HGDIOBJ old; // дескриптор GDI объекта
// получаем контекст устройства (0 - hwid рабочего стола)
hDeviceContext = GetDC(0);
RtlZeroMemory(&lf, sizeof(lf));
lstrcpyA(lf.lfFaceName, "Arial");
lf.lfHeight = 42;
lf.lfWeight = FW_NORMAL;
lf.lfCharSet = RUSSIAN_CHARSET;
hf = CreateFontIndirect(&lf);
old = SelectObject(hDeviceContext, hf);
RECT rectt;
SetRect(&rectt, 0, 0, 1024, 768);
HANDLE h=CreateEvent(0, true, false, "et");
DrawText(hDeviceContext, string, -1, &rectt, DT_LEFT);
WaitForSingleObject(h,1000);
// востанавливает старый объект
SelectObject(hDeviceContext, old);
// освобождаем объекты
DeleteObject(hf);
ReleaseDC(0, hDeviceContext);
}
Функция просто выводит текст на экран в левом верхнем углу.
Только смотрите там строчка SetRect(&rectt, 0, 0, 1024, 768) экрано-зависимая, если надо то исправьте сами.
как обстоят дела в windows 7 с сырыми сокетами? Можно как-то завести их?
BastardFromHell
22.02.2010, 15:55
сейчас хотел длинну массвива посчитать, чёт не вышло -
#include <cstdio>
#include <stddef.h>
int main(void)
{
ptrdiff_t diff;
int array[50];
for(int i = 0; i<50; i++)
{
array[i]=i+1;
}
printf("first: %d, last: %d, firstptr: %p lastptr: %p\n",array[0], array[49], array, &array[49] );
diff = &array[49] - &array[0];
printf("arraysize is: %d , diff: %p, sizeof(int): %d", diff/sizeof(int), diff, sizeof(int));
return 0;
}
вывод:
D:\dmc\bin>array_length.exe
first: 1, last: 50, firstptr: 0012FE7C lastptr: 0012FF40
arraysize is: 12 , diff: 00000031, sizeof(int): 4
гдё я туплю?
похожу тут
diff/sizeof(int)
BastardFromHell
22.02.2010, 17:53
как обстоят дела в windows 7 с сырыми сокетами? Можно как-то завести их?
Limitations on Raw Sockets
On Windows 7, Windows Server 2008 R2, Windows Vista, and Windows XP with Service Pack 2 (SP2), the ability to send traffic over raw sockets has been restricted in several ways:
TCP data cannot be sent over raw sockets.
UDP datagrams with an invalid source address cannot be sent over raw sockets. The IP source address for any outgoing UDP datagram must exist on a network interface or the datagram is dropped. This change was made to limit the ability of malicious code to create distributed denial-of-service attacks and limits the ability to send spoofed packets (TCP/IP packets with a forged source IP address).
A call to the bind function with a raw socket is not allowed.
ты гуглить не умеешь чтоли?
сурс - http://msdn.microsoft.com/en-us/library/ms740548(VS.85).aspx
BastardFromHell
22.02.2010, 19:00
похожу тут
diff/sizeof(int)
а ну вот, да
разница между двумя указателями на int - это уже смещение, кратное int - отсюда получается 49, а не 49/4
Limitations on Raw Sockets
On Windows 7, Windows Server 2008 R2, Windows Vista, and Windows XP with Service Pack 2 (SP2), the ability to send traffic over raw sockets has been restricted in several ways:
TCP data cannot be sent over raw sockets.
UDP datagrams with an invalid source address cannot be sent over raw sockets. The IP source address for any outgoing UDP datagram must exist on a network interface or the datagram is dropped. This change was made to limit the ability of malicious code to create distributed denial-of-service attacks and limits the ability to send spoofed packets (TCP/IP packets with a forged source IP address).
A call to the bind function with a raw socket is not allowed.
ты гуглить не умеешь чтоли?
сурс - http://msdn.microsoft.com/en-us/library/ms740548(VS.85).aspx
собственно это я уже находил, и ошибка оказалась совсем не в функции socket(). Спасибо
BastardFromHell
22.02.2010, 20:01
собственно это я уже находил, и ошибка оказалась совсем не в функции socket(). Спасибо
а где? Мне тож интересно
Lihosvet
23.02.2010, 06:41
Скажите пожалуйстакак сделать программу которая открывает сайт, заполняет поля, и нажимает на кнопку :)
Dark_Scorpicore
23.02.2010, 17:02
Скажите пожалуйстакак сделать программу которая открывает сайт, заполняет поля, и нажимает на кнопку :)
Мне кажется, Вы чуть-чуть ошиблись топиком :) Разработка, описанная таким образом, близка к какому-нибудь autoit или autohotkey.
А вообще, сначала нужно отловить пакетики, которые шлются при нажатии на кнопку, потом курлом или сокетами отправлять запросы эти с нужными параметрами.
zeppe1in
26.02.2010, 17:02
очищаем буфер
что круче?)
char buf[128];
char s = 0;
memset(buf,0,128);
или
strncpy(buf,&s,128);
Hiro Protagonist
26.02.2010, 17:59
лол, какбэ второй вариант не работоспособен))
memset опитимизированна и заполняет память блоками размером с битность системы(по крайней мере на 32 битной юзается копирование по 32 бита за шаг)
749EB37F rep stos dword ptr es:[edi]
strcpy копирует по одному байту.
transserg
26.02.2010, 19:02
привет всем =) кто какую библиотеку с регулярками для С++ юзает? PCRE, Boost?
и если можно пример использования..
Среда VS2008
zeppe1in
27.02.2010, 02:19
Hiro Protagonist
работает, попробуй.
Ra$cal
ок спасибо.
просто в одной вражеской программе (как я понял) используется именно strncpy для заполнения нулями.
я подумал может так модно или чо).
а может RtlZeroMemory круче всех?)
и ещо вопрос.
вот пишет Крис
По умолчанию Си-программы собираются вместе с библиотекой времени исполнения (она же RTL), занимающий до черта килобайт и обеспечивающий работу функций типа spritnf. но ведь Windows NT уже включает в себя RTL, реализованную в NTDLL.DLL, так зачем же нам еще одна?
если я собираю программу в VS08, указываю точку входа, то что я теряю? я не смогу юзать некоторые функции?
Hiro Protagonist
27.02.2010, 04:21
2zeppe1in
>> Если длина строки src меньше len, то буфер добивается до len нулями.
да, про такое поведение strncpy я забыл ))
Какбэ рантайм обеспечивает некоторые механизмы, без которых не обойтись если хочешь использовать libc (поддержку потоков, глобальные переменные, вызов конструктуров-десктрукторов, ну и тд)
для полного избавление от crt надо ещё отключать линк mscrt.lib (NODEFAULTLIB).
Крис там немного не точен. Все таки если не выдирать заголовочные файлы и либы из ddk, то ntdll работать несколько неудобно, хотя в случае натива выбора немного ). часть libc продублировано с системных длл kernel32.dll (lstrcpy, lstrcat ...), advapi32.dll (wsprintf ...), shlwapi.dll (StrStr, MemoryCopy, ...) и тд, те все базовые функции, которые в основном нужны по работе со строками и тд.
Люди добрые есть маленький вопрос , есть ли у функции wsprintf какие нибудь ограничение , немогу форматировать строку когда один из поинтеров большого размера... Если есть ограничение как в данном случае быть ?
hi2all people, народ подскажите в С++ буилдер в редакторе кода на руском можно писать ? а то вири потрепали ПО а перебивать жалко..., 4 года назад помнится писал вот тока непомню толи в delphi то ли С++ буилдер, пишу там [ авыф (норм пишется) ] а [ олдж ( ои№ж) ], настройки уже досканально изучил бестолку
qwert135
01.03.2010, 22:41
Всем привет.Народ,что означает ошибка "Redeclaration of std::ifstream in" и как с ней бороться.Я открыл один файл для чтения,считал все что нужно,закрыл его.Стал открывать второй и выскочила эта ошибка.Спасибо за помощь.
Всем привет.Народ,что означает ошибка "Redeclaration of std::ifstream in" и как с ней бороться.Я открыл один файл для чтения,считал все что нужно,закрыл его.Стал открывать второй и выскочила эта ошибка.Спасибо за помощь.
Код в студию, пожалуйста.
Mochnatiy
02.03.2010, 08:44
Люди добрые есть маленький вопрос , есть ли у функции wsprintf какие нибудь ограничение , немогу форматировать строку когда один из поинтеров большого размера... Если есть ограничение как в данном случае быть ?
Нету. Скорее всего в коде ошибка. Код в студию
Mochnatiy
02.03.2010, 08:45
Ну и я сам столкнулся с задачей:
Как можно программно определить наличие/конфигурацию прокси сервера, фаервола в сети, а также конфигурацию самой сети (с доменами или без)?
Спасибо.
qwert135
02.03.2010, 10:44
Вот код: #include <iostream.h>
#include <math.h>
#include <stdio.h>
#include <fstream.h>
//приведение коэффициентов матрицы А, лежащих на главной диагонали
//к ненулевым,если приведение успешно функция возвращает значение true
int Diagonal(double **A, double *B, int column, int NumberOfEquation) {
int result = 0;
int i, row = column;
double replace;
if(column == NumberOfEquation - 1) {
result = A[column][column] != 0;
}
else {
while(!result && row < NumberOfEquation) {
if(A[row][column] != 0) {
if(row != column) {
for(i=0;i < NumberOfEquation;i++) {
replace = A[column][i];
A[column][i] = A[row][i];
A[row][i] = replace;
}
replace = B[column];
B[column] = B[row];
B[row] = replace;
}
result = Diagonal(A, B, column + 1, NumberOfEquation);
if(result) {
break;
}
qwert135
02.03.2010, 10:48
}
row++;
}
}
return result;
}
//если коэффициенты матрицы на главной диагонали не равны 0, то
//приступаем к решению СЛАУ методом простых итераций
int SimpleIteration(double **A, double *B, int NumberOfEquation, double *solution, double fault_input) {
int result;
int i, j, step = 1;
double *TempSolution;
TempSolution = new double[NumberOfEquation];
result = Diagonal(A, B, 0, NumberOfEquation);
if(result) {
double fault = fault_input + 1;
for(i=0;i < NumberOfEquation;i++) {
for(j=0;j < NumberOfEquation;j++) {
if(i != j) {
A[i][j] = -A[i][j] / A[i][i];
}
}
B[i] = B[i] / A[i][i];
A[i][i] = 0;
}
//первое приближенное значение вектора неизвестных
for(i=0;i < NumberOfEquation;i++) {
solution[i] = B[i];
}
//пока не найдется решение с заданной точностью или не исчерпается лимит шагов
while(fault > fault_input && step <= 1000) {
qwert135
02.03.2010, 10:50
for(j=0;j < NumberOfEquation;j++) {
TempSolution[j] = 0;
}
for(i=0;i < NumberOfEquation;i++) {
for(j=0;j < NumberOfEquation;j++) {
TempSolution[i] = TempSolution[i] + A[i][j]*solution[j];
}
TempSolution[i] = TempSolution[i] + B[i];
}
//расчет погрешности
fault = 0.0;
for(j=0;j < NumberOfEquation;j++) {
fault = fault + (solution[j] - TempSolution[j])*(solution[j] - TempSolution[j]);
}
fault = sqrt(fault);
//сохранение последующих приближенных значений неизвестных
for(j=0;j < NumberOfEquation;j++) {
solution[j] = TempSolution[j];
}
step++;
}
}
return step;
}
void DOS_input_output() {
int i, j;
int size;
double **A, *B, *solution, fault_input;
cout << "Решение СЛАУ методом простых итераций.\n";
cout << "Введите размерность матрицы: ";
cin >> size;
A = new double*[size];
qwert135
02.03.2010, 10:51
for(i=0;i < size;i++) {
A[i] = new double[size];
}
B = new double[size];
solution = new double[size];
for(i=0;i < size;i++) {
cout << "Введите " << i + 1 << " строку матрицы А: ";
for(j=0;j < size;j++) {
cin >> A[i][j];
}
}
cout << "Введите вектор В: ";
for(j=0;j < size;j++) {
cin >> B[j];
}
cout << "Введите точность вычислений: ";
cin >> fault_input;
int steps = SimpleIteration(A, B, size, solution, fault_input);
if(steps > 1000) {
cout << "Слишком большое количество итераций.";
}
else {
cout << "Решение системы:\n";
for(j=0;j < size;j++) {
cout << solution[j] << "\n";
}
cout << "Количество итераций: " << steps;
}
delete []A;
delete []A[i];
delete []B;
delete []solution;
}
int main() {
DOS_input_output();
getchar();
return 0;
}
emillord
02.03.2010, 10:56
qwert135Извини конечно,но нельзя всё затолкнуть под тег code?? Вот так наверно удобнее будет
qwert135
02.03.2010, 10:59
Плиз,помогите написать функцию,которая бы делала тоже самое что и dos_input_output,но только чтобы вместо ввода с клавиатуры и вывода результата на экран; матрица А и вектор В считывались бы из одного текстового файла,а результат выводился в другой текстовый файл.Спасибо.
qwert135
02.03.2010, 11:02
Извините что так написал,просто я с телефона:).Если я тег начинаю использовать меня потом из моей учетки выкидывает и приходиться заново входить и так без конца
Mochnatiy
02.03.2010, 11:30
const char* szFileName = "MyFile";
char texttowrite[64]; // инициализируешь массив значением
FILE file = fopen(szFileName, "a");
if(file != NULL)
{
fwrite(texttowrite, sizeof(char), strlen(texttowrite), file);
fclose(file);
}
читать функцией fread().
Можно использовать класс ofstream из fstream.h
ifstream input("file.in")
ofstream output("file.out")
input >>
output <<
qwert135
Я не вижу ifstream in в том коде, что выше. Ты привел код, который вызывал ошибку или уже что-то исправил?
qwert135
02.03.2010, 15:39
Приведенный мою код без ошибок и правильно работает.Я не знаю только как сделать файловый ввод/вывод.В текстовом файле должна быть введена расширенная матрица.Из нее надо взять матрицу А и вектор В, и записать ответ в другой текстовый файл.
Продумай формат хранения информации и прочитай пост #4927.
Если будут ошибки по файловым потокам, запость код, как ты их создаешь и обращаешься к ним, весь код проекта не нужен.
qwert135
02.03.2010, 17:54
Да то что написано в том посте я знаю.Я другое понять не могу:вот пользователь ввел расширенную матрицу,прога должна считать из файла все столбцы кроме последнего и присвоить их матрице А;а последний столбец должен быть присвоен вектору В;и надо подсчитать кол-во строк в файле.А вот как это запрогить я уже не знаю:(
Попробуй использовать CSV.
http://ru.wikipedia.org/wiki/CSV
qwert135
02.03.2010, 21:11
#include <iostream.h>
#include <fstream.h>
#include <new.h>
int main() {
int str, i, j;
char ch;
int **a;
ifstream in("1.txt");
str = 1;
if(in) {
while(in.get(ch)) {
if(ch == '\n') {
str++;
}
}
}
a = new int*[str];
for(i=0;i < str;i++) {
a[i] = new int[str];
}
in >> a[i][j];
in.close();
for(i=0;i < str;i++) {
for(j=0;j < str;j++) {
cout << a[i][j] << " ";
}
cout << "\n";
}
cout << str;
delete []a;
delete []a[i];
return 0;
} вопрос собственно следующий: почему вместо массива находящегося в файле прога выводит на экран массив с совсем другими числами и при каждом запуске проги эти числа меняются
вопрос собственно следующий: почему вместо массива находящегося в файле прога выводит на экран массив с совсем другими числами и при каждом запуске проги эти числа меняются
В следующий раз оформи код тегом [*php] или [*code](звездочки не нужны) и оставь пару комментариев, бо читать очень трудно.
Теперь по делу. Мне кажется, ты напутал что-то с указателями. Ты обращаешься к памяти по неправильному адресу, по этому адресу уже что-то лежит и ты его считываешь.
Если оформишь все нормально, я постараюсь разобраться лучше.
Скажите пожалуйста где достать компилятор С
Вообщем компилятор я нашол в Убунту но стоит мне скомпилировать что-то и запустить как пишет Pemisison Denied кто знает в чём проблема
Вообщем компилятор я нашол в Убунту но стоит мне скомпилировать что-то и запустить как пишет Pemisison Denied кто знает в чём проблема
А ты из под рута запускай или чмодни файл
sudo a.out
или
chmod a+x a.out для выдачи прав.
a.out - Название скомпилированного бинарника.
sudo a.out
или
chmod a+x a.out для выдачи прав.
a.out - Название скомпилированного бинарника.
ни хера не происходит
лог консоли и ls -l в студию
Я не телепат. Логи с консоли запость в тему. и вывод команды ls -l.
-rwxr-xr-x 1 root root 58 2010-03-03 00:49 1
-rw-r--r-- 1 root root 19059 2010-03-03 00:53 2.c
-rw-r--r-- 1 root root 9592 2010-03-03 00:53 2.o
-rwxr-xr-x 1 root root 19059 2010-03-03 01:07 Untitled2
drwxr-xr-x 2 root root 4096 2010-03-01 22:49 Видео
drwxr-xr-x 2 root root 4096 2010-03-01 22:49 Документы
drwxr-xr-x 2 root root 4096 2010-03-03 00:44 Загрузки
drwxr-xr-x 2 root root 4096 2010-03-01 22:49 Картинки
drwxr-xr-x 2 root root 4096 2010-03-01 22:49 Музыка
drwxr-xr-x 2 root root 4096 2010-03-01 22:49 Общедоступные
drwxr-xr-x 3 root root 4096 2010-03-03 01:33 Рабочий стол
drwxr-xr-x 2 root root 4096 2010-03-01 22:49 Шаблоны
Я правильно понял, что ты пытаешься запустить Untitled2?
ради интереса сделай chmod 777 Untitled2. Затем ./Untitled 2
Кстати, а что ты компилировал?
простую програмку
#include <iostream>
int main()
{
std::cout<<"hello";
}
Опять команда выполняется но ничё не возвращает
Если запускаешь из под рута и такой код, то он должен выполниться, это наверняка. Не знаю, что ты делаешь неправильно.
вот и я не пойму что я не правильно делаю захожу из под роота в консоли прописываю то что ты мне написал команда выполняется но результата не возвращает
qwert135
03.03.2010, 10:33
#include <iostream.h>
#include <fstream.h>
#include <new.h>
int main() {
int i, j;
int str;//переменная счетчик
char ch;
int **t;
ifstream in("1.txt");//открываю файл для чтения
str = 1;
if(in) { //вычисляем
while(in.get(ch)) { //количество
if(ch == '\n') { //строк
str++; //в открытом файле для того
} //чтобы узнать
} //размерность
} //квадратной матрицы
t = new int*[str]; //выделяю память
for(i=0;i < str;i++) { //для
t[i] = new int[str]; //матрицы
}
in >> t[i][j]; //считываю матрицу из файла
in.close();
for(i=0;i < str;i++) { //вывожу
for(j=0;j < str;j++) { //на
cout << t[i][j] << " "; //экран
} //матрицу
cout << "\n"; //считанную
} //из файла
qwert135
03.03.2010, 10:36
cout << str;
delete []t;
delete []t[i];
return 0;
}
еще раз сори что так вывожу код,так как телефон не может больше 1000 символов отправить.Комментарии написал как ты просил
Вот так гораздо лучше!
ifstream in("1.txt");//открываю файл для чтения
str = 1;
if(in) { //вычисляем
while(in.get(ch)) { //количество
if(ch == '\n') { //строк
str++; //в открытом файле для того
Я не уверен, что файл изначально не пуст. + по твоей логике счетчик показывает на одну строку больше. Вот к примеру.
Вот пример файла
123
456
789
В начала str=1. Считываем тройку - уже 2. И так далее. В итоге счетчик строк показывает 4.
t = new int*[str]; //выделяю память
Потому ты выделяешь на 1 строку больше, я так вижу.
Далее, что я нашел.
int i, j;
Пишешь ты, видимо, на MS VS 6, которая не знает о областях видимости. И из-за этого получаются ошибки. Чему равно j?
in >> t[j]; //считываю матрицу из файла
Вот здесь ты обращаешься к j, но чему оно равно? Ты пишешь неизвестно куда.
К тому же.
in >> t[j];
Необходимо делать в цикле. За одно такое обращение оператор >> считывает один символ, судя логике. Еще раз посмотри на эту строку. Чему равно i? Оно постоянно одно и тоже значение.
Я вижу в коде утечку памяти. Ты неправильно удаляешь выделенную память.
Вот как нужно (на примере).
for (int i = 0; i<n; i++)
delete [] a[i];
delete [] a;
Dark_Scorpicore
03.03.2010, 14:09
Подскажите, какая функция в winapi чистит окно от текстбоксов, кнопок etc..
upd.
есть вариант закрашивать форму белым цветом, но имхо, изврат, да и память не резиновая
upd.
нарыл функцию DestroyWindow, в принципе, вопрос исчерпан.
Нубский вопрос. Как вывести текст из файла, но без всякиз заморочек. Просто есть txt файл, есть TextBox, надо текст из файла в TexBox записать.
https://forum.antichat.ru/showpost.php?p=1947015&postcount=4927
спасибо
-----------------------
#include "stdafx.h"
#include <fstream>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
char* abc = "0";
ifstream lol;
lol.open ("C:\lol.txt");
lol >> abc;
std::cout << abc;
return 0;
}
Не работает (((
(12) : error C2065: 'ifstream' : undeclared identifier
Ошибка не только в std::ifstream, но и в адресе.
#include "stdafx.h"
#include <fstream>
#include <iostream>
using std::ifstream;
int _tmain(int argc, _TCHAR* argv[])
{
char* abc = "0";
ifstream lol;
lol.open ("C:\\lol.txt");
lol >> abc;
std::cout << abc;
return 0;
}
\\ChaOs//
03.03.2010, 21:24
...
char* abc = "0";
...
Не работает (((
А память кто будет выделять?
char* abc = new char;
*char='0';
ifstream lol;
lol.open ("C:\\lol.txt");
lol >> *abc;
std::cout << *abc;
return 0;
M.W.N.N.
04.03.2010, 00:00
Здравствуйте. Подкиньте пож-та инфо по функцию перехвата нажатий клавиатуры (hook) на чистом си.
Здравствуйте. Подкиньте пож-та инфо по функцию перехвата нажатий клавиатуры (hook) на чистом си.
http://msdn.microsoft.com/en-us/library/ms644990(VS.85).aspx
\\ChaOs//, дело было не в памяти, а в том, что не написал std:: перед ifstream.
Ребят, новая проблема:
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MessageBox(NULL,"Hello, Win32 world!","Hello from Message Box",MB_OK);
return 0;
}
Ошибка:
error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [20]' to 'LPCWSTR' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
\\ChaOs//, дело было не в памяти, а в том, что не написал std:: перед ifstream.
Ребят, новая проблема:
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MessageBox(NULL,"Hello, Win32 world!","Hello from Message Box",MB_OK);
return 0;
}
Ошибка:
error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [20]' to 'LPCWSTR' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
MessageBox(NULL, L"Hello, Win32 world!", L"Hello from Message Box", MB_OK);
return 0;
}
з.ы. неужели так сложно зайти в гугл?
если есть ачат, зачем юзать гугл ))) сэнк за помощь
qwert135
06.03.2010, 20:26
Как скопировать содержимое текстового файла в нетипизированный
BrainDeaD
06.03.2010, 20:33
как и любой другой. чрез файл стрим в с# и вообще .net. не знаю на каком языке ты прогаешь.
qwert135
06.03.2010, 21:05
На с++.Можешь пример привести?А то я в работе с файлами вообще ни бум бум:)
BrainDeaD
06.03.2010, 21:12
пример для тхт и бинарника
http://www.cplusplus.com/doc/tutorial/files/
M.W.N.N.
07.03.2010, 22:56
Здравствуйте.
Такая проблема:
Вот пример клиента и сервера на чистом си с tcp
Сервер:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(void)
{
#define sHELLO "123"
struct sockaddr_in stSockAddr;
int i32SocketFD = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if(-1 == i32SocketFD)
{
perror("Ne mogy sozdat socket");
exit(EXIT_FAILURE);
}
memset(&stSockAddr, 0, sizeof(stSockAddr));
stSockAddr.sin_family = PF_INET;
stSockAddr.sin_port = htons(1111);
stSockAddr.sin_addr.s_addr = INADDR_ANY;
if(-1 == bind(i32SocketFD,(const void *)&stSockAddr, sizeof(stSockAddr)))
{
perror("Oshibka svazivaniya");
close(i32SocketFD);
exit(EXIT_FAILURE);
}
if(-1 == listen(i32SocketFD, 10))
{
perror("Oshibka proslushivaniya");
close(i32SocketFD);
exit(EXIT_FAILURE);
}
for(;;)
{
int i32ConnectFD = accept(i32SocketFD, NULL, NULL);
if(0 > i32ConnectFD)
{
perror("Oshibka prinatya");
close(i32ConnectFD);
close(i32SocketFD);
exit(EXIT_FAILURE);
}
// отправляем клиенту приветствие
send(i32SocketFD, sHELLO, sizeof(sHELLO), 0);
close(i32ConnectFD);
}
return 0;
}
Клиент
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(void)
{
char sHELLO[20];
struct sockaddr_in stSockAddr;
int i32Res;
int i32SocketFD = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if(-1 == i32SocketFD)
{
perror("Oshibka ne mogy sozdat soket");
exit(EXIT_FAILURE);
}
memset(&stSockAddr, 0, sizeof(stSockAddr));
stSockAddr.sin_family = PF_INET;
stSockAddr.sin_port = htons(1111);
i32Res = inet_pton(PF_INET, "127.0.0.1", &stSockAddr.sin_addr);
if(0 > i32Res)
{
perror("Pervii parametr ne otnositsa k kotegorii nor adresov");
close(i32SocketFD);
exit(EXIT_FAILURE);
}
else if(0 == i32Res)
{
perror("char string (Ne sodergit norm 2 ip");
close(i32SocketFD);
exit(EXIT_FAILURE);
}
if(connect(i32SocketFD, (const void *)&stSockAddr, sizeof(stSockAddr))==-1)
{
perror("oshibka soedineniya");
close(i32SocketFD);
exit(EXIT_FAILURE);
}
close(i32SocketFD);
printf("\n%s\n",sHELLO);
printf("\n");
return 0;
}
Проблемы две:
1)через переменную sHELLO отправляется строка "123" клиенту, но после отправки клиенту приходят вместо 123 - кракозябры.
2)При повторной попытке запустить пишет: Address already in use
В чем могут быть проблемы?
Если кому не сложно и есть время приведите пример самого простого клиент серверного приложения на чистом си с udp
Листинг из вики по udp не полон сервер
Листинги из статьи Криса Касперски не компилятся(компилить пробовал под виндой на dev c++ ибо нету и не будет визуал студии)
phpdreamer
07.03.2010, 23:32
возможно ли узнать какой трек и группа проигрывается в аимп в данный момент?
если да, то как?
возможно ли узнать какой трек и группа проигрывается в аимп в данный момент?
если да, то как?
Да, вот простой пример родного плагина для AIMP на ассемблере (masm32):
aimp_plugin.asm:
.486 ; create 32 bit code
.model flat, stdcall ; 32 bit memory model
option casemap :none ; case sensitive
include \masm32\include\windows.inc
include \masm32\include\masm32.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\macros\macros.asm
include \masm32\macros\windows.asm
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
AIMP_CallBack_Set=12+4 ;(dwCBType: DWORD; Proc: Pointer; User: DWORD): Boolean; stdcall;
AIMP_CallBack_Remove=12+8 ;(dwCBType: DWORD; Proc: Pointer): Boolean; stdcall;
AIMP_Status_Get=12+12 ;(StatusType: DWORD): DWORD; stdcall;
AIMP_PLS_Info=12+32 ;(Index: Integer; out PLSInfo: TPLSInfo)
AIMP_PLS_Count=12+36 ;word
AIMP_GetCurrentTrack=12+60 ; dd ? ;(AInfo: PAIMP2FileInfo): Boolean; stdcall;
AIMP_STS_STREAM_TYPE=39
AIMP_STS_Player=4
AIMP_PLAYER_STATE=11
TAIMP2FileInfo STRUCT
cbSizeOf dd ?
nActive dd ?
nBitRate dd ?
nChannels dd ?
nDuration dd ?
nFileSize dd ?
dd ?
nRating dd ?
nSampleRate dd ?
nTrackID dd ?
nAlbumLen dd ?
nArtistLen dd ?
nDateLen dd ?
nFileNameLen dd ?
nGenreLen dd ?
nTitleLen dd ?
sAlbum dd ?
sArtist dd ?
sDate dd ?
sFileName dd ?
sGenre dd ?
sTitle dd ?
TAIMP2FileInfo ENDS
TPLSInfo STRUCT
PLSName dd ?
FileCount dd ?
PLSDuration dd ?
PLSSize dq ?
PlaylistID dd ?
TPLSInfo ENDS
GetSongName PROTO :DWORD,:DWORD,:DWORD,:DWORD
init2 proto :dword
config proto :dword, :dword
PlayFile proto :dword, :dword
TAIMPAddonHeader STRUCT
Version dd ?
DllInstance dd ?
GetPlgName dd ?
GetAuthor dd ?
Init dd ?
Config dd ?
Free dd ?
TAIMPAddonHeader ENDS
.data
plugin2 TAIMPAddonHeader {0,0,offset get_plugin_name,offset get_author,offset init2,offset config,offset quit}
plugin_name db "Test",0
plugin_author db "(c) dx",0
.data?
hInstance dd ?
FileInfo TAIMP2FileInfo {}
AIMP dd ?
PlayList TPLSInfo <>
.code
LibMain proc instance:DWORD,reason:DWORD,reserved:DWORD
.if reason == DLL_PROCESS_ATTACH
invoke GetModuleHandle,NULL
mov hInstance,eax
mov eax,1
.endif
ret
LibMain ENDP
AIMP_QueryAddon PROC
mov eax,offset plugin2
ret
AIMP_QueryAddon ENDP
get_plugin_name PROC
mov eax,offset plugin_name
ret
get_plugin_name ENDP
get_author PROC
mov eax,offset plugin_author
ret
get_author ENDP
config PROC Handle :DWORD, Win: DWORD
xor eax,eax
ret
config ENDP
init2 PROC, xAIMP :DWORD
m2m AIMP,xAIMP
push 0
push offset PlayFile
push AIMP_PLAYER_STATE
mov eax,AIMP
push eax
mov eax,[eax]
call dword ptr [eax+AIMP_CallBack_Set]
xor eax,eax
ret
init2 ENDP
PlayFile PROC User :DWORD, cType :DWORD
LOCAL stitle [512] :BYTE
LOCAL sartist [512] :BYTE
.if cType!=AIMP_PLAYER_STATE
jmp ext
.endif
push AIMP_STS_Player
mov eax,AIMP
push eax
mov eax,[eax]
call dword ptr [eax+AIMP_Status_Get]
cmp eax,1
jne ext
push AIMP_STS_STREAM_TYPE
mov eax,AIMP
push eax
mov eax,[eax]
call dword ptr [eax+AIMP_Status_Get]
test eax,eax
jne ext
invoke RtlZeroMemory,addr sartist,512
invoke RtlZeroMemory,addr stitle,512
invoke RtlZeroMemory,offset FileInfo,88
mov FileInfo.cbSizeOf,88
lea eax,stitle
mov FileInfo.sTitle,eax
mov FileInfo.nTitleLen,126
lea eax,sartist
mov FileInfo.sArtist,eax
mov FileInfo.nArtistLen,512
push offset FileInfo
mov eax,AIMP
push eax
mov eax,[eax]
call dword ptr [eax+AIMP_GetCurrentTrack]
invoke MessageBoxW,0,addr stitle,addr sartist,0
ext:
xor eax,eax
ret
PlayFile ENDP
quit PROC
xor eax,eax
ret
quit ENDP
end LibMain
aimp_plugin.def:
LIBRARY aimp_plugin
EXPORTS AIMP_QueryAddon
А вообще, в aimp sdk есть простые примеры на дельфи.
phpdreamer
08.03.2010, 00:09
к сожелению, ни асма ни делфи не знаю
мне бы бинарник подошел
http://rapidshare.com/files/360332312/aimp_plugin.dll.html
Не знаю, что конкретно должен делать бинарник, и вообще, нужен он в виде плагина или внешнего exe, этот просто выдает при воспроизведении месаджбокс. Положить его в директорию PlugIns и перезапустить AIMP, либо через меню Плагины загрузить его.
phpdreamer
08.03.2010, 00:27
желательно записывать название трека и группы в файл....
плагин или exe - без разницы
http://slil.ru/28758400
Вот плагин, который создает в папке с плеером файл SONGS.txt и туда пишет названия и исполнителей всех прослушанных песен (в unicode).
M.W.N.N.
08.03.2010, 02:09
Ну так что, ктонить знает ответ на мой вопрос?
Дали же ссылку на msdn на функцию для установки хуков. Вот еще пример на чистом си:
http://msdn.microsoft.com/en-us/library/ms644960%28VS.85%29.aspx
M.W.N.N.
08.03.2010, 02:19
Я про 4971 пост.
За хуки спс большое.
M.W.N.N., чего то я не вижу чтобы в клиенте принимались данные. sHELLO только объявляется и нигде не используется. конечно мусор будет выводится.
M.W.N.N.
08.03.2010, 22:09
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>
#include <stdio.h>
int main() {
struct sockaddr_in server, client={AF_INET,INADDR_ANY,INADDR_ANY};
memset(&server,0,sizeof(server));
server.sin_family=AF_INET;
server.sin_port=htons(1212);
server.sin_addr.s_addr=inet_addr("127.0.0.1");
int sock;
sock=socket(PF_INET,SOCK_DGRAM,0);
bind(sock,(sockaddr *) & client,sizeof(client));
char buf[81];
memset(buf,0,81);
strcpy(buf,"request");
sendto(sock,&buf,strlen(buf),0,(sockaddr *)&server,sizeof(server));
memset(buf,0,81);
recvfrom(sock,buf,80,0,NULL,0);
puts(buf);
return 0;
}
laptop:~/C/tc$ gcc -o udpcl udpcl.c
udpcl.c: In function ‘main’:
udpcl.c:18: error: ‘sockaddr’ undeclared (first use in this function)
udpcl.c:18: error: (Each undeclared identifier is reported only once
udpcl.c:18: error: for each function it appears in.)
udpcl.c:18: error: expected expression before ‘)’ token
udpcl.c:18: error: too few arguments to function ‘bind’
udpcl.c:23: error: expected expression before ‘)’ token
udpcl.c:23: error: too few arguments to function ‘sendto’
Подскажите пож-та в чем проблема?
http://rsdn.ru/article/unix/sockets.xml
zeppe1in
11.03.2010, 01:58
лежит int по смещению 0x56
char* mychar;
int myint=*((int*)&mychar[0x56]); - так работает
(mov dword ptr)
int myint=(int)mychar[0x56]; - так не работает
(movsx byte ptr)
как правильно сделать?
Почему не пашет декодер для функции, шифрующей все данные в файле c
помощью побойтового логического отрицания? вот сам кодер и декодер ниже:
http://pastebin.com/9c1xWBq3
декодер компилится, но валится в сегфолт(
Почему не пашет декодер для функции, шифрующей все данные в файле c
помощью побойтового логического отрицания? вот сам кодер и декодер ниже:
http://pastebin.com/9c1xWBq3
декодер компилится, но валится в сегфолт(
...
main(int argc,const char **argv)//добавить * и const
...
f1 = fopen(argv[1], "r");//убрать &
f2 = fopen(argv[2], "w");//убрать &
...
xismyname
13.03.2010, 19:43
лежит int по смещению 0x56
char* mychar;
int myint=*((int*)&mychar[0x56]); - так работает
(mov dword ptr)
int myint=(int)mychar[0x56]; - так не работает
(movsx byte ptr)
как правильно сделать?
У меня компилятор выдает аналогичную ошибку в обoих случаях - possible usage of mychar before difinition.
0х56 = 86,и какой смысл вытаскивать из памяти что-то,что лежит по адресу mychar[86].
И еще для mychar с начала займи память,с помощью функции malloc(int size)
А так,вслепую в памяти копаться нету смысла.
zeppe1in
13.03.2010, 21:31
xismyname
да не, ты не понял, это я просто для примера написал. понятное дело, что указатель указывает куда надо и там по нужному мне смещению действительно лежит int.
вопрос, как правильно взять int из char* по определённому смещению? или я например могу переделать char* в void* может так будет верней?
*( (int*) ( ( (char*)ptr ) + 0x56) )
другой вариант
struct dummy{
char lalala[55];
int target;
};
dummy* d = (dummy*)ptr;
d->target;
числа мог наврать
Мне нужно чтобы нажимая на кнопку, в Textbox`е стирался последний символ, тоесть сделать аналог клавиши Backspace на клавиатуре. Как это организовать?
fenixelite
14.03.2010, 11:50
String s = "aljfhwfhgc vwiu";
s.Delete(10, 5);//s = "aljfhwfhgc"
fenixelite, спасибо, но, у меня так не получилось.
Получилось так:
String ^abc = "aljfhwfhgc vwiu";
abc = abc->Remove(10,5);
IDE подсказала :-)
-----------------------------------
Еще вопрос. Как узнать количество цифр в числе, которое записанно в переменную int.
Тоесть int a = 1241; //в переменной "а" 4 цифры.
Функция наподобие strlen.
Как в C++ сделать указатель на шаблон функции, да так чтобы через typedef, чтобы потом можно было бы удобно пользовать.
fenixelite
14.03.2010, 18:20
DiHWO, ну в паскале, например, можно реализовать через цикл, брать число и делить его на 1, пока число не будет меньше 10. Ну и посчитать кол-во повторений ^_^
Примерно так
int main()
{
int n;
int pov=0;
cin >> n;
if (n>=10)
{
do
{
n=n/10;
pov++;
}
while (n>=1);
}
else
pov=1;
cout << pov;
return 0;
}
fenixelite, спасибо, идею понял.
Еще вопрос, как в WindowsFormApllication сделать так, чтобы фокус всегда был на textbox`е, и не мог переместиться на кнопки и на форму?
xismyname
14.03.2010, 22:59
fenixelite, спасибо, идею понял.
Еще вопрос, как в WindowsFormApllication сделать так, чтобы фокус всегда был на textbox`е, и не мог переместиться на кнопки и на форму?
Самый элементарный механизм,сделай так чтобы при вызове метода GotFocus у любого другого элемента чтобы автоматически переводил фокус на твой текст бокс.
Например если у тебя на форме одна кнопка и один текст бокс в методе GotFocus() кнопки переводишь сразу фокус на текст бокс,надеюсь понятно.
xismyname, все понятно, спасибо
------------------------------
Наверное, я уже всех задолбал ))), но еще вопрос:
Как убрать каретку из текстбокса и запретить выделение текста в нем?
100DEADRABBITS
16.03.2010, 14:50
как копировать исполняемый файл в директорию ? если можно поподробней )) спасибо
__tp://msdn.microsoft.com/en-us/library/aa363851(VS.85).aspx - Чем
Пример:
char ThisFile[MAX_PATH]; //откуда
char ThatFile[MAX_PATH]; //куда
CopyFile(ThisFile, ThatFile, true);
Всем салют)
У меня не то чтобы вопрос, но. Не мог бы кто-нибудь продемонстрировать как на c++ выглядит вот этот кликер для ютуба (http://depositfiles.com/files/jvv989vng) .
помогите, плз...нужно сделать на MathCADе такое:
Вычислить значение суммы, используя операторы цикла с параметром for и с предпосылкой while.
вот само задание (http://upload.com.ua/get/901476814/)
Хочу начать изучать C++ .. сначала начал читать Джесса Либерти C++ за 21 день.. но проблема в том, что у меня стоит Mandriva.. Проги из книги Д. Либерти не компилятся gcc .. не понимает using namespace std .. и инклуды без .h ..
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!\n";
return 0;
}
gcc first.cpp -o first
first.cpp: In function ‘int main()’:
first.cpp:5: ошибка: нет декларации ‘cout’ в этой области видимости
[andron@localhost ~]$ gedit first.cpp
[andron@localhost ~]$ gcc first.cpp -o first
/home/andron/tmp/ccKkFjBC.o: In function `main':
first.cpp:(.text+0x1c): undefined reference to `std::cout'
first.cpp:(.text+0x21): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/home/andron/tmp/ccKkFjBC.o: In function `__static_initialization_and_destruction_0(int, int)':
first.cpp:(.text+0x50): undefined reference to `std::ios_base::Init::Init()'
first.cpp:(.text+0x55): undefined reference to `std::ios_base::Init::~Init()'
/home/andron/tmp/ccKkFjBC.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: выполнение ld завершилось с кодом возврата 1
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot