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

Shawn1x
14.12.2007, 15:32
Как написать прогу?
используя алгоритмы и контейнеры Stl:
создай список из 20 случаных элементов, со значениями от 1 до 19.
отсортируй список так что бы сначала шли четные элементы
На С++

P(i)n*Fl0p1
14.12.2007, 16:52
Чет я вообще ничего не пойму в чем разница между Визуал С++ builder c++ и просто с ++,и какой из них лучше начинать учит(с нуля) посоветуйте плиз


C++ (http://dasbook.ru/index.php?book=1722)
нашел вот книжку как думаете хорошая?

Если у кого есть скиньте ссылку плиз на Борланд С++ желательно с кряком..буду очень благодарен) :rolleyes:

groundhog
14.12.2007, 17:38
Shawn1x, вам читать документацию:

http://www.zsu.zp.ua/lab/MathDep/ApMath/cppbuilder/Chapter%2011/index.htm
http://www.tenisheff.ru/hgs/po/STL.htm

P(i)n*Fl0p1, можно спорить до одурения чей компилятор лучше... По дефолту мелкософторый является стандартом, именно с него и начните изучение. Книга хорошая.

P(i)n*Fl0p1
14.12.2007, 19:48
У меня еще один вопрос назрел если в книжке все примеры в борланд с++(что меня настораживает так это год выпуска) написаны то что лучше поставить борланд с++ 3.1 или микрософт Визуал с++ експресс едишн?или борланд с++ билдер?

groundhog
14.12.2007, 20:17
P(i)n*Fl0p1, общая парадигма соблюдена везде, что в борладовском компиляторе, что в микрософтовском. Я думаю авторы дадут замечания по поводу используемого компилятора, но тем не менее, я не дмаю, что там такие сложные примеры, что были ориентированы под какой-то конкретный компилятор. Я советую поставить все, и попробовать на разных компиляторах, тогда у вас будет более яркое представление о характере конкретного компилятора.

z01b
14.12.2007, 21:47
P(i)n*Fl0p1,Согласен с groundhog-ом. Не думаю что там такие убойные примеры, заточеные под одним компилятором.

r@mbler
15.12.2007, 23:12
ludi dobrie dayte ktonit ssilku na c++ builder ne enterprais izvenite za latinicu

GlOFF
16.12.2007, 01:18
r@mbler Можешь ещё поискать Borland Developer Studio.
Там и делфи и C++ ^)

Saint-Sky
16.12.2007, 01:29
На краклабе выложили архив статей по C/CPP(6600 статей) - есть, что почитать...

World C++ Pro 6600+ (http://www.cracklab.ru/download.php?action=get&n=NjM1)

GlOFF
16.12.2007, 14:09
Saint-Sky Отлично, а от которого числа выложены?

Piflit
16.12.2007, 14:20
Saint-Sky Отлично, а от которого числа выложены?
от всех =) он довольно старый, но актуальный

P(i)n*Fl0p1
18.12.2007, 01:39
:( Вообщем проблема вот в чём : Сделал все как в самоучителе Крупника скачал Far , gcc ..все сделал как написано создал файл L11.cpp в нем написал код программы , хотел скомпилировать,написано что надо ввести в Far в командной строке:
gcc l11.cpp -o l11.exe
ввожу фар подвисает на пол секунды но потом ничего не происходит,мне кажется должен получится в папке l11.exe
подскажите что я делаю неправильно,текст из самоучителя немогу скопировать так как не выделяется, он в формате djvu. вкладываю весь учебник там на 23 странице,может там чтото неправильно написано?) :confused:

Книжко (http://slil.ru/25249806)

Piflit
18.12.2007, 01:55
конпелируй через cmd

presidentua
18.12.2007, 02:06
ввожу фар подвисает на пол секунды но потом ничего не происходит,мне кажется должен получится в папке l11.exe
подскажите что я делаю неправильно

Перед тем как набирать команду в Фаре нажми комбинацию кнтрл+О, тогда уберутся окна Фара. Введешь команду и компилятор тебе скажет результат, если была допущена ошибка, то будет номер строки где ошибка. :)

P(i)n*Fl0p1
18.12.2007, 02:26
О спасибо)всего то надо было две кнопки нажать а я блин целый день мучался)))))

HulkRus
18.12.2007, 03:28
P(i)n*Fl0p1, можешь ещё поюзать shift+ctrl+alt, alt+стрелка вверх (alt+стрелка вниз); и увидишь ошибки компиляции.

P(i)n*Fl0p1
18.12.2007, 19:04
У меня еще один вопрос там задачу дали никак не допру вообщем надо узнать что выдаст программа,если в скобках while все убрать :
#include <iostream>
using namespace std;
int main(){
int N = 1000;
int sum = 0, i = 1;
while(i <= N) {
sum = sum + i;
i = i + 1;
}
cout << "sum = " << sum << endl;
}

получится 1?
или еще кроме
sum = sum + i;
будет действовать i = i + 1;?(меня просто насторожило то что оно после sum = sum + i; стоит еслиб перед тогда по идее должно получится 3)
вот немогу понят 1 или 3)


ой ой ой ошибсо ошибсо))) если вообще убрать скобки ведь начнет выполнятся sum = sum + i;
i = i + 1;

вот)и что получится 1 иль 3 или чтото заоблачное?)) :confused:


Если убрать все из while(), то вылезет еррор :)
А где там должна 1 появиться?

вообще после выполнения программы)


УРА УРА УРА)Сегодня год моего пребывания здесь) :rolleyes:

criz
18.12.2007, 23:27
Если убрать все из while(), то вылезет еррор :)
А где там должна 1 появиться?

Irdis
19.12.2007, 02:28
а вот вопрос
чем отличаются библиотеки
<iostream>
и
<studio.h>
Вроде функции одни и те же???

Irdis
19.12.2007, 02:32
to P(i)n*Fl0p1

если повезёт то зациклится, нейкое бредовое условие

iv.
19.12.2007, 09:22
Ребят, у меня тут несколько тупая проблема.
Предположим некий код:

...
p = new double [n];
T = new double [n];
...
delete [] p;
delete [] T;


На участке после выделения памяти она вся используется.
При трассировке на команде delete [] T; вылетает следующий эксепшн:
HEAP[prog.exe]: Heap block at 00365EE8 modified at 00365F34 past requested size of 44
Windows has triggered a breakpoint in prog.exe.

Я может быть конечно где-то лажанул, но что-то не понимаю в какую сторону вообще копать. Хелп!

Forcer
19.12.2007, 09:40
iv.
Так сложно сказать - всё вроде верно. Приведи полный сорц - посмотрим. А так много чего может быть, на мой любительский взгляд конечно :)

iv.
19.12.2007, 09:42
Проблему решил, подзабыл адресную арифметику. =)
А ошибка в общем-то и говорила, что вышел за пределы выделенной памяти.

iv.
20.12.2007, 03:16
Это снова я.
Как вызвать перегруженый оператор delete?
Перегружал так: void operator delete(void *p, char *fileName, int lineNumber)

groundhog
20.12.2007, 11:16
Ну и вызывай по своим параметрам... А вообще, я так понял, твой delete не имеет никакого смыслового отношения к настоящему delete, поэтому лучше назови его по другому...

KEZ
20.12.2007, 11:18
Перегружал так: void operator delete(void *p, char *fileName, int lineNumber)


o_O


Ну и вызывай по своим параметрам... А вообще, я так понял, твой delete не имеет никакого смыслового отношения к настоящему delete, поэтому лучше назови его по другому...


Назвать оператор по другому? o_O o_O

groundhog
20.12.2007, 11:28
kez, я может не верно выразился... Я имел в виду, что при той реализации, что он хочет лучше реализовать это как обычную функцию... Параметры того оператора, что он хочет реализовать повергают в шок...

KEZ
20.12.2007, 11:48
Ну да... А я уж подумал ты решил создать свой оператор...

iv.
20.12.2007, 20:22
Господа, мне нужен именно перегруженный delete, ибо работаю с памятью по-своему.
А операторы new и delete имеют обыкновение вызывать конструкторы и деструкторы объектов. Даже при перегрузке.
Просто new я перегрузил похожим образом и вызывается он примерно так:
DWORD* mem = new(__FILE__, __LINE__) DWORD
Следующая хитрость позволяет его вызывать вообще как стандартный:
#define new new(__FILE__, __LINE__)
Так вот с delete так не прокатывает почему-то.

ПС: перегружать с тем же набором параметров мешает то, что эти операторы у меня сидят в dll и при экспорте компилятор ругается. =\

В общем-то, набор параметров на самом деле особого значения не имеет.

KEZ
20.12.2007, 20:29
void* __cdecl operator new( size_t s )
{
OutputDebugString("Trace: new");
return lmalloc( s );
}

void __cdecl operator delete( void *p )
{
OutputDebugString("Trace: delete");
lfree( p );
}

iv.
20.12.2007, 20:57
ААААА, кез, чмокаю тя в носик!!! Выручил.
Я почему-то когда делал __declspec(dllexport) void* operator new(size_t size) компилятор ругался..

KEZ
20.12.2007, 21:11
Я почему-то когда делал __declspec(dllexport) void* operator new(size_t size) компилятор ругался..


:eek: :eek: :eek: :eek: Как можно экспортировать оператор?

iv.
20.12.2007, 21:16
Эммм, ну __declspec(dllexport) void* operator new(size_t size, DWORD pim, DWORD piu) вполне прокатило и даже работало =)

ZaCo
20.12.2007, 22:40
>>Как можно экспортировать оператор?

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

Murena
23.12.2007, 19:26
с клавы вводиться предложение. Надо в нем найти определенное слово и заменить его другим. как?

EST a1ien
26.12.2007, 01:42
Народ помогите разобраться с этим кодом уже 2 часа с ним парюсь. (всякая ненужная фигня вырезанна)
int main(int argc, char* argv[])
{

char com[80];
while(1)
{
cout<<"# ";
gets(com);
int iret=command(com);
if (iret==2) break;
cout<<"\n\n";
}
return 0;
}

int command(char *s)
{
char * pch;
pch = strtok (s," ");
while (pch != NULL)
{
if(!strcmp("-add",pch))
{
pch = strtok (NULL, " ");
if (pch)
{
if (!strcmp("s",pch))
{
pch = strtok (NULL, " ");
add_stud(pch);
break;
}
}
cout<<"To get help about command put -help add";
return 1;
}
if(!strcmp("-exit",pch) || !strcmp("-quit",pch))
{
cout<<"Good Buy\n";
return 2;
}
pch = strtok (NULL, " ");
}
cout<<"Command is not supported! Put -help to get Help";
return 0;
}

int add_stud(char *n)
{
char t[80];
int i5Valu[5];
cout<<"EnterFIO\n";
cin>>t;
cout<<"Enter 5 Values\n";
return 1;
}

дело в том что если мы вводим
-add s 1
Вместо 1 может быть что угодно суть не в этом.
То на экране появляется запрос на ввод FIO
НО когда мы вводим фио и нажимаем ентер то у нас появляются 2 лишние строки с сообщением
Command is not supported! Put -help to get Help
Откуда????? они там берутся не как немогу догнать.

Вот что выводиться на экран.

# -add s 1
EnterFIO
asdsad
Enter 5 Values
Command is not supported! Put -help to get Help

# Command is not supported! Put -help to get Help

#

Ky3bMu4
26.12.2007, 13:06
In fuction int command(char *s) :

while (pch != NULL)
{
...................................
if (!strcmp("s",pch))
{
pch = strtok (NULL, " ");
add_stud(pch);
break;
....................................
}

Обрати внимание на break; , он делает выход из твоего цикла while (pch != NULL), а в конце цикла что?

cout<<"Command is not supported! Put -help to get Help";
return 0;

Сделай вместо break return -1 и всё вроде должно быть норм. :)

_Great_
27.12.2007, 08:43
ПС: перегружать с тем же набором параметров мешает то, что эти операторы у меня сидят в dll и при экспорте компилятор ругается. =\

В общем-то, набор параметров на самом деле особого значения не имеет.
Нельзя менять число аргументов при перегрузке оператора.

>>Как можно экспортировать оператор?

ну в конечном счете любой перегруженный оператор является функцией, другое дело что не совсем очевидно какое имя будет генерировать компилятор при экспорте..
Скажу сразу - очень извратное ;)

Neovild
27.12.2007, 23:56
Сейчас на С перехожу. Написал самое простое что есть- Стек написал (не думайте что я в алгоритмах не шарю, кучи Фибоначчи, 3х связные списки и т.д. потом) посмотрите на сами указатели, просто думаю a- массив, int *p=a -коряво или нет?
#include <stdio.h>
#include <stdlib.h>
void Add(int *a[], int *kol, int el);
int Del(int *a[], int *kol);
void Display(int *a[], int *kol);

void Add(int *a[], int *kol, int el)
{
int *p=a;
++(*kol);
*(p+*kol)=el;
}
int Del(int *a[], int *kol)
{
if (*kol<=-1) return 0;
int *p=a;
--(*kol);
*(p+*kol+1)=0;
return 1;
}
void Display(int *a[], int *kol)
{
printf("stack:");
int i;
for (i=0; i<=*kol; ++i) {
printf("%i,", a[i]);
}
printf("\n");
}
int main(int argc, char *argv[])
{
int a[100], el=0, kol=-1,i;
int *p=a;
while (1) {
printf("1:add, -1:del, 0:exit. command=");
scanf("%i",&i);
if (i==0) break;
if (i==1) {
printf("ELEMENT=");
scanf("%i",&el);
Add(a,&kol,el);
}
if (i==-1)
if (!Del(a,&kol)) exit(1);
Display(a,&kol);
}
return 0;
}

dinar_007
29.12.2007, 13:03
Сейчас на С перехожу. Написал самое простое что есть- Стек написал (не думайте что я в алгоритмах не шарю, кучи Фибоначчи, 3х связные списки и т.д. потом) посмотрите на сами указатели, просто думаю a- массив, int *p=a -коряво или нет?
#include <stdio.h>
#include <stdlib.h>
void Add(int *a[], int *kol, int el);
int Del(int *a[], int *kol);
void Display(int *a[], int *kol);

void Add(int *a[], int *kol, int el)
{
int *p=a;
++(*kol);
*(p+*kol)=el;
}
int Del(int *a[], int *kol)
{
if (*kol<=-1) return 0;
int *p=a;
--(*kol);
*(p+*kol+1)=0;
return 1;
}
void Display(int *a[], int *kol)
{
printf("stack:");
int i;
for (i=0; i<=*kol; ++i) {
printf("%i,", a[i]);
}
printf("\n");
}
int main(int argc, char *argv[])
{
int a[100], el=0, kol=-1,i;
int *p=a;
while (1) {
printf("1:add, -1:del, 0:exit. command=");
scanf("%i",&i);
if (i==0) break;
if (i==1) {
printf("ELEMENT=");
scanf("%i",&el);
Add(a,&kol,el);
}
if (i==-1)
if (!Del(a,&kol)) exit(1);
Display(a,&kol);
}
return 0;
}
Честно сказать, не в обиду конечно, но это самый тупой пример работы с указателями который я когда либо видел в жизни, нах... Кучи переменных, которые ты туда сюда тусуешь. Зачем заводить два указателя на один и тот же массив? Под настроение?

0x22b
29.12.2007, 14:52
ИМХО: зачем создавать прототипы функций, если ты их всеравно объявил перед основной? использование указателей наиболее продуктивно если ты работаеш с большим объёмом данных..

Neovild
29.12.2007, 15:13
dinar_007, "два указателя на один и тот же массив". Я не про main(), а про сами функции Add и Del имел ввиду. Пох на main()- это чисто корявый ввод\вывод. Мне главное , чтобы работа с указателями фунций Add и Del была корректна. (всякие кучи Фибоначчи, кучи, дучи писал без указателей бряк)

groundhog
29.12.2007, 15:30
Neovild, в любом случае, я считаю, и думаю, что коллеги меня поддержат - тебе нужно ещё раз другой прочесть главу про указатели и передачу параметров по указателю в функцию.

Ky3bMu4
29.12.2007, 16:04
2Neovild
Почитай Дейтела - там есть оч грамотный вариант.

Kaimi
03.01.2008, 01:51
Как в с++ попроще работать с регулярками? Например есть страница http://www.webfile.ru/1635930
хочу оттуда вытащить название файла, как это сделать?
В Перле все просто, а в с++ как то не особо...

KEZ
03.01.2008, 02:00
> Как в с++ попроще работать с регулярками?

А перл скриптовый если что.
Стандарт С++ никаких готовых тулз по рег-выражениям не предусматривает,
либо ты пишешь руками, либо используешь Pcre, там все написано

Kaimi
03.01.2008, 02:03
Я читал мануал по pcre, но толку мало. Можно какой-нибудь простой пример с комментариями?
Например есть текст:

<input type="hidden" id="secure" name="secure" value="e8582adef72dbfbf06e4" />
<input type="hidden" id="ssl" name="ssl" value="0" />

Как вытащить значение value?

KEZ
03.01.2008, 03:42
Найти в строке value=", с этой позиции найти следующий ", потом все, что между ними - скопировать.

псевдокод:

a=strstr(text,"value=\"");
if (a)
{
b=strstr(a,"\"");
if (b)
{
strncpy(buffer,a,b-a);
}
}

Forcer
03.01.2008, 03:46
...и pcre тут непричём )

Kaimi
03.01.2008, 21:39
Есть ли какой-нибудь пример обработки редиректа при работе с IdHTTP?
Делаю пост запрос, нужно получить в мемо страницу на которую он перекидывает.

Joker-jar
03.01.2008, 21:59
С компонентами не работал, но если редирект, то сервер передает заголовок

Location: url

Может в компоненте есть методы доступа к заголовкам по имени/индексу, ищи похожее

Kaimi
03.01.2008, 22:29
Как получить заголовок тоже не нашел, при обращении к странице которая редиректит стабильно выкидывается исключение...

P(i)n*Fl0p1
06.01.2008, 02:22
Вообщем то дали задачу которую надо бы решить)сколько не думал вообще не втыкаю в эту рекурсию)

Число n в степени p можно определить как 1 , если p=0 и
n*np-1 если p>0
Напишите программу,которая рекурсивно вычесляет np.

помогите пожалуйста)

_Great_
06.01.2008, 02:24
void pow(int n, int p)
{
if( p == 0 ) return 1;
else return n * pow(n, p-1);
}

P(i)n*Fl0p1
06.01.2008, 02:53
кхм кхм) еклмн))))ужас то какой) pow я еще не учил..)
я думал получится чтото вроде

#include <iostream>
using namespace std;
int factorial(int);
int main() {
cout << factorial(3) << endl;
}
int factorial(int n) {
if (n == 0)
return 1;
else
return n * factorial(n-1);
}

NINZA666
06.01.2008, 02:59
Это даже где-то в начале книги Страуструпа есть, не ленись и скачай.

P(i)n*Fl0p1
06.01.2008, 03:00
А я по Крупнику учусь)немогу пока одну книгу не дочитаю переходить к другой иначе дело дальше пойдет к бросанию вообще изучения что мне не хочется..я лучше на форуме спрошу что да как)и добрые люди мне разьяснят..а не пошлют куданибудь наподобие ответов мэйл или гугла)

NINZA666
06.01.2008, 03:32
#include <iostream.h>


float pow ( float, int );

int main ()
{
for ( int i=1; i<10; i++ )
{
cout << "for i = " << i << " resultat: " << pow ( 2, i ) << '\n';

}
}

float pow ( float x, int n )
{
if ( n < 0 )
cout << "error\n";
switch ( n )
{
case 0: return 1;
case 1: return x;
default:

return x * pow (x, n - 1);
}
}

_Great_
06.01.2008, 10:02
кхм кхм) еклмн))))ужас то какой) pow я еще не учил..)
я думал получится чтото вроде

#include <iostream>
using namespace std;
int factorial(int);
int main() {
cout << factorial(3) << endl;
}
int factorial(int n) {
if (n == 0)
return 1;
else
return n * factorial(n-1);
}

Ну дык и получилось почти такое, только функция называется pow() (это _моя_ функция) и считает степень, А не факториал

B@ton
06.01.2008, 16:32
Подскажите где можно найти полный список библиотек языка С++ и описание функций в этих библиотеках (такие описания часто бывают в учебниках но они только по самым распространенным функциям и мне этого мало!) желательно на русском языке!
З.Ы: Поиск юзал ,Help смотрел там все есть но на английском а надо на русском!

P(i)n*Fl0p1
09.01.2008, 18:37
Пабло Халперн
The C++ Standart Library from Scratch
Pablo Halpern

книжко хорошая

6i0$
11.01.2008, 16:40
Поможите народ! Решил учить С++, начал искать справочники разные, проги. Дк вот чем отличается Vc++ и C++? Или это две одинаковые вещи? Если разные скажите какую будет правильнее учить (Сложность не влияет)?

dinar_007
11.01.2008, 16:47
Поможите народ! Решил учить С++, начал искать справочники разные, проги. Дк вот чем отличается Vc++ и C++? Или это две одинаковые вещи? Если разные скажите какую будет правильнее учить (Сложность не влияет)?
Это идентичные понятия, но с твоим уровнем начни учить C...
Visual C++ - это просто говорит что используется для разработки визуальных интерфейсов, но язык один и тот же... Просто ориентация на разные технологии...

Digimortal
11.01.2008, 21:02
Это идентичные понятия, но с твоим уровнем начни учить C...
Visual C++ - это просто говорит что используется для разработки визуальных интерфейсов, но язык один и тот же... Просто ориентация на разные технологии...
мде.. =/

С++ - это язык программирования..
Visual C++ - это среда для разработки приложений на языке С++ ..

0x22b
11.01.2008, 23:05
B@ton

у мну есть описание всех функций языка "C" и библиотек которые они испульзуют..

Forcer
11.01.2008, 23:08
dinar_007
Есть среда разработки - MS Visual C++ 6.0 - 98-го года.

Digimortal
12.01.2008, 00:45
>> Не хочу спорить, возможно я и не прав... Ну мне лично так кажется...

а я и не собирался ни о чем спорить.. вопрос был поствлен такой: "чем отличается Vc++ и C++?"
ты ответил что это "идентичные понятия", но VC++ "используется для разработки визуальных интерфейсов".. я же написал в чем заключается разница между этими понятиями.. нету такого языка как VC++ или такой среды разработки как С++ - надо различать язык программирования от средств разработки приложений на данном языке..

>> Она потому и называется Visual C++, потомучто заточена на клепание приложение с интерфейсами...

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

>> Всё же - она называется Microsoft Visual C++ если на то пошло...

ну, я полагаю, все и так поняли что именно о MSVC++ идет речь..

>> Среда разработки называется Microsoft Visual Studio...

MSVS - это интегрированная среда разрботки, включающая инструменты для разработки приложений на нескольких языках, в которую может быть включена и MSVC++.. у меня, например, стоит просто MSVC++ EE..

>> А Visual C++ потому что есть ***ня вроде MFC...

кстати говоря, в имеющейся у меня в наличии MSVC++ Express Edition этого самого MFC и нету..

>> P.S. Есть например Visual Prolog, он же от этого не стал средой в Visual Studio...

незнаю, что там с Visual Prolog'ом.. это, наверно, и язык и среда программирования, типа как VisualBasic.. но VC++ - это именно среда, а не язык..

>> Короче, кто как хочет - так и трактует :) Это моё ИМХО

)

ZEXEL
12.01.2008, 00:49
C++ Borland Builder - самая лучшая программа для розработки програм на СИ плас-плас

Delimiter
12.01.2008, 00:51
herna

А твои мысли оперируют понятиями битов переноса итд, флагами переполнения итд?

Или под твой мозг должны выпустить процессор который должен перепроверять(повтор) операцию при словах "не гони"?

Forcer
12.01.2008, 00:56
ZEXEL, скажи лучше, какие среды разработки ты пробовал?
Лично я считаю, что лучшей не существует - всё зависит от того, что ты пишешь. Сам юзаю MSVS 2005, MinGW( KEZ - посоветовал, спс - понравилось ).

_Great_
12.01.2008, 01:19
dinar_007, не обдалбывайся так больше, чтобы постить в КОДИНГе. Мне за тобой удалять еще

horlyk
12.01.2008, 20:15
Я столкнулся с небольшой проблемкой при написании тел. справочника. Я использовал переменные типа чар(Имя, фамилия...) и интеджер(телефон, возраст...). Я, когда тестил прогу, случайно ввел в в поле тел номера буквы и прога полетела багом. Как можно сделать проверку того, что ввел пользователь - цифры или буквы, чтоб потом можно было вернутся на предидущий этап?

Delimiter
12.01.2008, 20:21
Чего то ты "заморочился"

atol strtol atoi(маловат правда) не вылетают с ошибкой даже если там будут все буквы просто результат будет 0(ноль)!

... другое дело если ты пытаешься по DAO (ODBC) передать поле таблице в базе
дык просто переведи предварительно ATO*** -ами в то что тебе нужно!

если же у тебя MFC элементы, то просто не используй int как тип переменной.... всегда пользуйся CString а в соответствии с логикой переводи из CString в то что тебе нужно.

horlyk
12.01.2008, 20:27
спс, но ты немного не понял - мне нужно узнать - есть ли там буквы или нету. Мне нужно, чтоб там были только цыфры и ничего лишнего. atoi немного не в этом случае, так как мне всеравно нужен результат в цыфрах, а не в буквах. Как можно такую проверку сделать?

Delimiter
12.01.2008, 20:33
хоть я и не понял "ГДЕ ЭТО ТАМ"

bool IsAllDigits(char *str)
{
for(int i=0 *(str+i)!=0;i++)
if(*(str+i)<0x30 || *(str+i)>0x39)
return false;
return true;
}
где str -предварительный буфер.

если же ты используешь scanf .... то о каком возврате тут говорить.... кароче я не понял где это "ТАМ".

например:
char str[30];
do {
printf("Input telephone number");
scanf("%s",str);
} while(!IsAllDigits(str));
long tel=atol(str);

horlyk
12.01.2008, 20:50
int age;
char tage[] = "введите ваш возраст";
CharToOem(tage,tage);
printf(tage);
cin>>age;
так вот - мне нужно, чтобы в age были только цифры без всяких преобразований - только проверка того, что ввел пользователь, а именно: буквы или цифры.

Delimiter
12.01.2008, 20:56
то есть когда я ввожу свою собственную проверку на валидность(правильность) тебе не нравится????
ведь твоя команда
cin>>age
переполняет.... выходит за рамки

байты в памяти где зарезервировано место для age это 0 и 1
0 1 2 3 4

ты же посылаешь туда .... для того что бы был краш более 2-х байтов
место 2 и 3 заняты под другие нужды, ДЕЛО НЕ В СООТВЕТСТВИИ ТИПОВ!!!!

куда вставлять проверку если ты переполняешь одной командой????
8)))) вслушивайся в слова .... сейчас сменю географическое положение.
если еще не сделаешь напишу пример!

horlyk
12.01.2008, 21:00
м... я немного протупил... Тогда возможно age обьявить чаром и потом сделать проверку и преобразование, я так понял? если да, то плз, напиши небольшой пример с преобразованием, как он юзается.

Sharingan
12.01.2008, 21:59
а че типа массив цифер 1234567890 низя сделать, и если не подходит ни одному элементу массива то нафиг

horlyk
12.01.2008, 22:07
не, просто я думаю, чтоб не усложнять жизнь - просто проверить, все ли элементы чарового age являются цифрами и преобразовать чар в инт, если такое возможно... но как сделать проверку и преобразование - я не знаю...

razzzar
12.01.2008, 22:08
bool IsAllDigits(char *str)
{
for(int i=0; *(str+i)!=0; i++)
if(*(str+i)<0x30 || *(str+i)>0x39)
return false;
return true;
}

...

char age[5];
int nage;
do
{
cin>>age;
} while ( !IsAllDigits(age) );
nage = atoi(age);

Jes
12.01.2008, 22:53
все ли элементы чарового age являются цифрами
или просто умнож char на единицу и посмотри результат ...

Forcer
12.01.2008, 23:26
Jes
В результате получишь код символа. Что это даст?

Sharingan
12.01.2008, 23:51
Кто может помочь, как сделать поддержку работы с русским языком, на Vc6 просто незнаю как сделать что бы спокойно работало на русском все...
с меня +

horlyk
12.01.2008, 23:57
Юзай
CharToOem(,) и фсе будет пахать на русском)

Delimiter
13.01.2008, 00:08
проверь мою функцию
long get_number( int limit)
{
char *buf;
char c;
int i;
buf=malloc(limit+1);
for(i=0;(c=getch())!=13 && i<limit;i++)
if(c>='0' && c<='9')
*(buf+i)=c;
else
i--;
*(buf+i)=0;
long l=atol(buf);
free(buf);
return l;
}
она не должна позволять вводить ничего кроме цифр и не позволяет переполнить буфер

Sharingan
13.01.2008, 00:13
ага только дело в том что в программе много чего надо преобразовывать если юзать ту функцию ЧартоОем

Delimiter
13.01.2008, 00:16
если использовать Уникод то поверь что не меньше 8)))))

Forcer
13.01.2008, 00:22
Jes
ты предлагаешь из массива типа char узнавать код символа умножением на единицу?

Sharingan
13.01.2008, 00:46
ну так что кто то поможет с русским текстом

Delimiter
13.01.2008, 00:55
дык.... обьясни в чем фишка.

если хотят напрячь русский язык то кодят в уникоде. Первые главы Рихтера....

Sharingan
13.01.2008, 01:04
у меня везде в коде работа с русским текстом, считывание русского текста с файла, разбор руского текста печать результатов с русским текстом, но вместо него печатает мусор! хотя обрабатывает, и вот мне надо что бы печатало русский текст

Delimiter
13.01.2008, 01:09
если на принтер , то проверь настройки Фонтов перед печатью
LOGFONT logFont;
logFont.lfHeight=80;
logFont.lfWidth=0;
logFont.lfEscapement=0;
logFont.lfOrientation=0;
logFont.lfWeight=FW_NORMAL;
logFont.lfItalic=0;
logFont.lfUnderline=0;
logFont.lfStrikeOut=0;
logFont.lfCharSet=ANSI_CHARSET||RUSSIAN_CHARSET; //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
logFont.lfOutPrecision=OUT_DEFAULT_PRECIS;
logFont.lfClipPrecision=CLIP_DEFAULT_PRECIS;
logFont.lfQuality=PROOF_QUALITY;
logFont.lfPitchAndFamily=VARIABLE_PITCH || FF_MODERN;
strcpy(logFont.lfFaceName,"Times New Roman");

Sharingan
13.01.2008, 01:11
та не на принтор на экран !!

Delimiter
13.01.2008, 01:14
обьясняй что за приложение (перед тем как задавать вопрос сформулируйте ,чтоб не уточнять)
Консольное???
Диалоговое????
Многооконное???

Sharingan
13.01.2008, 01:15
консольное, а какое еще, Vc6.0

horlyk
13.01.2008, 01:18
ыыыы, ты что, думаешь, что в ВС++ только консольные окна? жжешь однако)

Sharingan
13.01.2008, 01:19
плин, я уточнил какой у меня компелятор, он просил поподробнее...

Delimiter
13.01.2008, 01:37
wprintfW
wsprintfW

KEZ
13.01.2008, 02:03
Так интересно, тема про C/C++, а я тут не нашел ничего про эти языки.
Лишь быдлокодерские вопросы про WinAPI (аналогично тому, что в делфи...) и т.п.
Как вывести строку на принтер.. Как закрыть окно.. Причем блять тут си плюс плюс я ХЗ.

PS Размер char не равен 8битам (1 байту). Т.к. в стандарте такое не описано. Есть платформы, на которых используется 9бит.

Delimiter
13.01.2008, 02:06
Kez..... но это же новички, они пока даже отделить не могут где кончается язык а где начинается Api.... пока для них это ОДНО.....

"ЧТОТО" ЧТО ПОЗВОЛЯЕТ НАПИСАТЬ ПОЛЕЗНУЮ ПРОГРАМКУ!

я например тоже долго считал что функции

str*** это реализация языка а оказывается голимый API (kernel32.dll) как впрочем и вышеуказанные.

KEZ
13.01.2008, 02:27
не буду наверное с тобой спорить =\\ ...

ZaCo
13.01.2008, 02:38
2KEZ кстати char это всегда один байт, а вот байт, как ты и написал, может и не являться октетом, и быть отличным от 8 бит:)

Tigger
13.01.2008, 14:05
Сидеть дома скучно...решил заняться С++...но вообще не имею представления, что для этого надо....какая нуждна прога? или писать в блокноте? В общем такого плана вопросы))
Надесь, что обратился туда, куда нада...

Name
13.01.2008, 14:33
2Tigger
Скачай книгу Д.Либерти - С++ за 21 день (http://proklondike.com/file/C/Jes_Liberty_-_CPP_samostoyatelno_za_21_den.rar), там для новичка неплохо расписано как и с чего начать.
Среду разработки конечно же лучше использовать MS Visual C++ или Borland C++ Builder.

zindi
14.01.2008, 21:19
Нужна помощ,по задачам на вкложеный for.с++
1.Дано висота і ширина прямокутника. Вивести на екран контур прямокутника:
******
* *
* *
******

2.Дано висота трикутника. Вивести на екран контур трикутника виду:
*
* *
* *
********
Зарание спс.

bxN5
14.01.2008, 22:04
На С нужно все парные елементы масива Ан поделить на 2 , а к не парным прибавить 1
Еси можно сразу кусок кода
с меня +

sandalwood
14.01.2008, 22:18
в таких кодесах оптимальнее использовать тернарную альтернативу:
array[i] > 0 ? array[i]=/2 : array[i]=+1;

bxN5
14.01.2008, 22:20
я задание не то копипаснул) перечитайте

GlOFF
14.01.2008, 23:42
bxN5 А как понимать ПАРНЫЙ :) ???

tafels
14.01.2008, 23:50
bxN5 А как понимать ПАРНЫЙ :) ???
это 2,4,6,8,10,12 ...... не парные - 1,3,5,7,9,11 ;)

Ky3bMu4
14.01.2008, 23:56
это 2,4,6,8,10,12 ...... не парные - 1,3,5,7,9,11
Врятли. Массив 1,3,3,4 , 2 - парный эл-мент, остальные - нет.
Примерно так:

int ah[size]; //чё там у тя

bool is_par(int val,int n){
for(int i=0;i<=size;i++){
if(i!=n){if(ah[i]==val) return 1;}}
return 0;
}
}

int main(void){
for(int i=0;i<=size;i++){
if(is_par(ah[i],i)) ah[i]/=2;
else ah[i]+=1;
}
return 0;
}

RIPN
15.01.2008, 15:38
2Tigger
Скачай книгу Д.Либерти - С++ за 21 день (http://proklondike.com/file/C/Jes_Liberty_-_CPP_samostoyatelno_za_21_den.rar), там для новичка неплохо расписано как и с чего начать.
Среду разработки конечно же лучше использовать MS Visual C++ или Borland C++ Builder.

А есть эта бука в html-виде выложеная? По страничкам..

z01b
16.01.2008, 01:57
Как программно вызвать BSOD(моментально, т.е. без работой с реетром).
ЗЫ У меня был код на С, только я его потерял.

Basurman
16.01.2008, 12:01
# define BYTESWAP(n) ( \
(((n)&0x000000ff) << 24) | \
(((n)&0x0000ff00) << 8 ) | \
(((n)&0x00ff0000) >> 8 ) | \
(((n)&0xff000000) >> 24) )

не пойму, почему интерпретатору не нравится этот кусок кода... Сама ошибка

gcc -c -Wall -O2 -fomit-frame-pointer -I/usr/local/include -L/usr/local/lib -funroll-loops xxxxxxx.c
xxxxxxx.c:68: syntax error before `&'
xxxxxxx.c:68: stray '\' in program
xxxxxxx.c:69: stray '\' in program
xxxxxxx.c:70: stray '\' in program
*** Error code 1

z01b
16.01.2008, 18:07
# define BYTESWAP(n) ( \
(((n)&0x000000ff) << 24) | \
(((n)&0x0000ff00) << 8 ) | \
(((n)&0x00ff0000) >> 8 ) | \
(((n)&0xff000000) >> 24) )

не пойму, почему интерпретатору не нравится этот кусок кода... Сама ошибка

gcc -c -Wall -O2 -fomit-frame-pointer -I/usr/local/include -L/usr/local/lib -funroll-loops xxxxxxx.c
xxxxxxx.c:68: syntax error before `&'
xxxxxxx.c:68: stray '\' in program
xxxxxxx.c:69: stray '\' in program
xxxxxxx.c:70: stray '\' in program
*** Error code 1

может gcc не поддерживает такой способ написания выражения? Попробуй написать всё в ряд.

reversys
16.01.2008, 18:36
2 z01b

http://bugtraq.ru/library/internals/bsod.html

Hardover
17.01.2008, 18:28
Сейчас изучаю С++ в консольном режиме, пишу проги в визуал студия 2008 собственнов опрос можно ли сделать так что бы консоль понимала русские буквы т.е я сейчас пишу cout<<"Привет" выводится карякозябры,
Я видел способы в инете сделать на русском но там код надо было писатаь по другому, а собственно через настройки как нибудь можно

Sharingan
17.01.2008, 18:33
ну, есть русификатор keyrus (http://www.gcmsite.ru/?pg=art&id=keyrus-dos-windows)
есть функция из Вин Апи CharToOem
или же попробуй сделать старт.бат в нем прописать chcp 1252, а затем название проги (батник запихнуть в папку де прога)
Все там вообще зависит походу от настройки винды в плане кодировки

razzzar
17.01.2008, 19:08
Hardover,
установи в консоле правильную кодировку.
функция setlocale(); посмотри ее описание на msdn2.microsoft.com

KSoniX
18.01.2008, 19:15
В С# ест функция getprocesses() он загружает все процессы.
В Си как загрузит процессы?

da_ff
18.01.2008, 20:55
2 KSoniX
посмотри функцию EnumProcesses

Hardover
20.01.2008, 17:54
Спасибо большое, с русским шрифтом разобрался.
Но есть еще два достаточно глупых вопросов.
1. Как организовать задержку после выполнения программы?
сейчас я пишу так cin >> a; но поидеи это не правильно.
Скажем в TP можно написать repeat until keypressed и программа не закроется пока не будет нажата клавиша. Есть ли такая функция в С++.
2. Просто интересно сложно ли потом будет перейти на программирование на С++ в графическом интерфейсе т.е писать программы с граф.оболочкой. (Сильно ли отличает от программирование в консоли)
Буду признателен за ответы.

z01b
20.01.2008, 17:58
Спасибо большое, с русским шрифтом разобрался.
Но есть еще два достаточно глупых вопросов.
1. Как организовать задержку после выполнения программы?
сейчас я пишу так cin >> a; но поидеи это не правильно.
Скажем в TP можно написать repeat until keypressed и программа не закроется пока не будет нажата клавиша. Есть ли такая функция в С++.
2. Просто интересно сложно ли потом будет перейти на программирование на С++ в графическом интерфейсе т.е писать программы с граф.оболочкой. (Сильно ли отличает от программирование в консоли)
Буду признателен за ответы.
1. Почему не правельно?
2. #include <conio.h> getch()
3. Не знаю как правильно выразится, попробую =). Смотря на что, если писать на апи, то будет труднее немного, а если в Borland C++ Builder, наверное легче.

Hardover
20.01.2008, 18:10
спасибо за ответ, помогло.
А не правильно потому что при cin >> a если пользователь нажимает ентер то программа на это не реагирует, а если он нажимает любую клавишу (цифровую, буквенную, пробел и.т.д) то начинает ввод этих символов, и как бы получается что бы закрыть программу тебе надо ввести хотя бы один символ а потом ентер. Ну а это как бы выразиться не красиво что ли.

KEZ
20.01.2008, 18:14
А Ctrl+C нажать не судьба?

nerezus
20.01.2008, 18:15
некрасиво использовать cin с клавиатуры.

z01b
20.01.2008, 18:16
спасибо за ответ, помогло.
А не правильно потому что при cin >> a если пользователь нажимает ентер то программа на это не реагирует, а если он нажимает любую клавишу (цифровую, буквенную, пробел и.т.д) то начинает ввод этих символов, и как бы получается что бы закрыть программу тебе надо ввести хотя бы один символ а потом ентер. Ну а это как бы выразиться не красиво что ли.
ну тогда, getch() тебе в помощь =)

sandalwood
20.01.2008, 19:07
Как организовать задержку после выполнения программы?
system("pause");

z01b
20.01.2008, 20:21
system("pause");
а.. забыл =)
ЗЫ Если пользоваться system() то #include <stdlib.h>

criz
20.01.2008, 20:34
system("pause");
Можно еще getchar(); :)

Как узнать ИП подключившегося, не используя:
struct hostent FAR * gethostbyname (const char FAR * name);
Пробовал вот так:
loc.sin_family = AF_INET;
loc.sin_port = htons(PORT);
loc.sin_addr.s_addr = htonl(INADDR_ANY);
/*some code*/
printf("%s is connected\n", inet_ntoa(loc.sin_addr));

Возврщает строчку вида: 0.0.0.0

Joker-jar
20.01.2008, 20:39
В winsock вроде что-то типа getpeername

KSoniX
21.01.2008, 17:23
Как использовать EnumProcesses ?

Delimiter
21.01.2008, 17:32
http://www.rsdn.ru/Forum/?mid=891588

KSoniX
21.01.2008, 18:40
спасибо то што нужна !!!!!!!

KSoniX
21.01.2008, 19:07
а как получить Handle процессов по их Hwnd окон, если есть другие способы то пригодится тоже.

z01b
21.01.2008, 19:11
а как получить Handle процессов по их Hwnd окон, если есть другие способы то пригодится тоже.
OpenProcess()

KSoniX
21.01.2008, 19:19
а можно подробнее?

z01b
21.01.2008, 19:27
а можно подробнее?
HANDLE hProcess;
hProcess=OpenProcess(..,..,..,),;
The OpenProcess function returns a handle of an existing process object.

HANDLE OpenProcess(

DWORD dwDesiredAccess, // access flag
BOOL bInheritHandle, // handle inheritance flag
DWORD dwProcessId // process identifier
);


Parameters

dwDesiredAccess

Specifies the access to the process object. For operating systems that support security checking, this access is checked against any security descriptor for the target process. Any combination of the following access flags can be specified in addition to the STANDARD_RIGHTS_REQUIRED access flags:

Access Description
PROCESS_ALL_ACCESS Specifies all possible access flags for the process object.
PROCESS_CREATE_PROCESS Used internally.
PROCESS_CREATE_THREAD Enables using the process handle in the CreateRemoteThread function to create a thread in the process.
PROCESS_DUP_HANDLE Enables using the process handle as either the source or target process in the DuplicateHandle function to duplicate a handle.
PROCESS_QUERY_INFORMATION Enables using the process handle in the GetExitCodeProcess and GetPriorityClass functions to read information from the process object.
PROCESS_SET_INFORMATION Enables using the process handle in the SetPriorityClass function to set the priority class of the process.
PROCESS_TERMINATE Enables using the process handle in the TerminateProcess function to terminate the process.
PROCESS_VM_OPERATION Enables using the process handle in the VirtualProtectEx and WriteProcessMemory functions to modify the virtual memory of the process.
PROCESS_VM_READ Enables using the process handle in the ReadProcessMemory function to read from the virtual memory of the process.
PROCESS_VM_WRITE Enables using the process handle in the WriteProcessMemory function to write to the virtual memory of the process.
SYNCHRONIZE Windows NT only: Enables using the process handle in any of the wait functions to wait for the process to terminate.


bInheritHandle

Specifies whether the returned handle can be inherited by a new process created by the current process. If TRUE, the handle is inheritable.

dwProcessId

Specifies the process identifier of the process to open.



Return Values

If the function succeeds, the return value is an open handle of the specified process.
If the function fails, the return value is NULL. To get extended error information, call GetLastError.

Remarks

The handle returned by the OpenProcess function can be used in any function that requires a handle to a process, such as the wait functions, provided the appropriate access rights were requested.
When you are finished with the handle, be sure to close it using the CloseHandle function.

KSoniX
21.01.2008, 19:34
я в msdn это уже прочитал толка ни понял послед ного параметра DWORD dwProcessId

Delimiter
21.01.2008, 19:48
dwProcessId он же PID светится в любом уважающем себя таскменеджере основополагающее понятие
ID процесса в системе!

KSoniX
21.01.2008, 19:57
какой функций получит Pid ?

ZEXEL
21.01.2008, 20:42
Дайте плиз ссылку где скачать мона Borland C++ Builder 6.0 !!!!!! очень надо ,

Sharingan
21.01.2008, 20:53
скачать мож тут (http://n0lik.phpnet.us/2008/01/06/borland-c-builder-6.0-enterprise.html)

criz
22.01.2008, 22:28
В winsock вроде что-то типа getpeername
Спасиб, но мне интересно почему мой код не рабит =(

ZEXEL
23.01.2008, 18:40
Дайте плиз не битую ссылку на Borland C++ Builder 6.0 очень надо !

MegaDeth
24.01.2008, 20:36
что дает "*" после указания типа? например CHAR* ?
ps с си у меня упущение... и он намного геморнее пшп :\
ейбогу на масме привычней :\

0x22b
24.01.2008, 21:30
что дает "*" после указания типа? например CHAR* ?
ps с си у меня упущение... и он намного геморнее пшп :\
ейбогу на масме привычней :\
Указатели в С..

ZEXEL
24.01.2008, 22:52
Подскажите как на C++ написать такой коддинг что бы при температуре процесора 55 градусов выключался кулер на процесоре !
подскажите плиз !

z01b
24.01.2008, 22:53
Подскажите как на C++ написать такой коддинг что бы при температуре процесора 55 градусов выключался кулер на процесоре !
подскажите плиз !
Не думаю что тебе ктонибудь ответит.
ИМХО Задача не из легких.

ZEXEL
24.01.2008, 23:15
Не думаю что тебе ктонибудь ответит.
ИМХО Задача не из легких.
Я сам ето понимаю, но просто может кто то из хакеров делал подобное, так что всё возможно !

GlOFF
24.01.2008, 23:26
ZEXEL Я думаю тебе нужно сходить на www.cracklab.ru или www.wasm.ru и там поспрашивать про такую задачу... :)
Там низкоуровнищики собераются.

Delimiter
25.01.2008, 00:07
Никак написать нельзя!!!!
... вернее можно , НО ЭТО СПЕЦИФИЧНО ДЛЯ КАЖДОГО ТИПА МАТЕРИНОК.

известная програмка AsusProb использует 42 типа доступа (и это только ее материнки) к термодатчику.

Биосы Award b AMi, выводят эту информацию но опять же ориентируясь на специфику каждой материнки.
НЕЛЬЗЯ НАПИСАТЬ УНИВЕРСАЛЬНУЮ а к определенной нужно искать Vendor информацию!

.... если ты сказал что напишешь такую, то ТЫ ПОПАЛ.... !!!

P.S. Понятно что этот микродевайс если будет посложнее чем "извещатель" то его сканированием in и out, без знания алгоритма обмена задача АРХИСЛОЖНАЯ, ведь ты потратишь кучу времени, найдешь решение ТОЛЬКО ДЛЯ СВОЕЙ МАТЕРИНКИ.

нужно ждать документированных возможностей самих процессоров, AMD идет в этом направлении, но чего то никак не дойдет ;)

ZEXEL
25.01.2008, 23:02
ПОмогите плиз написать на С++ такую формулу, а то не знаю как !
http://zexel.ipsys.net/pict.JPG
вот ссылка на формулу(рисунок формулы) помогите плиз !

Jes
25.01.2008, 23:27
если я правильно понял вопрос ...
#include <math.h>

x = pow (5,0.25) + 5 ;

ZEXEL
25.01.2008, 23:49
если я правильно понял вопрос ...
#include <math.h>

x = pow (5,0.25) + 5 ;

Спасибо за ответ, я уже зделал но немного по другому !
sqrt(sqrt(5))+5;

criz
27.01.2008, 01:15
...пытаюсь инжектить свой код в notepad'овский процесс. Метод обычный:

hProcess = OpenProcess(PROCESS_ALL_ACCESS, NULL, prc.th32ProcessID);

lpMemory = VirtualAllocEx(hProcess, NULL, sizeof(buffer), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);

WriteProcessMemory(hProcess, lpMemory, (LPVOID *)&buffer, sizeof(buffer), &nums);

CreateRemoteThread(hProcess, NULL, 0, lpMemory, NULL, NULL, &id)

После запуска блокнот выполняет "аварийную посадку":
"notepad.exe - обнаружена ошибка. Приложение будет закрыто. Бла-Бла-Бла"
GetLastError() возвращает 0.
Что я не так делаю?

criz
27.01.2008, 23:26
noobyara, пасиб :)
Рихтер оффигенно помог =)
З.Ы. вот только функция из длл-ки не хочет запускаться :))

criz
28.01.2008, 02:20
Разобрался немного, это хорошо. А его пример запускал? Вот пример(MVS2005) ( http://slil.ru/25407175)

Во! Этого у меня и не было :) Спасиб)))
А что за функция у тебя в Dll выполняется если не секрет?
Да просто MesageBox пытался вызвать...
З.Ы.А вобще мне надо проспаться и почитать Рихтера :)

andreipup
28.01.2008, 13:36
Всем привет.Хочу начять изучать язык с/с++ какие книги почитать лучше а то так много всего а я полный ноль в этом. :) :) :) :) :)

.Slip
28.01.2008, 13:48
Всем привет.Хочу начять изучать язык с/с++ какие книги почитать лучше а то так много всего а я полный ноль в этом. :) :) :) :) :)
Джесс Либерти - с++. Имхо пойдёт тебе для начала

Forcer
28.01.2008, 13:54
Дейтел, Дейтел, "Как программировать на Си" - для новичков самый лучший выбор, на мой взгляд.

Посмотри, здесь полно книг выложены с описаниями:
Books C\C++ (http://forum.antichat.ru/threadnav8725-1-10.html)

nerezus
28.01.2008, 22:08
Всем привет.Хочу начять изучать язык с/с++ какие книги почитать лучше а то так много всего а я полный ноль в этом C и C++ - 2 разных языка, абсолютно разных и мало похожих. Единственное сходство в синтаксисе. Определись, какой из них ты хочешь изучать.

andreipup
29.01.2008, 14:18
Хотелось бы изучать С++.Еще раз повторюсь я полный ноль в этом с какой книги мне лучше начать.Заранее всем спасибо за помощь! :)

nerezus
29.01.2008, 19:21
Изучать по 2м книгам параллельно. Причем одна из них - от Б. Страуструпа. По ней сложно учить, но она краткая и четкая, для заполнения белых пятен. А в качестве первой "c++ за 21 день" от Джесс Либерти бы посоветовал.

andreipup
29.01.2008, 22:22
Изучать по 2м книгам параллельно. Причем одна из них - от Б. Страуструпа. По ней сложно учить, но она краткая и четкая, для заполнения белых пятен. А в качестве первой "c++ за 21 день" от Джесс Либерти бы посоветовал.


Выложи пожалуйста книгу c++ за 21 день если не сложно! :)

Hardover
29.01.2008, 22:58
Хотелось бы изучать С++.Еще раз повторюсь я полный ноль в этом с какой книги мне лучше начать.Заранее всем спасибо за помощь! :)
Я изучаю по книге Х.М. Дейтел П.Дж.Дейтел "Как программировать на С++"
Начал изучать практически с нуля, до этого немного знал Pascal

Alpha][
30.01.2008, 19:33
Народ , подскажите плиз где можно прочитать/посмотреть про работу в с++ с jpeg файлами . Конкретно нужно код программы с помощью который осуществляется перекодировка jpeg в bmp .
PS не прошу дать код , просто не могу найти найти нигде конкретную инфу по этому вопросу ... :(
PSS может есть какая-нибудь книга на эту тему хорошая . Подскажите плиз :)

z01b
30.01.2008, 20:01
[']Народ , подскажите плиз где можно прочитать/посмотреть про работу в с++ с jpeg файлами . Конкретно нужно код программы с помощью который осуществляется перекодировка jpeg в bmp .
PS не прошу дать код , просто не могу найти найти нигде конкретную инфу по этому вопросу ... :(
PSS может есть какая-нибудь книга на эту тему хорошая . Подскажите плиз :)
http://en.wikipedia.org/wiki/.bmp
http://en.wikipedia.org/wiki/.jpeg

Alpha][
30.01.2008, 22:48
Ммм ... я прочитал , но ничего не нашел там про перекодирование ...
Покопался немного нашел только библиотеку CxImage . Но она не позволяет перегонять jpeg в bmp ? только bmp в jpeg :(

P(i)n*Fl0p1
31.01.2008, 15:24
Вообщем читаю читаю самоучитель..встретилась такая фигня:http://www.valar.ru/gallery/0108/1201778623_.jpg
А оно вообще надо???эти unsigned,lon,short Можно ли просто всегда int писать???или придется всетки писать не только int

0x22b
31.01.2008, 15:35
посмотри на значения, они все разные.. отсюда вывод кагда надо(тебе, не компилятору) их использовать, используй в соответствии с ситуацией.. а если ты по случайке запишеш в int значение типа long int, представляеш что будет?! Это важная табличка, советую запомнить как размер так и по возможности значения типов, тебе это потом ох как пригодится..

_Great_
31.01.2008, 16:52
а почему ничего не сказано про char / unsigned char?
мол -128..127, 0..255

P(i)n*Fl0p1
31.01.2008, 19:35
а если ты по случайке запишеш в int значение типа long int, представляеш что будет?!
а если наоборот меньшие числа буду писать с int ведь ничего Такого не произойдет??..вот это меня и интересует
просто как написано меньше Озу будет есть программа)
и причем написано что "Сейчас уже наверное Оперативная память на компьютерах больше десятков тысяч байт,так что можно и необращать внимания на разницу функций"
чтото вроде того)))
вот и вопрос то в чем
можно ли использовать Int для всех чисел не превышающих его...плохо ли это будет или нет?

0x22b
31.01.2008, 19:54
если числа не привышают диапазона значений типа, то можно использовать..

GlOFF
31.01.2008, 20:27
P(i)n*Fl0p1 Читай пока что дальше, особо над этим не задумывайся и всегда юзай пока int. В дальнейшем все встанет на свои места. :)

Slip
31.01.2008, 20:33
просто как написано меньше Озу будет есть программа)

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

Vilelus
01.02.2008, 00:02
Не считайте за полного идиота, вообщем решил начать изучать программирование. Хотел задать несколько вопросов.

Вопрос №1. С какого языка программирования надо начинать новичку?

Вопрос №2. Какие программы надо для этого использовать? Т.е. какие программы надо использовать для написания программ) :)

Вопрос №3. Если у меня будут еще вопросы когда я разберусь с №1 и №2, к кому из пользователей Ачата, я могу обратится за помощью on-line? Т.е. через ICQ.

cash$$$
01.02.2008, 00:16
Как программно в C# вручную задать размеры главного окна?
int x,y;
...
this.Size.Heigth=X;
this.Size.Width=Y;
...

Jes
01.02.2008, 00:32
this.ClientSize = new System.Drawing.Size(x, y);

zindi
01.02.2008, 01:40
Дана матриця розмірністю 10х10.Виконати циклічне зрушення елементів вліво або вправо на вказану користувачем кількість. Как зделать здвиг?

z01b
01.02.2008, 01:45
Дана матриця розмірністю 10х10.Виконати циклічне зрушення елементів вліво або вправо на вказану користувачем кількість. Как зделать здвиг?
Еслиб я понял что ты только что сказал ...

zindi
01.02.2008, 03:27
есть int A[10][10];заполнено редномом.Нужно здвинуть елементы масиву лево или право.На указану юзером количество.

Kaimi
01.02.2008, 04:51
Есть два файла file1, file2
На выходе нужно получить данные file1 без file2 (построчное сравнение)

Подскажите как, а то через потоки как то криво получается, медленно...

0x22b
01.02.2008, 15:05
Не считайте за полного идиота, вообщем решил начать изучать программирование. Хотел задать несколько вопросов.

Вопрос №1. С какого языка программирования надо начинать новичку?

Вопрос №2. Какие программы надо для этого использовать? Т.е. какие программы надо использовать для написания программ) :)

Вопрос №3. Если у меня будут еще вопросы когда я разберусь с №1 и №2, к кому из пользователей Ачата, я могу обратится за помощью on-line? Т.е. через ICQ.

Не хочу порождать войну, но посоветую С++, инструменты Dev-C++ или MS VS C++..
стучи 2765600..

dinar_007
01.02.2008, 15:37
Есть два файла file1, file2
На выходе нужно получить данные file1 без file2 (построчное сравнение)

Подскажите как, а то через потоки как то криво получается, медленно...

А файловые операции это и есть работа с потоками ввода/вывода...

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

Delimiter
01.02.2008, 21:04
Есть два файла file1, file2
На выходе нужно получить данные file1 без file2 (построчное сравнение)

Подскажите как, а то через потоки как то криво получается, медленно...


Тебе нужен быстрый алгоритм..... потоки тут не при чем!
Если хочешь разобраться сам копай в сторону массива hash строк.... если не разберешься "пости" тему ... помогем! :D

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

Smapt
01.02.2008, 22:09
Напишите пож. пример использования потоков в builder`e :(

sandalwood
01.02.2008, 22:14
msdn->CreateThread (http://msdn2.microsoft.com/en-us/library/ms682453.aspx)

Smapt
01.02.2008, 22:26
Хм... немного не то. Нужно не на WinAPI.

Jes
02.02.2008, 01:18
Хм... немного не то. Нужно не на WinAPI.
посмотри тут:
http://rxlib.ru/forums/index.php?act=ST&f=3&t=2357&st=0&#entry9697

Smapt
02.02.2008, 02:42
Jes, спасибо то что нужно.

Alpha][
02.02.2008, 12:47
Народ так что на счет функции для перекодировки jpeg в bmp ? может кто нибудь помочь ?

KEZ
02.02.2008, 13:22
> Хм... немного не то. Нужно не на WinAPI.

_beginthread

> Народ так что на счет функции для перекодировки jpeg в bmp ? может кто нибудь помочь ?

encode_JPEG_to_BMP(file1,file2)

criz
02.02.2008, 16:00
Товарищи, поможите мну =)
Я делаю инжект в чужой процесс. Длл-ка не хочет выполнять работу =(
Код взял у Рихтера(немного изменил):
sh.dll:

#include <windows.h>
#include <tchar.h>

void chMB(PCSTR s);

#define chDIMOF(Array) (sizeof(Array) / sizeof(Array[0]))



BOOL WINAPI DllMain(HINSTANCE hinstDll, DWORD fdwReason, PVOID fImpLoad) {

if (fdwReason == DLL_PROCESS_ATTACH) {
char szBuf[MAX_PATH * 100] = { 0 };

PBYTE pb = NULL;
MEMORY_BASIC_INFORMATION mbi;
while (VirtualQuery(pb, &mbi, sizeof(mbi)) == sizeof(mbi)) {

int nLen;
char szModName[MAX_PATH];

if (mbi.State == MEM_FREE)
mbi.AllocationBase = mbi.BaseAddress;

if ((mbi.AllocationBase == hinstDll) ||
(mbi.AllocationBase != mbi.BaseAddress) ||
(mbi.AllocationBase == NULL)) {
// Do not add the module name to the list
// if any of the following is true:
// 1. If this region contains this DLL
// 2. If this block is NOT the beginning of a region
// 3. If the address is NULL
nLen = 0;
} else {
nLen = GetModuleFileNameA((HINSTANCE) mbi.AllocationBase,
szModName, chDIMOF(szModName));
}

if (nLen > 0) {
wsprintfA(strchr(szBuf, 0), "\n%p-%s",
mbi.AllocationBase, szModName);
}

pb += mbi.RegionSize;
}

chMB(&szBuf[1]);
}

return(TRUE);
}


void chMB(PCSTR s) {
char szTMP[128];
GetModuleFileNameA(NULL, szTMP, chDIMOF(szTMP));
MessageBoxA(GetActiveWindow(), s, szTMP, MB_OK);
}



inj.c:

BOOL inj(DWORD dwProcId)
{
BOOL res = FALSE;
HANDLE hProcess, hThread;
PWSTR psRemFile;
PTHREAD_START_ROUTINE pThRtn;
int len;
char lbFileName[] = "sh.dll";

//FreeConsole();

hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcId);
if(!hProcess)
{
MessageBox(NULL, "Sorry, I can't open process", "Error", 0);
return 0;
}

len = (strlen(lbFileName) + 1) * sizeof(WCHAR);

psRemFile = (PWSTR) VirtualAllocEx(hProcess, NULL, len, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
if(psRemFile == NULL)
{
MessageBox(NULL, "Sorry, I can't allocating memory", "Error", 0);
return 0;
}
if(!WriteProcessMemory(hProcess, psRemFile, (PVOID) lbFileName, len, NULL))
{
MessageBox(NULL, "Sorry, I can't write in memory", "Error", 0);
return 0;
}

pThRtn = (PTHREAD_START_ROUTINE) GetProcAddress(GetModuleHandle(TEXT("Kernel32")), "LoadLibraryW");
if(!pThRtn)
{
MessageBox(NULL, "Sorry, I can't find process", "Error", 0);
return 0;
}

hThread = CreateRemoteThread(hProcess, NULL, 0, pThRtn, psRemFile, 0, NULL);
if(!hThread)
{
MessageBox(NULL, "Sorry, I can't create thread", "Error", 0);
return 0;
}

WaitForSingleObject(hThread, INFINITE);
res = TRUE;

/*--------------------------------*/
return res;
}

После инжекта должно вываливаться окошко со списком длл-ок процесса, в который инжектимся.

Alpha][
02.02.2008, 17:16
kez
А какой заголовочный файл нужно подключать ?? так не работает .

brasco2k
03.02.2008, 14:14
Подскажите как сохранить в текстовый файл из текстового поля в C#

Jes
03.02.2008, 14:22
using System.IO;
using System.Text;
using (FileStream fs = new FileStream("file.txt", FileMode.Create) // или FileMode.Open , FileMode. ...
{
using (StreamWriter w = new StreamWriter(fs, Encoding.UTF8))
{
w.WriteLine(TextBox1.text.toString()); // toString() - на всякий случай , можно и без него
}
}

brasco2k
03.02.2008, 14:42
using System.IO;
using System.Text;
using (FileStream fs = new FileStream("file.txt", FileMode.Create) // или FileMode.Open , FileMode. ...
{
using (StreamWriter w = new StreamWriter(fs, Encoding.UTF8))
{
w.WriteLine(TextBox1.text.toString()); // toString() - на всякий случай , можно и без него
}
}

Ток оно текст не сохраняет у меня((
Visual C# Express edition 2008
файл создает но не пишет :'(
пишу так с использованием System.IO
FileStream fileopen = new FileStream("text1.txt", FileMode.CreateNew); StreamWriter writer = new StreamWriter(fileopen,Encoding.UTF8); writer.WriteLine(richTextBox1.Text.ToString());
И нифига файл создается а текста там нет

Jes
03.02.2008, 15:02
проверь регистр :
using (StreamWriter w = new StreamWriter(fs, Encoding.UTF8))
{
w.WriteLine(textBox1.Text.ToString());
}

brasco2k
03.02.2008, 16:47
проверь регистр :
using (StreamWriter w = new StreamWriter(fs, Encoding.UTF8))
{
w.WriteLine(textBox1.Text.ToString());
}
не не катит все правилько

brasco2k
03.02.2008, 16:58
Кстати еще вопрос в папке есть папки и мне нужно их имена считать и поместить в массив можно ли та сделать?

criz
04.02.2008, 00:07
Товарищи, поможите мну =)
Я делаю инжект в чужой процесс. Длл-ка не хочет выполнять работу =(
Нашел в чем проблема:
ERROR_DLL_INIT_FAILED
A dynamic link library (DLL) initialization routine failed.
Как с этим бороться?

Smapt
04.02.2008, 00:26
Вот такой вопрос, приложение должно выполнять ресурсоёмкую задачю, при её выполнении виснит главная форма. МОжно ли как-то сделать чтобы она не висла?

criz
04.02.2008, 00:29
МОжно ли как-то сделать чтобы она не висла?
....например, попробовать найти причину "зависания", потом исправить код... в отладчике например....

Jes
04.02.2008, 00:31
многопоточность ...?
а какая срада / компилятор ?

(visual c++)
http://hemswell.lincoln.ac.uk/~slawson/napier/CO42018/labs/lab06.html

(.net)
http://msdn.microsoft.com/library/rus/default.asp?url=/library/rus/cpref/html/frlrfsystemthreadingthreadclasstopic.asp

cash$$$
04.02.2008, 00:47
Какие возможны варианты для значения x(global)

Delimiter
04.02.2008, 02:09
Вот такой вопрос, приложение должно выполнять ресурсоёмкую задачю, при её выполнении виснит главная форма. МОжно ли как-то сделать чтобы она не висла?

... старайтесь понять следующее.....

вы открыли диалоговое окно, дык суть в том что вы одновременно с этим создали нитку окна, где выполняются все функции которые вы в дальнейшем выполняете и функции обработки обновления..... в процентном отношении ваша функция может занять доминируещее время и обновления не будут происходить.Можно попробовать заходить на цикл со слипами на время обновления..... но НЕ ПЫТАЙТЕСЬ это значит вы непоняли что я написал выше!!!!

Выход только один . СОЗДАВАТЬ ОТДЕЛЬНУЮ НИТЬ.

в этом случае мастдай будет раздавать кванты времени раздельно на каждую нить и ваша функция не будет конкурировать с функциями обновления!

Smapt
04.02.2008, 02:10
Jes, в Buildere, многопоточность непомогла....

Kaimi
05.02.2008, 13:43
Можно какой-нибудь небольшой пример создания нитей в билдере, чтобы не фризилось основное окно программы?

z01b
05.02.2008, 17:24
Можно какой-нибудь небольшой пример создания нитей в билдере, чтобы не фризилось основное окно программы?
ИМХО на api, легче на много сделать.
Пихаешь в ф-цию свой код и потом CreateRemoteThread.

Alpha][
05.02.2008, 20:09
Народ , где можно почитать про использование Gdi+ и все его возможности . Через гугл не могу ничего стоящего найти . Помогите плиз оч нужно :rolleyes:

0x22b
05.02.2008, 20:45
[']Народ , где можно почитать про использование Gdi+ и все его возможности . Через гугл не могу ничего стоящего найти . Помогите плиз оч нужно :rolleyes:


http://rsdn.ru/article/gdi/gdiplus2mag.xml

Введение
Что же такое GDI+?
Класс Bitmap – контейнер растровых изображений
Поддержка основных графических форматов
Загрузка из файлов и потоков (IStream)
Создание растров из ресурсов программы
Более сложные варианты загрузки изображений
Графические форматы файлов
Лирическое отступление: 4 основных графических формата
Работа со списком кодеков
Сохранение изображений
Специфические возможности файловых форматов
Сохранение GIF с прозрачностью
Загрузка и сохранение многокадровых файлов
Эскизы изображений
Работа с метаданными изображений
Использование растров при работе с объектом Graphics
Вывод изображений и геометрические преобразования
Качество изображения
Устранение мерцания
Несколько слов о производительности
Демонстрационные приложения
Прямая работа с растровыми данными
Класс Color
Прямой доступ к пикселам
Поддержка прозрачности
Растровые операции

Это всё по ссылке приведённой выше..

Alpha][
05.02.2008, 20:51
0x22b
И снова спасибо :) , только нужно нечто большее , что-то вроде полной документации . Что бы было описание всех возможностей. Особенно интересует возможность устраять шумы с изображений :rolleyes:

0x22b
05.02.2008, 20:59
http://msdn2.microsoft.com/en-us/library/ms533802(VS.85).aspx
http://msdn2.microsoft.com/en-us/library/ms533799(VS.85).aspx

если проблем с английским нет.. это не всё, там менюшка с боку на сайте, так там есть еще много разделов по GDI+

еще валяется на компе книжка по GDI.. но там по основам кажется, ниразу не юзал, мельком только просмоторел..

вот эта книга тебе бы пригодилась..
http://rsdn.ru/res/book/mmedia/methods.xml

Smapt
05.02.2008, 22:19
ИМХО на api, легче на много сделать.
Пихаешь в ф-цию свой код и потом CreateRemoteThread.
А можно небольшой пример использования "CreateRemoteThread" :)

Garfi
05.02.2008, 23:54
Такая проблема, начал изучать C++, остановился но функции cout<<"...";

Задание сделал, вот исходник:

# include <iostream.h>
void main()
}
//
//Resume
//cout<<"\t\t\t\tResume\n";
//cout <<"\n";
//
//cout <<"\t\tsurname"<<"\tIvanchenko";
//
//cout <<"\n";
//cout <<"\t\tName"<<Leonid\n";
//cout <<"\n";
//
//cout <<"\t\tWork at "<<"\" Krocus\"\n";
//cout <<"\n";
//cout <<"\t\tDate of birth: "<<"\t 23.08":
//cout <<"\n";
}

Выдает ошибку - Compiling...
123.cpp
c:\program files\microsoft visual studio\myprojects\123\123.cpp(1) : warning C4067: unexpected tokens following preprocessor directive - expected a newline
c:\program files\microsoft visual studio\myprojects\123\123.cpp(3) : error C2143: syntax error : missing ';' before '}'
c:\program files\microsoft visual studio\myprojects\123\123.cpp(3) : error C2143: syntax error : missing ';' before '}'
c:\program files\microsoft visual studio\myprojects\123\123.cpp(3) : error C2143: syntax error : missing ';' before '}'
c:\program files\microsoft visual studio\myprojects\123\123.cpp(19) : error C2143: syntax error : missing ';' before '}'
c:\program files\microsoft visual studio\myprojects\123\123.cpp(19) : error C2143: syntax error : missing ';' before '}'
Error executing cl.exe.

123.exe - 5 error(s), 1 warning(s)

Вопрос, в чем проблема, вроде все сделал правильно (по примеру в учебнике)?

Jes
06.02.2008, 00:02
# include <iostream.h>
void main()
}
//
//Resume

ааээ , опечатка ?

Delimiter
06.02.2008, 00:06
По поводу НИТЕЙ..... накидал, НО все таки лучше читать книги типа от Рихтера.

1й способ


DWORD WINAPI My_Thread_func1(LPVOID lpParam)
{

}

.....


DWORD dwThread=1;
CreateThread(NULL,0,My_Thread_func1,0,0,&dwThread);




2й способ

UINT My_Thread_func2(LPVOID param)
{

}
...........


AfxBeginThread(My_Thread_func2,hWnd,THREAD_PRIORIT Y_NORMAL);




3й способ

void _cdecl My_Thread_func3( LPVOID pParam)
{
}

.......

_beginthread(My_Thread_func3,0,0);

Smapt
06.02.2008, 01:06
Delimiter, спасибо большое, очень помогло. Остался только один вопрос, как например в первом примере приостановить/продолжить выполнение потока?

zindi
06.02.2008, 01:13
# include <iostream.h>
using namespace std;
void main()
{

cout<<"\t\t\t\tResume\n";
cout <<"\n";
cout <<"\t\tsurname"<<"\tIvanchenko";

cout <<"\n";
cout <<"\t\tName"<<Leonid\n";
cout <<"\n";

cout <<"\t\tWork at "<<"\" Krocus\"\n";
cout <<"\n";
cout <<"\t\tDate of birth: "<<"\t 23.08":
cout <<"\n";
}

Пробуй так:)

rem
06.02.2008, 03:24
Delimiter, спасибо большое, очень помогло. Остался только один вопрос, как например в первом примере приостановить/продолжить выполнение потока?
Чтобы приостановить поток (извне или из потока), используется функция SuspendThread, с аргументом, равным хэндлу потока. Чтобы продолжить выполнение потока, используется функция ResumeThread. Для уничтожения потока используется TerminateThread. Для ожидания окончания выполнения потока можно использовать функцию WaitForSingleObject с хэндлом потока
первоисточник))) ->http://forum.vingrad.ru/articles/topic-157797.html

0x22b
06.02.2008, 06:57
Такая проблема, начал изучать C++, остановился но функции cout<<"...";

Задание сделал, вот исходник:

# include <iostream.h>
void main()
}
//
//Resume
//cout<<"\t\t\t\tResume\n";
//cout <<"\n";
//
//cout <<"\t\tsurname"<<"\tIvanchenko";
//
//cout <<"\n";
//cout <<"\t\tName"<<Leonid\n";
//cout <<"\n";
//
//cout <<"\t\tWork at "<<"\" Krocus\"\n";
//cout <<"\n";
//cout <<"\t\tDate of birth: "<<"\t 23.08":
//cout <<"\n";
}

Выдает ошибку - Compiling...
123.cpp
c:\program files\microsoft visual studio\myprojects\123\123.cpp(1) : warning C4067: unexpected tokens following preprocessor directive - expected a newline
c:\program files\microsoft visual studio\myprojects\123\123.cpp(3) : error C2143: syntax error : missing ';' before '}'
c:\program files\microsoft visual studio\myprojects\123\123.cpp(3) : error C2143: syntax error : missing ';' before '}'
c:\program files\microsoft visual studio\myprojects\123\123.cpp(3) : error C2143: syntax error : missing ';' before '}'
c:\program files\microsoft visual studio\myprojects\123\123.cpp(19) : error C2143: syntax error : missing ';' before '}'
c:\program files\microsoft visual studio\myprojects\123\123.cpp(19) : error C2143: syntax error : missing ';' before '}'
Error executing cl.exe.

123.exe - 5 error(s), 1 warning(s)

Вопрос, в чем проблема, вроде все сделал правильно (по примеру в учебнике)?

Во первых у тебя весь код в операторных скобках функции main закоментен.. Во вторых как бы там нибыло но пусть функция main всетаки возвращает значение int (так как она должна сообщать ОС о правильном завершении программы при помощи функции return 0;), в третьих это С++ а не С привыкай начинать прогу так:

#include <iostream>

using namespace std;

В четвертых для начала твоих познаний и консольных проектов советую использовать что нибудь попроще.. Например Dev-C++ (достаточно хорошая среда разработки)..

Ну и в пятых вот как должна выглядеть твоя программа:


#include <iostream>

using namespace std;

int main(void)
{
cout << "\t\t\t\tResume\n\n";

cout << "\t\tsurname" << "\tIvanchenko\n";

cout << "\t\tName" << "Leonid\n\n";

cout << "\t\tWork at " << "\" Krocus\"\n\n";
cout << "\t\tDate of birth: " << "\t 23.08\n";

system("PAUSE");
return 0;
}


Когда кодируеш, то кодируй внимательно, забываеш закрывать ковычки, ставиш вместо закрывающей точки с запятой двоеточие.. И советую уже сейчас начать придерживаться стиля программироваиния.. Так же не выноси cout << "\n"; на новую строку, ведь \n можно поставить в конец предыдущей в твоем случае.. Удачи в твоих начинаниях! P.S. если что пиши ЛС, могу залить на slil.ru Dev-C++, весит не много, порядка 8 мегобайт..

Kaimi
06.02.2008, 22:17
Подскажите в чем может быть проблема: Делаю запрос к серверу через сокеты, а в ответ вместо данных получаю 501 ошибку.
И подскажите как правильно читать данные из сокета (не нашел толкового примера)

Garfi
06.02.2008, 22:20
Пробуй так:)
Попробовал, 9 errors :)
Когда кодируеш, то кодируй внимательно, забываеш закрывать ковычки, ставиш вместо закрывающей точки с запятой двоеточие..
Я не забываю, я не знал просто! (такой нах учебник!)
P.S. По поводу Dev-C++, было бы неплохо...

Delimiter
06.02.2008, 22:59
Подскажите в чем может быть проблема: Делаю запрос к серверу через сокеты, а в ответ вместо данных получаю 501 ошибку.
И подскажите как правильно читать данные из сокета (не нашел толкового примера)

Не помогет тебе чужой пример!
Технология проста!
1.Берешь снифер.
2.Открываешь страницу в броузере сниферя
3.ОТКРЫВАЕШЬ ЭТУ ЖЕ СТРАНИЦУ В ПРОГРАММЕ сниферя
4.Сравниваешь и находишь что ты делаешь не так!

Ву а-ля... :D .... а иначе тебя "уложит" (без снифера) простое перенаправление запроса....

Kaimi
06.02.2008, 23:16
Да я и так через снифер смотрю что отправляется, нормально там всё вроде

Delimiter
07.02.2008, 00:12
ну неужели ты не доверяешь сниферу??? Или считаешь что http протокол покрыт завесой магии не доступной сниферу? :D

P.S. Проверь ВЕСЬ HTTP заголовок байт за байтом.... или весь отсниференный http заголовок в студию мы посмотрим! :cool:

Kaimi
07.02.2008, 00:57
Как то так:
http://img216.imageshack.us/img216/3629/123ef2.jpg

Delimiter
07.02.2008, 01:05
хмммммм... а при чем тут Post.....

давай по порядку сначала

47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a | GET / HTTP/1.1..
41 63 63 65 70 74 3a 20 69 6d 61 67 65 2f 67 69 | Accept: image/gi
66 2c 20 69 6d 61 67 65 2f 78 2d 78 62 69 74 6d | f, image/x-xbitm
61 70 2c 20 69 6d 61 67 65 2f 6a 70 65 67 2c 20 | ap, image/jpeg,
69 6d 61 67 65 2f 70 6a 70 65 67 2c 20 61 70 70 | image/pjpeg, app
6c 69 63 61 74 69 6f 6e 2f 78 2d 73 68 6f 63 6b | lication/x-shock
77 61 76 65 2d 66 6c 61 73 68 2c 20 61 70 70 6c | wave-flash, appl
69 63 61 74 69 6f 6e 2f 76 6e 64 2e 6d 73 2d 65 | ication/vnd.ms-e
78 63 65 6c 2c 20 61 70 70 6c 69 63 61 74 69 6f | xcel, applicatio
6e 2f 76 6e 64 2e 6d 73 2d 70 6f 77 65 72 70 6f | n/vnd.ms-powerpo
69 6e 74 2c 20 61 70 70 6c 69 63 61 74 69 6f 6e | int, application
2f 6d 73 77 6f 72 64 2c 20 2a 2f 2a 0d 0a 41 63 | /msword, */*..Ac
63 65 70 74 2d 4c 61 6e 67 75 61 67 65 3a 20 72 | cept-Language: r
75 0d 0a 41 63 63 65 70 74 2d 45 6e 63 6f 64 69 | u..Accept-Encodi
6e 67 3a 20 67 7a 69 70 2c 20 64 65 66 6c 61 74 | ng: gzip, deflat
65 0d 0a 55 73 65 72 2d 41 67 65 6e 74 3a 20 4d | e..User-Agent: M
6f 7a 69 6c 6c 61 2f 34 2e 30 20 28 63 6f 6d 70 | ozilla/4.0 (comp
61 74 69 62 6c 65 3b 20 4d 53 49 45 20 36 2e 30 | atible; MSIE 6.0
3b 20 57 69 6e 64 6f 77 73 20 4e 54 20 35 2e 31 | ; Windows NT 5.1
3b 20 53 56 31 3b 20 49 6e 66 6f 50 61 74 68 2e | ; SV1; InfoPath.
32 29 0d 0a 48 6f 73 74 3a 20 76 6b 6f 6e 74 61 | 2)..Host: vkonta
6b 74 65 2e 72 75 0d 0a 43 6f 6e 6e 65 63 74 69 | kte.ru..Connecti
6f 6e 3a 20 4b 65 65 70 2d 41 6c 69 76 65 0d 0a | on: Keep-Alive..
0d 0a | ..



с 1-м GET есть проблемы?

ответ

48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d | HTTP/1.1 200 OK.
0a 53 65 72 76 65 72 3a 20 6e 67 69 6e 78 2f 30 | .Server: nginx/0
2e 35 2e 33 35 0d 0a 44 61 74 65 3a 20 57 65 64 | .5.35..Date: Wed
2c 20 30 36 20 46 65 62 20 32 30 30 38 20 32 31 | , 06 Feb 2008 21
3a 30 32 3a 30 34 20 47 4d 54 0d 0a 43 6f 6e 74 | :02:04 GMT..Cont
65 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f 68 | ent-Type: text/h
74 6d 6c 3b 20 63 68 61 72 73 65 74 3d 77 69 6e | tml; charset=win
64 6f 77 73 2d 31 32 35 31 0d 0a 43 6f 6e 6e 65 | dows-1251..Conne
63 74 69 6f 6e 3a 20 6b 65 65 70 2d 61 6c 69 76 | ction: keep-aliv
65 0d 0a 58 2d 50 6f 77 65 72 65 64 2d 42 79 3a | e..X-Powered-By:
20 50 48 50 2f 35 2e 32 2e 30 2d 38 2b 65 74 63 | PHP/5.2.0-8+etc
68 31 30 0d 0a 50 72 61 67 6d 61 3a 20 6e 6f 2d | h10..Pragma: no-
63 61 63 68 65 0d 0a 43 61 63 68 65 2d 63 6f 6e | cache..Cache-con
74 72 6f 6c 3a 20 70 72 69 76 61 74 65 2c 20 6d | trol: private, m
75 73 74 2d 72 65 76 61 6c 69 64 61 74 65 0d 0a | ust-revalidate..
53 65 74 2d 43 6f 6f 6b 69 65 3a 20 72 65 6d 69 | Set-Cookie: remi
78 63 68 6b 3d 35 3b 20 65 78 70 69 72 65 73 3d | xchk=5; expires=
54 68 75 2c 20 30 35 2d 46 65 62 2d 32 30 30 39 | Thu, 05-Feb-2009
20 32 31 3a 30 32 3a 30 34 20 47 4d 54 3b 20 70 | 21:02:04 GMT; p
61 74 68 3d 2f 3b 20 64 6f 6d 61 69 6e 3d 2e 76 | ath=/; domain=.v
6b 6f 6e 74 61 6b 74 65 2e 72 75 0d 0a 53 65 74 | kontakte.ru..Set
2d 43 6f 6f 6b 69 65 3a 20 72 65 6d 69 78 63 68 | -Cookie: remixch
6b 3d 35 3b 20 65 78 70 69 72 65 73 3d 54 68 75 | k=5; expires=Thu
2c 20 30 35 2d 46 65 62 2d 32 30 30 39 20 32 31 | , 05-Feb-2009 21
3a 30 32 3a 30 34 20 47 4d 54 3b 20 70 61 74 68 | :02:04 GMT; path
3d 2f 3b 20 64 6f 6d 61 69 6e 3d 2e 76 6b 6f 6e | =/; domain=.vkon
74 61 6b 74 65 2e 72 75 0d 0a 43 6f 6e 74 65 6e | takte.ru..Conten
74 2d 45 6e 63 6f 64 69 6e 67 3a 20 67 7a 69 70 | t-Encoding: gzip
0d 0a 56 61 72 79 3a 20 41 63 63 65 70 74 2d 45 | ..Vary: Accept-E
6e 63 6f 64 69 6e 67 0d 0a 43 6f 6e 74 65 6e 74 | ncoding..Content
2d 4c 65 6e 67 74 68 3a 20 32 35 37 34 0d 0a 0d | -Length: 2574...


и тут следует gzip-ОВСКАЯ лабуда

Kaimi
07.02.2008, 01:11
Вобщем дайте мне пример как выполнить Post запрос на примере вконтакте и считать заголовок который вернется

Delimiter
07.02.2008, 01:17
ВОТ И ПОСТ... нашел


50 4f 53 54 20 2f 6c 6f 67 69 6e 2e 70 68 70 20 | POST /login.php
48 54 54 50 2f 31 2e 31 0d 0a 41 63 63 65 70 74 | HTTP/1.1..Accept
3a 20 69 6d 61 67 65 2f 67 69 66 2c 20 69 6d 61 | : image/gif, ima
67 65 2f 78 2d 78 62 69 74 6d 61 70 2c 20 69 6d | ge/x-xbitmap, im
61 67 65 2f 6a 70 65 67 2c 20 69 6d 61 67 65 2f | яage/jpeg, image/
70 6a 70 65 67 2c 20 61 70 70 6c 69 63 61 74 69 | pjpeg, applicati
6f 6e 2f 78 2d 73 68 6f 63 6b 77 61 76 65 2d 66 | on/x-shockwave-f
6c 61 73 68 2c 20 61 70 70 6c 69 63 61 74 69 6f | lash, applicatio
6e 2f 76 6e 64 2e 6d 73 2d 65 78 63 65 6c 2c 20 | n/vnd.ms-excel,
61 70 70 6c 69 63 61 74 69 6f 6e 2f 76 6e 64 2e | application/vnd.
6d 73 2d 70 6f 77 65 72 70 6f 69 6e 74 2c 20 61 | ms-powerpoint, a
70 70 6c 69 63 61 74 69 6f 6e 2f 6d 73 77 6f 72 | pplication/mswor
64 2c 20 2a 2f 2a 0d 0a 52 65 66 65 72 65 72 3a | d, */*..Referer:
20 68 74 74 70 3a 2f 2f 76 6b 6f 6e 74 61 6b 74 | http://vkontakt
65 2e 72 75 2f 0d 0a 41 63 63 65 70 74 2d 4c 61 | e.ru/..Accept-La
6e 67 75 61 67 65 3a 20 72 75 0d 0a 43 6f 6e 74 | nguage: ru..Cont
65 6e 74 2d 54 79 70 65 3a 20 61 70 70 6c 69 63 | ent-Type: applic
61 74 69 6f 6e 2f 78 2d 77 77 77 2d 66 6f 72 6d | ation/x-www-form
2d 75 72 6c 65 6e 63 6f 64 65 64 0d 0a 41 63 63 | -urlencoded..Acc
65 70 74 2d 45 6e 63 6f 64 69 6e 67 3a 20 67 7a | ept-Encoding: gz
69 70 2c 20 64 65 66 6c 61 74 65 0d 0a 55 73 65 | ip, deflate..Use
72 2d 41 67 65 6e 74 3a 20 4d 6f 7a 69 6c 6c 61 | r-Agent: Mozilla
2f 34 2e 30 20 28 63 6f 6d 70 61 74 69 62 6c 65 | /4.0 (compatible
3b 20 4d 53 49 45 20 36 2e 30 3b 20 57 69 6e 64 | ; MSIE 6.0; Wind
6f 77 73 20 4e 54 20 35 2e 31 3b 20 53 56 31 3b | ows NT 5.1; SV1;
20 49 6e 66 6f 50 61 74 68 2e 32 29 0d 0a 48 6f | InfoPath.2)..Ho
73 74 3a 20 76 6b 6f 6e 74 61 6b 74 65 2e 72 75 | st: vkontakte.ru
0d 0a 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 | ..Content-Length
3a 20 31 37 0d 0a 43 6f 6e 6e 65 63 74 69 6f 6e | : 17..Connection
3a 20 4b 65 65 70 2d 41 6c 69 76 65 0d 0a 43 61 | : Keep-Alive..Ca
63 68 65 2d 43 6f 6e 74 72 6f 6c 3a 20 6e 6f 2d | che-Control: no-
63 61 63 68 65 0d 0a 43 6f 6f 6b 69 65 3a 20 72 | cache..Cookie: r
65 6d 69 78 63 68 6b 3d 35 0d 0a 0d 0a 65 6d 61 | emixchk=5....ema
69 6c 3d 77 65 26 70 61 73 73 3d 77 65 65 | il=we&pass=wee



Обрати внимание на Кукисы.... возможно не все так просто.... кукисы тащаться со времени коннекта и я думаю проверяются на каждом запросе!

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

Kaimi
07.02.2008, 01:20
Авторизация по-твоему там тоже Get?

Delimiter
07.02.2008, 01:28
Авторизация на POST!!!!

на первом GET ты получаешь кукис.... далее не разрывая связи шлешь Post указывая кукис

.... обрати внимание на Set-Cookie в ответе на первый пакет...

Kaimi
07.02.2008, 01:34
Да не нужен там кукис, ибо примерно такая же модель с сокетами на перле у меня нормально пашет...

Delimiter
07.02.2008, 01:39
ну вырежи мой hex дамп засунь в массив и пошли его в сокет 8))) по прямому IP 195.190.105.240:80

И БУДЕТ ТБУ СЧАСТЕ! (при условии что кукисы действительно не проверяются) :D а иначе выглядит как будто TCP и HTTP имеють НЕДОКУМЕНТИРОВАННЫЕ возможности :rolleyes:

про ПЕРЛ.... это мало что говорит... на каком уровне ты работаешь в перле если СОКЕТА то все ок а если на более высоком уровне , то там сессионные переменные включая кукисы сами обновляются
.... чтобы было понятнее я тебе скажу так

ВОТ Я ТОЖЕ МОГУ ИСПОЛЬЗОВАТЬ WININET
и соответственно если сервер установит кукис, вининет учтет это .... и будет автоматически подставлять в запросы

всимогущий вининеть

skipped....


в сокетах ты должен делать все сам!

brasco2k
07.02.2008, 18:32
Такая проблема, начал изучать C++, остановился но функции cout<<"...";

Задание сделал, вот исходник:

# include <iostream.h>
void main()
}
//
//Resume
//cout<<"\t\t\t\tResume\n";
//cout <<"\n";
//
//cout <<"\t\tsurname"<<"\tIvanchenko";
//
//cout <<"\n";
//cout <<"\t\tName"<<Leonid\n";
//cout <<"\n";
//
//cout <<"\t\tWork at "<<"\" Krocus\"\n";
//cout <<"\n";
//cout <<"\t\tDate of birth: "<<"\t 23.08":
//cout <<"\n";
}

Выдает ошибку - Compiling...
123.cpp
c:\program files\microsoft visual studio\myprojects\123\123.cpp(1) : warning C4067: unexpected tokens following preprocessor directive - expected a newline
c:\program files\microsoft visual studio\myprojects\123\123.cpp(3) : error C2143: syntax error : missing ';' before '}'
c:\program files\microsoft visual studio\myprojects\123\123.cpp(3) : error C2143: syntax error : missing ';' before '}'
c:\program files\microsoft visual studio\myprojects\123\123.cpp(3) : error C2143: syntax error : missing ';' before '}'
c:\program files\microsoft visual studio\myprojects\123\123.cpp(19) : error C2143: syntax error : missing ';' before '}'
c:\program files\microsoft visual studio\myprojects\123\123.cpp(19) : error C2143: syntax error : missing ';' before '}'
Error executing cl.exe.

123.exe - 5 error(s), 1 warning(s)

Вопрос, в чем проблема, вроде все сделал правильно (по примеру в учебнике)?
Там } не знаю для чего)))

Kaimi
07.02.2008, 19:00
Разобрался с отправкой/получением теперь такой вопрос:
При одинаковом запросе через сокеты, на перле я получаю вот такой ответ от сервера:

HTTP/1.0 200 OK
Date: Thu, 07 Feb 2008 14:52:33 GMT
Server: Apache/1.3.27 (Unix) gorgona/2.1 mod_jk/1.2.4 mod_ruby/1.0.7 Ruby/1.6.8
Connection: close
Content-Type: text/html; charset=windows-1251
Content-Length: 17464
Set-Cookie: sid=453sfy643r3erfrs32d; expires=Sun, 04 Feb 2018 14:52:33 GMT; path=/;
Cache-Control: no-cache,no-store,must-revalidate
Pragma: no-cache
Expires: Wed, 07 Feb 2007 14:52:33 GMT
Last-Modified: Thu, 07 Feb 2008 14:52:33 GMT

А сишник выдает

HTTP/1.1 200 OK
Date: Thu, 07 Feb 2008 14:55:50 GMT
Server: Apache
Pragma: no-cache
Cache-Control: no-cache, no-store
Expires: Thu, 07 Feb 2008 14:55:50 GMT
Frontend-key: 195.61.57.65
Set-Cookie: sid=453sfy643r3erfrs32d; path=/; expires=Fri, 18 Jul 2036 13:20:00 GMT;
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=koi8-r
Vary: accept-charset, user-agent


Вопрос: Куда девается Content-Length и почему разница в ответе?

KEZ
07.02.2008, 19:10
Сервер определил, что ты юзаешь си плюс плюс и решил спрятать от тебя Content-Length.

Kaimi
07.02.2008, 19:14
Kez в своем репертуаре...
Все разобрался, допустил небольшую ошибку в запросе

Alpha][
08.02.2008, 21:32
Народ как вызвать окно открыть файл , что бы передать функции путь к нужному мне документу . Найти никак не могу =(

Garfi
08.02.2008, 21:37
Там } не знаю для чего)))
То опечатка ;)
Там стоит "{"

Alpha][
09.02.2008, 23:11
noobyara
Это немного не подходит . Я наверное не корректо выразился .

У меня есть функция , которая конвертирует Jpg в Bmp(она засунута в dll'ку) . Мне нужно что бы при запуске этой фкц вылезало окошко и меня спрашивали какой файл нужно перекодировать (т.е необходимо что бы сама функция вызывала это окно при запуске) .
А ваш способ не работает т.к (как я понял) он требует что бы было окно программы создано , а я мне его создавать не нужно :(

З.Ы. и вот еще вопрос можно ли как то сделать так что бы переменна типа char стала переменной типа WCHAR ?

[Y.P.C.]yla
10.02.2008, 00:25
[']noobyaraЗ.Ы. и вот еще вопрос можно ли как то сделать так что бы переменна типа char стала переменной типа WCHAR ?
А как насчет функции WideCharToMultiByte?

Alpha][
10.02.2008, 02:50
<<Alert>>
Сейчас попробывал и не получилось ничего . Вот код

ofstream text1("out.txt", ios::out); //создаю файл для просмотра результатов
char *szFile = "image.jpg"; // исходная строка
WCHAR uszFile ; // строка в которую нужно перевести szFile
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szFile, 1, &uszFile, 1);
text1.write((char *)&uszFile, sizeof(uszFile); // Записываю результат в файл. на выходе получаю чепуху.


Тоже самое когда провожу обратную операцию . Что я не так делаю ? :confused:

sedoy_xxx
11.02.2008, 13:13
нужен пример работы с snmp под linux, заранее спасибо

KSoniX
11.02.2008, 17:45
шифрования файлов примеры на Си кто может дать?

KSoniX
11.02.2008, 18:21
ну хотябы блочный шифратор плз

z01b
11.02.2008, 18:33
ну хотябы блочный шифратор плз
#include <iostream>
#include <string>
#include <cstdio>
#include <strstream>
#include <conio.h>
using namespace std;

void main()
{
string fname;
strstream strstr;
char xor[20];
FILE* fl1, * fl2;

while(1)
{
cout << "Enter a file to encrypt or decrypt: ";
cin >> fname;
if(cin.good() )
{
cin.ignore(10, '\n');
break;
}
cin.clear();
}


fl1 = fopen(fname.c_str(),"r");
if(!fl1)
{ cout << "ERROR: Could not open file for reading!"; getch(); return; }




while(1)
{
cout << "Enter a file to write to: ";
cin >> fname;
if(cin.good() )
{
cin.ignore(10, '\n');
break;
}
cin.clear();
}

fl2 = fopen(fname.c_str(), "w");
if(!fl2)
{ cout << "ERROR: Could not open file for writing!"; getch(); return; }



while(1)
{
cout << "Enter a code to encrypt with: ";
cin >> xor;
if(cin.good() )
{
cin.ignore(10, '\n');
break;
}
cin.clear();
}


char chr1, chr2;
int xrCount=0;
int xrLen = strlen(xor);

while(1)
{
chr1=fgetc(fl1);
if(chr1==EOF)
{
break;
}
else
{
if( (++xrCount) >=xrLen) xrCount=0;
chr2 = chr1 ^ xor[xrCount];
fputc(chr2, fl2);
}
}
fclose(fl1);
fclose(fl2);
cout << "Encrypted successfully.\nPress any key to continue. ";
getch();
}

GlOFF
11.02.2008, 18:36
KSoniX Читай в файл в память\буфер потом банальным ксором (XOR).