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

sn0w
29.01.2010, 16:36
Чтобы лучше разобратся с указателями, напиши простенькую прогрумку аля
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.

al072
04.02.2010, 00:07
Всем привет! у меня такой вопрос: как в Visual C++ (работаю в Visual Studio 2008), выбрав в мастере создания MFC пункт Dialog Based, поместить на этот стандартный диалог стандартное меню, которое будет содержать файл-> новое окно.(и чтобы при нажатии new window отображалось пустое стандартное диалоговое окно).

SHARA
04.02.2010, 11:27
подскажите пожалуйста какой -нибудь хороший задачник по С++ где можно скачать. Гуглил, но ничего не нашел хорошего, или где можно скачать книгу шилдта теория и практика С++

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;

al072
06.02.2010, 17:06
Всем привет! у меня такой вопрос: как в Visual C++ (работаю в Visual Studio 2008), выбрав в мастере создания MFC пункт Dialog Based, поместить на этот стандартный диалог стандартное меню, которое будет содержать файл-> новое окно.(и чтобы при нажатии new window отображалось пустое стандартное диалоговое окно).
Господа, мне кто-нибудь поможет с этим вопросом?

Ins3t
08.02.2010, 22:29
Вопрос тем, кто знаком с 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?

snep
09.02.2010, 00:55
А как скомпилировать саму програмку где я написал свой код? ведь он же просто так переформатируя на С++ не получится запустить правильно, в итоге он открывает фаил не как программу а как блокнот

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. Извините за тупые вопросы, в гугле ответы не смог найти

Ra$cal
09.02.2010, 10:33
Dark_Scorpicore
1 - нет. можно в одном проекте делать много классов и менять код мейна для теста классов.
2 - visual assist
3 - http://ru.wikipedia.org/wiki/Model-View-Controller (в конце ссылки на примеры)

VIP
09.02.2010, 22:16
При написании одной проги возник вопрос. Какой функцией воспользоваться, чтобы она возвращала в какой-нибудь массив имена всех файлов, которые лежат в указанной папке? Желательно использовать только чисто сишные функции и желательно, чтобы они работали и под Windows и под Unix.

При гуглении на эту тему нашёл два модуля: DirectoryListBox и FileListBox, но к сожалению, во-первых, не смог найти описания функций этих библиотек, а во-вторых это, как я понял, плюснутые функции, а мне хотелось бы написать на чистом С.

P.S. Заранее благодарен за ответы =)

krypt3r
10.02.2010, 08:57
VIP, opendir/readdir/closedir

VIP
10.02.2010, 12:00
VIP, opendir/readdir/closedir

Спасибо большое! Именно то, что искал =)

Jino
11.02.2010, 00:23
Начал изучать C++ тут...

#include <iostream>

void main()

{
cout << "Hello, world!";
}
Некомпилируется :eek: :confused:
error C2065: 'cout' : undeclared identifier

P.S. Знаю, что дурак, если че :rolleyes:

SHARA
11.02.2010, 00:27
ты забыл про пространство имен
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;".

rudvil
11.02.2010, 00:30
Начал изучать 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;
}

Jino
11.02.2010, 00:33
Всем спасибо... :)

Можно еще в двух словах - что есть это самое std?

Critical
11.02.2010, 00:33
Так правильнее будет#include <iostream>

int main (int argc, char* argv[]) {
std::cout << "Hi!\n";
return 0;
}


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

SHARA
11.02.2010, 00:41
Так правильнее будет#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;
}

:) :)

rudvil
11.02.2010, 00:43
Всем спасибо... :)

Можно еще в двух словах - что есть это самое std?
SHARA уже написал что это.
Пространство имен.

Ins3t
11.02.2010, 00:52
2rudvil, я уверен, что он все понял )

2Jino
http://ru.wikipedia.org/wiki/Пространство_имён_(програм ирование)

SHARA
11.02.2010, 12:42
http://ru.wikipedia.org/wiki/Пространство_имён_(програм ирование)
Хорошая статья, мне понравилась, спасибо

DiHWO
11.02.2010, 17:41
// 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++?

Ins3t
11.02.2010, 19:53
После
#include <iostream>
Напиши:
using namespace std;

DiHWO
11.02.2010, 19:58
Ins3t, спасибо! выручил
P.S. мне тупо интересно, что это за std?
--------------------------
ОЙ блииииин, сорри за невнимательность.... :o

Ins3t
11.02.2010, 20:09
Читай мой пост выще:

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

rudvil
12.02.2010, 19:05
исходный код:
#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".

DiHWO
12.02.2010, 20:24
создал 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 ==========

oldsys
12.02.2010, 21:22
Хм. спасибо много нового узнал !

rudvil
13.02.2010, 18:02
2VERte][, если не ошибаюсь - то нужно использовать "const_cast<>"

DiHWO
13.02.2010, 20:35
Есть файлы: 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

Почему так происходит? Я же все декларировал.

VERte][
13.02.2010, 20:46
определи эту переменную в .h файле, ибо при подключении этого .h файла получается так что переменная используется до определения

DiHWO
13.02.2010, 21:01
VERte][, Спасибо! А можешь объяснить зачем вообще нужен cpp файл в Windows Form проге? Чисто из - за стандарта?

VERte][
13.02.2010, 21:07
VERte][, Спасибо! А можешь объяснить зачем вообще нужен cpp файл в Windows Form проге? Чисто из - за стандарта?
c Windows Form не знаком, но думаю в cpp файле все же находится код, если это программа)

Ra$cal
13.02.2010, 21:31
DiHWO
книжки читать явно не пробовал. методом тыка c++\clr не учится. лучше делфи займись.

DiHWO
14.02.2010, 11:31
Сорри за тупые вопросы, я разобрался, просто надо было глубже копнуть.

Vinsik
14.02.2010, 12:26
Может кто показать пример простейшей программы смены мак адреса + ип адреса
под борланд буилдер 6 ?
т.е. вводишь мак без двоеточий, и ип жмешь сменить и все меняется

Houze
15.02.2010, 00:34
Вопрос к тем кто учился на програмистов или специальности близкой к програмированию. Может у кого остались конспекты, методички и задания к курсовым??? Я разбираюсь на данный момент по книгам и мануалам с интернета, что-то написать уже могу - но хотелось бы увидеть чему учат в универах.
интересует php, C++, можно еще ассемблер.

VERte][
15.02.2010, 01:10
Вопрос к тем кто учился на програмистов или специальности близкой к програмированию. Может у кого остались конспекты, методички и задания к курсовым??? Я разбираюсь на данный момент по книгам и мануалам с интернета, что-то написать уже могу - но хотелось бы увидеть чему учат в универах.
интересует php, C++, можно еще ассемблер.
да ничему там по большому счету не учат, там учат синтаксису, так что если хочешь что-то знать садись сам, читай книги, статьи и пиши, лучше не придумаешь. Правда у нас на семинарах был препод, который вместо обучения языку рассказывал интересные вещи про оптимизацию, про то как компилятор переводит код на асм, вообщем всякие тонкости в расчете на тех кто знает уже синтаксис, но это исключение

Mozy
15.02.2010, 01:13
Вопрос к тем кто учился на програмистов или специальности близкой к програмированию. Может у кого остались конспекты, методички и задания к курсовым??? Я разбираюсь на данный момент по книгам и мануалам с интернета, что-то написать уже могу - но хотелось бы увидеть чему учат в универах.
интересует php, C++, можно еще ассемблер.

Ничегошеньки интересного
Скукота
Я на лекциях в основном лабы пишу,но бывают и исключения
Вот к примеру (http://rghost.net/990813)

BrainDeaD
15.02.2010, 01:28
я учил всё сам. университетская программа принесла мне 0 пользы в программиривании. могу сказать одно: читай книжки и кодь как можно больше. несравнимую пользу приносит работа в команде специалистов, но не у всех есть такая возможность.

Ra$cal
15.02.2010, 01:53
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 - больше для пром софта в серьезных конторах, хотя есть очень интересные моменты и для прикладного софта

NetSter
15.02.2010, 02:08
универ не подготовит программиста.
универ выпускает людей которые потенциально могут стать кодерами, так как есть основа для начала дальнейшего самостоятельного обучения.

SHARA
15.02.2010, 10:19
Надо самому, сидеть и заниматься))), читать больше книг, точней кода в книгах)) и практиковаться, решать задачи студентам с лабами на ачате :) тогда будет толк.:)
Мне универ вообще ничего не дал.

fenixelite
15.02.2010, 13:48
Хочу на www.specialist.ru пройти курс TeachPro по С++, как думаете стоит ли оно того, или лучше самому учить?

SHARA
15.02.2010, 14:52
учи сам. а потом курс пройдешь :)

fenixelite
15.02.2010, 15:05
Жаль просто что бесплатного курса нет, на том же ИнУИТ'e по Дельфи был нормальный курс, с большим кол-во практики и т.д а вот по С++ нет (( Ладно, лучше наверное сам пока буду учить, а потом посмотрим..

SHARA
15.02.2010, 15:23
на самом деле, можно самому учить, и стараться как-можно больше решать задач :)

fenixelite
15.02.2010, 15:46
Ну это понятно, все равно когда в том же универе выучишься, надо дальше продолжать изучать что то новое, и все это придеться делать самомоу )) Щас скачал книгу С++ за 21 день, тут вроде рекоммендовали именно с нее начать.

SHARA
15.02.2010, 15:51
мне не понравился книга С++ за 21 день
лучше почитай Герберта Шилдта, у него есть хорошая книга С++ базовый курс, там все хорошо написано, потом можно прочитай полный справочник по С++, шилдта
Или Страутрупа почитать
Тем более меня смущает название С++ за 21 день
Хотя это субьективное мнение, каждому свое :)

SHARA
15.02.2010, 15:53
вот здесь есть некоторые книжки. посмотир по изучай сайт
http://progbook.net/info/

fenixelite
15.02.2010, 16:04
Ну я как понял в ней написано основное, а потом уже с помощью других книг или инфы, углублять свои знания. Хотя хз, я все таки не читал еще. В общем надо будет посмотреть ее седня.

InterLife
15.02.2010, 17:24
Подскажите пожалуйста сайт-справочник по функциям c++, типа php.su по php. Желательно русский.

razb
15.02.2010, 17:59
cplusplus.com

InterLife
15.02.2010, 18:43
Мне например сейчас нужна функция разбора строки в массив с сепаратором. Мой английский не так хорош, как хотелось бы, когда я пытаюсь найти подобные функции, поэтому все-таки хочется русский

Houze
15.02.2010, 19:09
Большое спасибо всем кто ответил, :) все ответы принесли пользу. Нашел много лабораторных в разделе лабораторные)


А если я стану неплохо програмировать, кроме сети я смогу заработать себе на хлеб этим?

То есть прихожу я на фирму и говорю что могу, а они меня возьмут при наличии хороших знаний?

Вообще как берут на работу?

Ins3t
15.02.2010, 19:14
То есть прихожу я на фирму и говорю что могу, а они меня возьмут при наличии хороших знаний?

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

2InterLife, смотри здесь:
http://worldcpp.vingrad.ru/

InterLife
15.02.2010, 19:42
2 Ins3t
не нашел там, чего искал, но портал очень полезный и интересный, спасибо

Irdis
15.02.2010, 21:22
F&D
А тебе никто не говорил, что это не с++ и даже не с.

Chubakur
15.02.2010, 21:33
F&D
А тебе никто не говорил, что это не с++ и даже не с.
Это C# вроде.

F&D
15.02.2010, 21:42
F&D
А тебе никто не говорил, что это не с++ и даже не с.

Блин.. точно, сорри. Тему перепутал. :rolleyes:

DiHWO
16.02.2010, 08:35
Код:

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

Ra$cal
16.02.2010, 10:27
это c++\clr - c++ в перемешку с .NET. Не самая лучшая комбинация для изучения с нуля.

DiHWO
16.02.2010, 13:03
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 ^'

DiHWO
16.02.2010, 18:34
Ок, я вижу никто помочь не может, тогда зайду с другой стороны, как организовать вывод в Edit теста через переменную?
Я могу сделать это так:
this->textBox1->Text = L"text";
но не могу так:
this->textBox1->Text = var;

_iks_
16.02.2010, 19:19
Где можно почитать подробно о том, работать с файлами, считывать инфу итд.

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

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

Язык с++, используя только стандартные библиотеки(stdio/iostream).

scrat
16.02.2010, 19:27
Где можно почитать подробно о том, работать с файлами, считывать инфу итд.

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

Вобщем ожидаю какую-нибудь обьемную статью\мануал, в котором расписано всё это от самых азов до приведенных мною примеров, на понятном уровне ) Книги не п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
посоветуйте опенсорсный компилятор на с++.
я просто только начал его учить, и хз какие где брать.
желательно чтонибудь, что можно использовать в граф средах
а не из под консоли.

razb
18.02.2010, 14:47
gcc

Houze
18.02.2010, 20:08
посоветуйте опенсорсный компилятор на с++.
я просто только начал его учить, и хз какие где брать.
желательно чтонибудь, что можно использовать в граф средах
а не из под консоли.

gcc

Houze
18.02.2010, 20:14
У меня компилятор Визуал С++ 6.0
по книжечке делаю браузер. Точнее надстройку над ИЕ. Но почему-то отсутствует компонент
Microsoft Web Browser Control
подскажите где можно скачать и как его забросить)

в гугле искал - пока без результатов.

BastardFromHell
18.02.2010, 20:18
http://dl.dropbox.com/u/4408578/MinGW%20Developer.exe
MinGW Developer
gcc
ты читал вообще, что спрашивал топик стартер?

Houze
18.02.2010, 20:23
http://dl.dropbox.com/u/4408578/MinGW%20Developer.exe
MinGW Developer

ты читал вообще, что спрашивал топик стартер?
я наверно ошибся и там нет граической среды.
виноват. давай немножко повежлевей только.

rankor777
18.02.2010, 20:36
Человек неправильно задал вопрос. Компилятор - GCC/MinGW. А ему походу нужна IDE. Подойдет Qt Creator или Eclipse например.

Double2
19.02.2010, 13:03
Всем привет :) Подскажите пожалуйста, как сделать выход из программы? Например, если ответ на N, то совершается выход из проги

_iks_
19.02.2010, 13:06
Всем привет :) Подскажите пожалуйста, как сделать выход из программы? Например, если ответ на N, то совершается выход из проги

if(1 = 1){
return 0;
}

А вобще хоть что нибудь почитай

Double2
19.02.2010, 13:11
Теперь другая проблема. Все скомпилировалось. Когда я запускаю и начинаю прогонять прогу, то вылетает 3 сообщения подряд, что память не может быть "read". Что делать? Компилятор молчит!

Странно, кинул другу, чтобы проверил, у него все нормально...

KaE
19.02.2010, 13:39
Теперь другая проблема. Все скомпилировалось. Когда я запускаю и начинаю прогонять прогу, то вылетает 3 сообщения подряд, что память не может быть "read". Что делать? Компилятор молчит!

Странно, кинул другу, чтобы проверил, у него все нормально...

На зверьков проверься

Fl0dER
19.02.2010, 13:41
Пытаюсь писать на C++ на чистом WinApi без RTL и всякой фигни , как узнать какие именно функции используют RTL ? и какие есть альтернативы функций strcpy , strcat , fopen , fprintf ?

Fl0dER
19.02.2010, 14:29
Перепутал , strcpy , strcat они без RTL пашет , а вот fopen , fprintf CRT юзают ,
как только я начинаю их использовать ошибко

1>LIBCMT.lib(crt0.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup

Fl0dER
19.02.2010, 14:39
С fopen,fprintf разобрался альтернатива CreateFile и WriteFile

Ra$cal
19.02.2010, 14:41
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-функции можно заюзать для "связи" моего кода (напомню, недавно вышел из консоли) и, например, текстбокса на форме, т.е. в текстбокс положить, допустим, значение переменной.

Не обязательно сорец, можно просто названия, примеры сам найду.

Ra$cal
19.02.2010, 21:02
http://msdn.microsoft.com/en-us/library/bb773173%28VS.85%29.aspx

Krems
19.02.2010, 21:12
Почему строка "Again? y/n" выводится дважды и откуда в переменной gt лежит перевод строки ? =D


#include <stdio.h>

main()
{
char gt='0';

while(gt!='n')
{
printf("Again? y/n\n");
scanf("%c", &gt);
}
return 0;
}

_iks_
19.02.2010, 21:17
Почему строка "Again? y/n" выводится дважды и откуда в переменной gt лежит перевод строки ? =D


#include <stdio.h>

main()
{
char gt='0';

while(gt!='n')
{
printf("Again? y/n\n");
scanf("%c", &gt);
}
return 0;
}


У меня выводится один раз.

После функции scanf() автоматом осуществляется переход на следующую строку.

Krems
19.02.2010, 21:33
Ну мы на двух разных компах запускаем на одном Borland С++, на втором MSVisual Studio оба выводят строку два раза *WALL*

Double2
19.02.2010, 23:48
Ну... Это как бэ прога прикол :) Вот код:

#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 тянет ;)

Double2
20.02.2010, 02:03
И все же, почему не робит?) Что не так?

BastardFromHell
20.02.2010, 02:05
if((otv2="Y") || (otv2="y"))
ты не сравниваешь, а присваиваешь. Дальше не смотрел. Какой-то бред вообще

Ra$cal
20.02.2010, 02:06
char* otv;
...
cin >> otv;

это не так

Double2
20.02.2010, 02:16
if((otv2="Y") || (otv2="y"))
ты не сравниваешь, а присваиваешь. Дальше не смотрел. Какой-то бред вообще
Почему? Разве оператор || это не ИЛИ?

Double2
20.02.2010, 02:18
char* otv;
...
cin >> otv;

это не так
А как надо?

Ra$cal
20.02.2010, 02:19
Почему? Разве оператор || это не ИЛИ?
перепиши свой код так.

if(("Y" = otv2) || ("y" = otv2))

и скомпиль.

Double2
20.02.2010, 02:23
Выдает "untitled2.cpp": E2277 Lvalue required in function main() at line 60

BastardFromHell
20.02.2010, 02:34
ты язык знаешь или просто копипастишь? = это присвоить, == это сравнение. массив чар создавай char array[31337]

Ra$cal
20.02.2010, 03:29
та не сравнивают строки простым оператором ==. я просто показал его косяк - он не сравнивает вообще, а приравнивает указатель на строку.

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=)

Ra$cal
20.02.2010, 11:40
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;

_iks_
21.02.2010, 11:45
Можно ли как-то управлять форматом вывода используя функцию cout?

Например есть число 2.535 надо вывести его с одинарной точностью(2.5).

Если использовать printf(), то понятно как, нужно именно cout.

Ra$cal
21.02.2010, 13:13
_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, но у меня такой команды не существует...

Ra$cal
21.02.2010, 14:00
значит у тебя не установлен mingw.

Rio-de-Janeiro
21.02.2010, 14:06
значит у тебя не установлен mingw.
Да вот он вроде вместе с Qt сам ставился...
Ладно, сейчас все по-человечески вручную установлю.
UPD:
В общем все переустановил, установил...
Теперь команда make работает, но при компиляции выходит ошибка:
http://gyazo.com/341051055ecbade948bc15eebab9c1d0.png
Может быть из-за разницы версий? Пример дан для версии 4.1, у меня 4.6. Хотя по-идеи проблем не должно быть, но может кто-нибудь написать какой-нибудь 100 % компилируемый код, чтобы я проверил...

Ra$cal
21.02.2010, 17:31
для начала попробуй использовать 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

razb
21.02.2010, 17:40
Путь к проекту не содержит пробелов?

Rio-de-Janeiro
21.02.2010, 17:52
Путь к проекту не содержит пробелов?
Содержал... Блин, а я ринулся и уже все удалил :D
Скачал версию 4.4.1 и ее думаю поставить...

Вот сейчас ставиться, посмотрим, хотя это уже бред...

Rio-de-Janeiro
21.02.2010, 18:12
Ну в общем поставил версию 4.4.1, все равно пишет ту же ошибку, только перед ней больше текста намного мелькает.

Ra$cal
21.02.2010, 18:18
пути, куда установил 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 и вновь скомпилировать проект.

Ra$cal
21.02.2010, 19:04
чтобы копировать консоль - левой кнопкой давишь иконку в левом верхнем углу окна, там где C:\_ -> Edit -> Mark -> дальше выделяешь область мышкой и жмешь в ней правой кнопкой - выделение слетает и текст попадает в буфер обмена. Либо Select All и так же правой кнопкой на выделенной части.

Rio-de-Janeiro
21.02.2010, 19:12
Там в общем ооочень много текста, так что даже не поместилось все в самой консоли.
Мне удалось попытаться скомпилировать код в IDE, но вылезло 6 ошибок:
http://gyazo.com/1ff9abd1d698efb9937d39df18f115a7.png

Ra$cal
21.02.2010, 19:18
в настройках криейтора кьют указан?
Знакомые ошибки, только не помню, как я их починил. В данном случае у тебя не видится Qt компилеру.
В переменных окружения путь до qt задан?

Rio-de-Janeiro
21.02.2010, 19:22
в настройках криейтора кьют указан?
Знакомые ошибки, только не помню, как я их починил. В данном случае у тебя не видится Qt компилеру.
В переменных окружения путь до qt задан?
В настройках путь указал, а вот в переменных средах нет, сейчас попробую

Rio-de-Janeiro
21.02.2010, 19:30
Прописал путь до основной папки Qt, то же самое... В общем, никак.

Ra$cal
21.02.2010, 19:49
QTDIR = C:\Qt\2009.05\qt

внутри лежит configure.exe

Rio-de-Janeiro
21.02.2010, 19:53
Это переменную создать? Если да, то не помогло.
П.С. Мб гоу в аську? 248465

Fl0dER
21.02.2010, 20:48
Люди добрые покажите простой пример чтение функцией 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
ребят, с+/ подойдет для использования его в процессе программирования микросхем авр\пик ? или все же мне за ассемблер садиться ?

Ins3t
22.02.2010, 09:14
С подойдет.

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) экрано-зависимая, если надо то исправьте сами.

ntldr
22.02.2010, 14:57
как обстоят дела в 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
гдё я туплю?

Lee_fx
22.02.2010, 17:33
похожу тут
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

ntldr
22.02.2010, 19:03
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
лол, какбэ второй вариант не работоспособен))

Ra$cal
26.02.2010, 18:13
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, ...) и тд, те все базовые функции, которые в основном нужны по работе со строками и тд.

Fl0dER
27.02.2010, 11:28
Люди добрые есть маленький вопрос , есть ли у функции wsprintf какие нибудь ограничение , немогу форматировать строку когда один из поинтеров большого размера... Если есть ограничение как в данном случае быть ?

KILL
01.03.2010, 13:13
hi2all people, народ подскажите в С++ буилдер в редакторе кода на руском можно писать ? а то вири потрепали ПО а перебивать жалко..., 4 года назад помнится писал вот тока непомню толи в delphi то ли С++ буилдер, пишу там [ авыф (норм пишется) ] а [ олдж ( ои№ж) ], настройки уже досканально изучил бестолку

qwert135
01.03.2010, 22:41
Всем привет.Народ,что означает ошибка "Redeclaration of std::ifstream in" и как с ней бороться.Я открыл один файл для чтения,считал все что нужно,закрыл его.Стал открывать второй и выскочила эта ошибка.Спасибо за помощь.

4p3
02.03.2010, 00:54
Всем привет.Народ,что означает ошибка "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 <<

4p3
02.03.2010, 12:41
qwert135

Я не вижу ifstream in в том коде, что выше. Ты привел код, который вызывал ошибку или уже что-то исправил?

qwert135
02.03.2010, 15:39
Приведенный мою код без ошибок и правильно работает.Я не знаю только как сделать файловый ввод/вывод.В текстовом файле должна быть введена расширенная матрица.Из нее надо взять матрицу А и вектор В, и записать ответ в другой текстовый файл.

4p3
02.03.2010, 16:25
Продумай формат хранения информации и прочитай пост #4927.

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

qwert135
02.03.2010, 17:54
Да то что написано в том посте я знаю.Я другое понять не могу:вот пользователь ввел расширенную матрицу,прога должна считать из файла все столбцы кроме последнего и присвоить их матрице А;а последний столбец должен быть присвоен вектору В;и надо подсчитать кол-во строк в файле.А вот как это запрогить я уже не знаю:(

4p3
02.03.2010, 18:06
Попробуй использовать 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;
} вопрос собственно следующий: почему вместо массива находящегося в файле прога выводит на экран массив с совсем другими числами и при каждом запуске проги эти числа меняются

4p3
02.03.2010, 23:29
вопрос собственно следующий: почему вместо массива находящегося в файле прога выводит на экран массив с совсем другими числами и при каждом запуске проги эти числа меняются

В следующий раз оформи код тегом [*php] или [*code](звездочки не нужны) и оставь пару комментариев, бо читать очень трудно.

Теперь по делу. Мне кажется, ты напутал что-то с указателями. Ты обращаешься к памяти по неправильному адресу, по этому адресу уже что-то лежит и ты его считываешь.

Если оформишь все нормально, я постараюсь разобраться лучше.

Grifon
03.03.2010, 00:57
Скажите пожалуйста где достать компилятор С

Grifon
03.03.2010, 01:19
Вообщем компилятор я нашол в Убунту но стоит мне скомпилировать что-то и запустить как пишет Pemisison Denied кто знает в чём проблема

Kaimi
03.03.2010, 01:21
Вообщем компилятор я нашол в Убунту но стоит мне скомпилировать что-то и запустить как пишет Pemisison Denied кто знает в чём проблема

А ты из под рута запускай или чмодни файл

Grifon
03.03.2010, 01:22
А я из под рута запускаю

4p3
03.03.2010, 01:24
sudo a.out
или
chmod a+x a.out для выдачи прав.

a.out - Название скомпилированного бинарника.

Grifon
03.03.2010, 01:31
sudo a.out
или
chmod a+x a.out для выдачи прав.

a.out - Название скомпилированного бинарника.
ни хера не происходит

4p3
03.03.2010, 01:35
лог консоли и ls -l в студию

Grifon
03.03.2010, 01:41
ну помогите плиз

4p3
03.03.2010, 01:43
Я не телепат. Логи с консоли запость в тему. и вывод команды ls -l.

Grifon
03.03.2010, 01:46
-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 Шаблоны

4p3
03.03.2010, 01:49
Я правильно понял, что ты пытаешься запустить Untitled2?

Grifon
03.03.2010, 01:51
да

4p3
03.03.2010, 01:55
ради интереса сделай chmod 777 Untitled2. Затем ./Untitled 2

Кстати, а что ты компилировал?

Grifon
03.03.2010, 01:56
простую програмку

#include <iostream>

int main()
{
std::cout<<"hello";
}

Grifon
03.03.2010, 01:58
Опять команда выполняется но ничё не возвращает

4p3
03.03.2010, 01:59
Если запускаешь из под рута и такой код, то он должен выполниться, это наверняка. Не знаю, что ты делаешь неправильно.

Grifon
03.03.2010, 02:01
вот и я не пойму что я не правильно делаю захожу из под роота в консоли прописываю то что ты мне написал команда выполняется но результата не возвращает

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 символов отправить.Комментарии написал как ты просил

4p3
03.03.2010, 13:04
Вот так гораздо лучше!

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, в принципе, вопрос исчерпан.

DiHWO
03.03.2010, 16:17
Нубский вопрос. Как вывести текст из файла, но без всякиз заморочек. Просто есть txt файл, есть TextBox, надо текст из файла в TexBox записать.

4p3
03.03.2010, 16:34
https://forum.antichat.ru/showpost.php?p=1947015&postcount=4927

DiHWO
03.03.2010, 16:45
спасибо
-----------------------

#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

4p3
03.03.2010, 20:22
Ошибка не только в 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) на чистом си.

4p3
04.03.2010, 00:18
Здравствуйте. Подкиньте пож-та инфо по функцию перехвата нажатий клавиатуры (hook) на чистом си.
http://msdn.microsoft.com/en-us/library/ms644990(VS.85).aspx

DiHWO
05.03.2010, 13:38
\\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

rudvil
05.03.2010, 13:51
\\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;
}

з.ы. неужели так сложно зайти в гугл?

DiHWO
05.03.2010, 14:14
если есть ачат, зачем юзать гугл ))) сэнк за помощь

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
возможно ли узнать какой трек и группа проигрывается в аимп в данный момент?
если да, то как?

d_x
08.03.2010, 00:02
возможно ли узнать какой трек и группа проигрывается в аимп в данный момент?
если да, то как?
Да, вот простой пример родного плагина для 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
к сожелению, ни асма ни делфи не знаю
мне бы бинарник подошел

d_x
08.03.2010, 00:16
http://rapidshare.com/files/360332312/aimp_plugin.dll.html
Не знаю, что конкретно должен делать бинарник, и вообще, нужен он в виде плагина или внешнего exe, этот просто выдает при воспроизведении месаджбокс. Положить его в директорию PlugIns и перезапустить AIMP, либо через меню Плагины загрузить его.

phpdreamer
08.03.2010, 00:27
желательно записывать название трека и группы в файл....
плагин или exe - без разницы

d_x
08.03.2010, 02:05
http://slil.ru/28758400
Вот плагин, который создает в папке с плеером файл SONGS.txt и туда пишет названия и исполнителей всех прослушанных песен (в unicode).

M.W.N.N.
08.03.2010, 02:09
Ну так что, ктонить знает ответ на мой вопрос?

d_x
08.03.2010, 02:15
Дали же ссылку на msdn на функцию для установки хуков. Вот еще пример на чистом си:
http://msdn.microsoft.com/en-us/library/ms644960%28VS.85%29.aspx

M.W.N.N.
08.03.2010, 02:19
Я про 4971 пост.
За хуки спс большое.

t4Nk
08.03.2010, 14:08
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’


Подскажите пож-та в чем проблема?

4p3
09.03.2010, 00:03
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)

как правильно сделать?

$n@ke
13.03.2010, 15:30
Почему не пашет декодер для функции, шифрующей все данные в файле c
помощью побойтового логического отрицания? вот сам кодер и декодер ниже:

http://pastebin.com/9c1xWBq3

декодер компилится, но валится в сегфолт(

Aag
13.03.2010, 17:50
Почему не пашет декодер для функции, шифрующей все данные в файле 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* может так будет верней?

Ra$cal
13.03.2010, 21:45
*( (int*) ( ( (char*)ptr ) + 0x56) )

другой вариант

struct dummy{
char lalala[55];
int target;
};

dummy* d = (dummy*)ptr;
d->target;

числа мог наврать

DiHWO
14.03.2010, 11:18
Мне нужно чтобы нажимая на кнопку, в Textbox`е стирался последний символ, тоесть сделать аналог клавиши Backspace на клавиатуре. Как это организовать?

fenixelite
14.03.2010, 11:50
String s = "aljfhwfhgc vwiu";
s.Delete(10, 5);//s = "aljfhwfhgc"

DiHWO
14.03.2010, 12:09
fenixelite, спасибо, но, у меня так не получилось.
Получилось так:
String ^abc = "aljfhwfhgc vwiu";
abc = abc->Remove(10,5);
IDE подсказала :-)
-----------------------------------
Еще вопрос. Как узнать количество цифр в числе, которое записанно в переменную int.
Тоесть int a = 1241; //в переменной "а" 4 цифры.
Функция наподобие strlen.

scrat
14.03.2010, 15:02
Как в 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;
}

DiHWO
14.03.2010, 19:05
fenixelite, спасибо, идею понял.
Еще вопрос, как в WindowsFormApllication сделать так, чтобы фокус всегда был на textbox`е, и не мог переместиться на кнопки и на форму?

xismyname
14.03.2010, 22:59
fenixelite, спасибо, идею понял.
Еще вопрос, как в WindowsFormApllication сделать так, чтобы фокус всегда был на textbox`е, и не мог переместиться на кнопки и на форму?

Самый элементарный механизм,сделай так чтобы при вызове метода GotFocus у любого другого элемента чтобы автоматически переводил фокус на твой текст бокс.

Например если у тебя на форме одна кнопка и один текст бокс в методе GotFocus() кнопки переводишь сразу фокус на текст бокс,надеюсь понятно.

DiHWO
15.03.2010, 17:44
xismyname, все понятно, спасибо
------------------------------
Наверное, я уже всех задолбал ))), но еще вопрос:
Как убрать каретку из текстбокса и запретить выделение текста в нем?

100DEADRABBITS
16.03.2010, 14:50
как копировать исполняемый файл в директорию ? если можно поподробней )) спасибо

St0nX
17.03.2010, 13:57
__tp://msdn.microsoft.com/en-us/library/aa363851(VS.85).aspx - Чем

Пример:

char ThisFile[MAX_PATH]; //откуда
char ThatFile[MAX_PATH]; //куда
CopyFile(ThisFile, ThatFile, true);

Voz7Var
17.03.2010, 20:19
Всем салют)
У меня не то чтобы вопрос, но. Не мог бы кто-нибудь продемонстрировать как на c++ выглядит вот этот кликер для ютуба (http://depositfiles.com/files/jvv989vng) .

TPAXTOP
20.03.2010, 14:54
помогите, плз...нужно сделать на MathCADе такое:
Вычислить значение суммы, используя операторы цикла с параметром for и с предпосылкой while.

вот само задание (http://upload.com.ua/get/901476814/)

TRX.new
20.03.2010, 16:39
Хочу начать изучать 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

razb
20.03.2010, 17:15
g++ first.cpp -o first