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

fker
11.11.2009, 20:22
объявлен
char buf[10000];
а функции принимает
char *buf[10000]
у тебя массив символов или массив строк?
что за функция readPart( &buf )?

Ra$cal
11.11.2009, 20:45
в параметрах функции не указывают размерность массива обычно. просто char* buf, у тебя же передается массив указателей, что подразумевает массив строк. скажу боян, но все же - читай буки для начала. передаче параметров уделяется достаточно внимания.

winflip
11.11.2009, 21:17
http://ru.wikipedia.org/wiki/Тест_Миллера_—_Рабина

ASM16d
11.11.2009, 21:50
Спасибо, исправил. Убрал размеренность в передаче параметров - помогло.
Но в таком случаи, в теле функции не нужно разыменовывать указатель, верно?

readPart() и f() - одна и та же функция.. просто в одном месте поменял имя, а в другом забыл :(

gisTy
11.11.2009, 22:09
Спасибо, исправил. Убрал размеренность в передаче параметров - помогло.
Но в таком случаи, в теле функции не нужно разыменовывать указатель, верно?

readPart() и f() - одна и та же функция.. просто в одном месте поменял имя, а в другом забыл :(
почитай учебник

Ra$cal
11.11.2009, 22:12
передавать указатель по ссылке нужно только в случае, если ты планируешь туда выделить память.

void f(char* &buf){
buf = new char [50];
strcpy(buf, "adadad");
}

int main()
{
char* lala;
f(lala);
cout << lala;
return 0;
}

чтобы просто написать в буфер достаточно передать просто указатель, т.е. убрать & из параметра функции.

а вообще да - читай книжки. очевидно непонимание сути оператора & и разницы между указателем и указателем на указатель.

Mitnick17
12.11.2009, 00:37
передавать указатель по ссылке нужно только в случае, если ты планируешь туда выделить память.

void f(char* &buf){
buf = new char [50];
strcpy(buf, "adadad");
}

int main()
{
char* lala;
f(lala);
cout << lala;
return 0;
}

чтобы просто написать в буфер достаточно передать просто указатель, т.е. убрать & из параметра функции.

а вообще да - читай книжки. очевидно непонимание сути оператора & и разницы между указателем и указателем на указатель.

Ти тупорилий кацап!!!!

ZipaCna
12.11.2009, 02:28
Кто может скинуть рабочий код отправки емаила на gmail например... (через WINSOCK)

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

Fata1ex
12.11.2009, 02:31
ZipaCna, возможно скоро ты поймешь, что халявщиков, желающих получить все, не прикладывая усилий, в разы больше.

Смотри раздел статьи, там было что-то по сабжу. Да и вообще встречается вопрос часто, поищи.

slesh
12.11.2009, 10:39
2 ZipaCna еслибы ты захотел бы, то поискал бы тут данные по этому поводу. И могбы найти делфовыу прогу для отправки мыла через MX шлюз через winsock. Переписать на С++ былобы легко. Да и переписать на юзанье аккаунтов - тоже былобы оч просто.

new-sl
12.11.2009, 21:12
нужен алгоритм сортирофки чисел

Lee_fx
12.11.2009, 21:14
std::sort ?

new-sl
12.11.2009, 21:22
std::sort ?
алгоритм

Irdis
12.11.2009, 21:22
http://ru.wikipedia.org/wiki/Алгоритм_сортировки

new-sl
12.11.2009, 21:26
ты видел как там всё написано минебы попроще да с примером вики и я смотрел

Irdis
12.11.2009, 21:34
http://ru.wikipedia.org/wiki/Быстрая_сортировка
В вики читать лучше, чем мы будем тебе все вместе объяснять...
int n, a[n];
void qs(int* s_arr,int first, int last)
{
int i = first, j = last, x = s_arr[(first + last) / 2];

do {
while (s_arr[i] < x) i++;
while (s_arr[j] > x) j--;

if(i <= j) {
if (i < j) swap(s_arr[i], s_arr[j]);
i++;
j--;
}
} while (i <= j);

if (i < last)
qs(s_arr,i, last);
if (first < j)
qs(s_arr,first,j);
}

new-sl
12.11.2009, 21:43
спасибо тебе ;) :) ты девушка?

VIP
12.11.2009, 22:22
Всем привет!

При написании проги возник простой наверное вопрос. Если я передаю в функцию вектор следующим образом



bool find_line(dict, 0, line_yes){
int i;
// некоторые действия
....
find_line(dict, i, line_yes);
return line_yes;
}

int main(){
bool line_yes;
vector<one_word> dict(how_much_words);
find_line(dict, 0, line_yes);
}


То собственно вектор в таком случае передаётся по ссылке или по значению ???

Заранее спасибо ! ;)

Irdis
12.11.2009, 22:28
VIP
пиши подробней,
(хотя бы переменные опиши которые используешь)

VIP
12.11.2009, 22:35
VIP
пиши подробней,
(хотя бы переменные опиши которые используешь)

собственно вот полный листинг проги


#include "stdafx.h"
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <vector>
#include <string.h>
using namespace std;

#define MAX_WORD_LONG (WORD_SIZE_MAX + 2)
#define WORD_SIZE_MIN 3
#define WORD_SIZE_MAX 4

struct one_word {
char element[MAX_WORD_LONG];
bool is_use;
};

void print_dict(std::vector<one_word> dict){
system("cls");
printf("Dictonary: \n\n");
for(int i = 0; i < (int)dict.size(); i++){
printf("%d. ", i + 1);
for(int j = 0; dict[i].element[j] != '\0'; j++){
printf("%c", dict[i].element[j]);
};
printf("\n");
}
}

bool find_line(std::vector<one_word> dict, int i, bool line_yes){
dict[i].is_use = true;
printf("\n");
printf("%d. ", i + 1);
for(int j = 0; dict[i].element[j] != '\0'; j++){
printf("%c", dict[i].element[j]);
};
int last_latter;
for(last_latter = 0; dict[i].element[last_latter + 1] != '\0'; last_latter++);
for(int j = 0; j < (int)dict.size(); j++){
if (((int)dict[i].element[last_latter] == (int)dict[j].element[0])&&(dict[j].is_use == false)){
find_line(dict, j, line_yes);
line_yes = true;
}
}
return line_yes;
}

int main(){
srand(time(NULL));
int how_much_words;
system("cls");
printf("How much words? \n");
scanf_s("%d", &how_much_words);
vector<one_word> dict(how_much_words);

int word_size = 0;

system("cls");
int symbol_of_new_word;
for(int i = 0; i < how_much_words; i++){
if (i == 0) printf("Enter words: \n\n", i);
for(int j = 0; (symbol_of_new_word = getchar()) != ' '; j++){
if (symbol_of_new_word == 10) symbol_of_new_word = getchar();
dict[i].element[j] = symbol_of_new_word;
}
}

system("cls");

print_dict(dict);
bool line_yes = false;
for (int i = 0; i < how_much_words*2; i++){
if (find_line(dict, 0, line_yes)) {
line_yes = true;
break;
}
else {
system("cls");
print_dict(dict);
}
}
if (!line_yes) printf("\nNo suitable lines");
printf("\n");
system("pause");
}


интересует как будет передаваться вектор из main() в find_line(std::vector<one_word> dict, int i, bool line_yes) и как он будет передаваться в рекурсии. По ссылке или по значению.

P.S. Гуглил статьи о том как юзать вектор, но такого там не нашёл.

razb
12.11.2009, 22:53
void foo(std::vector<int> vect); - по значению
void foo(std::vector<int>& vect); - по ссылке

VIP
13.11.2009, 00:11
void foo(std::vector<int> vect); - по значению
void foo(std::vector<int>& vect); - по ссылке

а при вызове функции тогда нужно писать:


function(&vect);


???

razb
13.11.2009, 00:59
просто foo(vect);
вообще читаем литературу, в любом учебнике об этом все написано.

winflip
13.11.2009, 12:32
Вот ссылка на алгоритм:
http://ru.wikipedia.org/wiki/Тест_Миллера_—_Рабина
Вот код:

bool is_prime(int m){
using namespace std;
int r = 1000;
int t = m-1;
int s = 0;
bool b = true;
if(m==2){
return true;
}
if(m%2==0){
return false;
}
if(m==1){
return false;
}
while(t%2==0 || b){
b = false;
s++;
t=t/2;
}
for(int i=1;i<r+1;i++){
int a = 2+rand()%(m-2);
int x = int(float(pow(float(a),float(t))))%m;
if((x==1)||(x==m-1)){
continue;
}
for(int j=1;j<s;j++){
x=int(float(pow(float(x),2)))%m;
if(x==1){
return false;
}
if(x==m-1){
break;
}
return false;
}
}
return true;
}

Компиляция проходит, но работает неверно

Irdis
13.11.2009, 17:58
int x = int(float(pow(float(a),float(t))))%m;

не пойдёт вылезает за границы допустимых значений

jenyavlg
13.11.2009, 18:04
люди помогите ,

решил попробовать поучить C++
взял учебник Джесс Либерти. C++ за 21 день
скачал Microsoft Visual C++ 2008 Express Edition

и сразу же не чё не понял

не могу скомпилить даже

#include <iostream.h>


int main()
{
cout << "Hello world!\n";
return 0;
}


(4) : fatal error C1083: Не удается открыть файл include: iostream.h: No such file or directory

хоть это и очень смешно но я вообще ноль в этом

Irdis
13.11.2009, 18:07
вот

#include <iostream>
using namespace std;

int main()
{
cout << "Hello world!\n";
return 0;
}

jenyavlg
13.11.2009, 18:11
тоже пробовал

------ Построение начато: проект: 43, Конфигурация: Debug Win32 ------
Компоновка...
MSVCRTD.lib(crtexew.obj) : error LNK2019: ссылка на неразрешенный внешний символ _WinMain@16 в функции ___tmainCRTStartup
C:\Documents and Settings\Администратор\Мои документы\Visual Studio 2008\Projects\Project1\43\Debug\43.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
Журнал построения был сохранен в "file://c:\Documents and Settings\Администратор\Мои документы\Visual Studio 2008\Projects\Project1\43\43\Debug\BuildLog.htm"
43 - ошибок 2, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Ra$cal
13.11.2009, 18:13
win32 проект создал?

jenyavlg
13.11.2009, 18:16
ну да ,,, а чё надо было консольное ?

Irdis
13.11.2009, 18:52
да.. судя по ошибкам ты создал Win32 Project

jenyavlg
13.11.2009, 18:55
всё пока не много разобрался

Epic wave
13.11.2009, 19:12
А Qt кто-нть юзал?

как исправить:

Не выбрана корректная версия Qt. Выберите её в Инструменты - Параметры
Ошибка во время сборки проекта aa
Во время выполнения сборки на этапе 'QMake'
Прерванная сборка.

в настройках ничего не нашел.

razb
13.11.2009, 19:36
Насколько я помню что бы юзайть qt из под visual studio, его там надо сначала собрать.
Используй лучше QtCreator или NetBeans.

Epic wave
13.11.2009, 19:41
Насколько я помню что бы юзайть qt из под visual studio, его там надо сначала собрать.
Используй лучше QtCreator или NetBeans.
я про QtCreator и говорю.

razb
13.11.2009, 19:47
Инструменты -> Параметры -> Qt4 ->

rudvil
14.11.2009, 00:13
Можно ли хранить в std::string текст с кодировкой utf8?
Если да, то как?

razb
14.11.2009, 00:37
да, данный сабж оочень хорошо гуглиться

rudvil
14.11.2009, 01:06
да, данный сабж оочень хорошо гуглиться
Ессно перед тем как написать сюда я погуглил, но кроме как советов про "iconv" больше ничего нужного мне не было...
Хотелось как-нибуть попроще, без всяких там библиотек)))
Ещё есть вариант с qt, но это на крайний случай.

Irdis
14.11.2009, 06:06
http://msdn.microsoft.com/en-us/library/aa450989.aspx
http://msdn.microsoft.com/en-us/library/ms886760.aspx
=======================
и кури конвертацию одного типа к другому

winflip
14.11.2009, 11:50
не пойдёт вылезает за границы допустимых значений
Переписал, выводит частично не те числа:

// http://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%81%D1%82_%D0%9C%D0%B8%D0%BB%D0%BB% D0%B5%D1%80%D0%B0_%E2%80%94_%D0%A0%D0%B0%D0%B1%D0% B8%D0%BD%D0%B0
#include <cmath>
#include <iostream>
bool is_prime(int);
int main(){
using namespace std;
int a,b;
cin >> a >> b;
for(int i=a;i<=b;i++){
if(is_prime(i)){
cout << i << " ";
}
}
system("PAUSE");
}
bool is_prime(int m){
using namespace std;
int r = 1000;
int t = m-1;
int s = 0;
bool b = true;
if(m==2){
return true;
}
if(m%2==0){
return false;
}
if(m==1){
return false;
}
while(t%2==0 || b){
b = false;
s++;
t=t/2;
}
for(int i=1;i<r+1;i++){
int a = 2+rand()%(m-1);
int x = (long(pow(float(a),float(t))))%m;
if((x==1)||(x==m-1)){
continue;
}
for(int j=1;j<s;j++){
x=(long(pow(float(x),2)))%m;
if(x==1){
return false;
}
if(x==m-1){
break;
}
return false;
}
}
return true;
}

rudvil
14.11.2009, 13:14
http://msdn.microsoft.com/en-us/library/aa450989.aspx
http://msdn.microsoft.com/en-us/library/ms886760.aspx
=======================
и кури конвертацию одного типа к другому
Спасибо конечно, но это только под винду.
Извиняюсь что не уточнил сразу, необходимо кроссплатформенное решение.

Aag
14.11.2009, 14:13
Можно ли хранить в std::string текст с кодировкой utf8?
Если да, то как?

вот так объявлен std:string

typedef basic_string<char_t> string;


а вот так мультибайтовый вариант std::wstring

typedef basic_string<wchar_t> wstring;

razb
14.11.2009, 17:42
Спасибо конечно, но это только под винду.
Извиняюсь что не уточнил сразу, необходимо кроссплатформенное решение.
вот тебе кросс вариант _http://utfcpp.sourceforge.net/

m0Hze
14.11.2009, 18:27
Необходимо: консольное окошко, указываем урл
cin >> url;
Софт коннектиться по указоному урлу,и записывает страничку в log.txt.
Спасибо.Желательно с использованием класса от Греата.Необходимо в своих образовательных целях :)

draliokero
14.11.2009, 21:50
Помогите с кодом, нужно пробежаться с указанного начального каталога по его подкаталогам, удаляя из них файлы с расширениями *.@@@,*.bla, *.sdx.

Irdis
15.11.2009, 01:58
winflip
Возрадуйся...
опа, у меня ещё и пост простой 101

#include <cmath>
#include <iostream>
bool is_prime(int);
int main(){
using namespace std;
//int a,b;
for(int i=1;i<=1000;i++){
if(is_prime(i)){
cout << i << " ";
}
}
system("PAUSE");
}
bool is_prime(int m){
using namespace std;
int r = 1000;
int t = m-1;
int s = 0;
//bool b = true;
if((m==2)||(m==3)){
return true;
}
if(m%2==0){
return false;
}
if(m==1){
return false;
}
while(t%2==0){
s++;
t=t/2;
}
for(int i=1;i<r+1;i++){
int a = 2+rand()%(m-3);
bool next = false;
long x = a;
for (int i1=0;i1<t-1;i1++)
x = (x*a)%m;

//int x = (long(pow(float(a),float(t))))%m;
if((x==1)||(x==m-1)){
continue;
}
for(int j=1;j<s;j++)
{
x=(x%m)*(x%m)%m;
if(x==1){
return false;
}
if(x==m-1){
next = true;
break;
}
}
if (!next)
return false;

}
return true;
}

Linkus
15.11.2009, 04:34
Помогите с кодом, нужно пробежаться с указанного начального каталога по его подкаталогам, удаляя из них файлы с расширениями *.@@@,*.bla, *.sdx.

В коде куча лишнего хлама, ибо вырезано кое-как из совсем другого проекта :) удачи!


#include <stdio.h>
#include <windows.h>

HANDLE ch;

DWORD WriteToConsole(LPSTR text)
{
DWORD nChars;
char buf[MAX_PATH];
strcpy(buf,text);
strcat(buf,"\r\n");
char buf2[MAX_PATH];
CharToOem(buf,buf2);
WriteConsole(ch,buf2,strlen(buf2),&nChars,0);

return nChars;
}

void FindAndDelete(LPSTR path, LPSTR name )
{

WIN32_FIND_DATA wfd;
HANDLE fh;
char lol[MAX_PATH];
strcpy(lol,path);
strcat(lol,"*");
fh = FindFirstFile(lol,&wfd);

if(fh == INVALID_HANDLE_VALUE) return;

do
{

if (strstr(wfd.cFileName,name) != NULL)
{

char delfilebuf[MAX_PATH];
strcpy(delfilebuf,path);
strcat(delfilebuf,wfd.cFileName);
WriteToConsole(delfilebuf);
//Удаляем файл
DeleteFile(delfilebuf);

}

if ((!strcmp(wfd.cFileName,".")) || (!strcmp(wfd.cFileName,".."))) continue;

if (wfd.dwFileAttributes ==FILE_ATTRIBUTE_DIRECTORY)
{

char pathbuf[MAX_PATH];
strcpy(pathbuf,path);
if (pathbuf[strlen(pathbuf)-1] != '\\') strcat(pathbuf,"\\");
strcat(pathbuf,wfd.cFileName);
if (pathbuf[strlen(pathbuf)-1] != '\\') strcat(pathbuf,"\\");


FindAndDelete(pathbuf,name);

}


} while (FindNextFile(fh,&wfd));

FindClose(fh);

return;

}

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
AllocConsole();
ch = GetStdHandle(STD_OUTPUT_HANDLE);

//Запускаем рекурсивную функцию
//Её параметры: путь к стартовой папке и
// расширение удаляемых файлов (с точкой!)
// удаляет файлы с заданным расширением в
//стартовой папке, её подпапках, и их подпапках, и их
//подпапках))))) etc
FindAndDelete("D:\\tst\\",".\@\@\@");
FindAndDelete("D:\\tst\\",".bla");
FindAndDelete("D:\\tst\\",".sdx");

system("pause");



return 0;
}

draliokero
15.11.2009, 07:53
Помогите разобраться, FindFirstFile(mask, &findFileData)
mask не передается :( с типами какойто косяк

#include <windows.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>

TCHAR * filemask[] = { ".---", ".@@@", ".$a", ".$db", ".$sa", ".___", "._dd",
"._detmp", "._mp", ".aps", ".bac", ".bak", ".bbs", ".bup",
".cdr_", ".chk", ".cpy", ".da0", ".diz", ".dmp", ".err",
".fic", ".fnd", ".ftg", ".fts", ".gid", ".ilk", ".ion",
".lo_", ".mch", ".MS", ".nav", ".ncb", ".nhc", ".nu3",
".nu4", ".old", ".pch", ".prv", ".sdi", ".sfap0", ".sfk",
".shd", ".sik", ".spc", ".sud", ".swr", ".syd", ".tds",
".temp", ".tmp", ".wbk", ".wc", ".wlg", ".wpx", ".xlg",
".xlk" };


int SearchFiles(TCHAR *buffer, TCHAR *mask)
{
HANDLE hFile;
WIN32_FIND_DATA findFileData;
TCHAR temp[MAX_PATH];

SetCurrentDirectory(buffer);

if((hFile=FindFirstFile(mask, &findFileData))==INVALID_HANDLE_VALUE)
{
printf("Invalid file handle (%d)\n", GetLastError());
return -2;
}
else
{
do
{
if(!strcmp(findFileData.cFileName, TEXT("."))||!strcmp(findFileData.cFileName, TEXT("..")))
{
continue;
}

if(findFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
{
strcpy(temp, buffer);
strcat(buffer, "\\");
strcat(buffer, findFileData.cFileName);

SearchFiles(buffer);
strcpy(buffer,temp);
continue;
}
printf("File name is %s\n", findFileData.cFileName);
}
while(FindNextFile(hFile, &findFileData)!=0);
}
FindClose(hFile);
return true;
}

int main(int argc, TCHAR* argv[])
{

TCHAR buffer[MAX_PATH];
GetCurrentDirectory(sizeof(buffer), buffer);
int arrsize = sizeof(filemask)/sizeof(int);

for(int i=0; i<arrsize; i++){
SearchFiles(buffer, filemask[i]);
}
system("pause");
return 0;
}

Дикс
15.11.2009, 17:34
как в чистом С++ конвертировать текст в utf-8?

(и накрайняк как это сделать с бустом)

winflip
15.11.2009, 17:51
winflip
Возрадуйся...

Возрадовался))) Спасибо))) Пол недели его не мог добить.

Ra$cal
15.11.2009, 18:01
Дикс
http://www.cplusplus.com/reference/clibrary/cstdlib/wcstombs/ это?

draliokero
15.11.2009, 18:10
Ra$cal, дружище, если не сложно, помоги пожалуйста разобраться, в чем моя ошибка в коде на предыдущей странице :-)

Дикс
15.11.2009, 20:01
Дикс
http://www.cplusplus.com/reference/clibrary/cstdlib/wcstombs/ это?

char dest[SIZE];
wchar_t *dptr = L"string";
size_t count = SIZE;
size_t length;

length = wcstombs(dest, dptr, count);

из примера следует что на входе

wchar_t *dptr = L"string";

а у меня

string test = "test"
либо вообще такое:

#define TEXT "text"

Ra$cal
15.11.2009, 20:12
ниже смотрел связанные с этой функцией функции? не хочется учить пользоваться документацией(в частности ее читать).

Linkus
16.11.2009, 00:09
Ra$cal, дружище, если не сложно, помоги пожалуйста разобраться, в чем моя ошибка в коде на предыдущей странице :-)

здесь недостаточно параметров:

int SearchFiles(TCHAR *buffer, TCHAR *mask)
....
if(findFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
{
strcpy(temp, buffer);
strcat(buffer, "\\");
strcat(buffer, findFileData.cFileName);

SearchFiles(buffer);
.........

как я понял, тебе нужен рекурсивный поиск файлов по маске? можно как в коде что я приводил: ищется файл "*", если это директория - в ней запускается рекурсивный поиск, иначе в имени ищется подстрока типа ".bla" в общем с расширением. Короче разбирайся! :)

upd
а если как у тебя - то надо бы к элементам маски звёздочки добавить.... "
.....
"*.fnd", "*.ftg", "*.fts", "*.gid",
.....

но в подпапках поиска не будет...

draliokero
16.11.2009, 08:30
Linkus, чет не заметил повторный вызов функции... спасибо, разобрался)

Epic wave
17.11.2009, 22:53
Подскажите, как в builder 6 C++ вывести график x,y ? И если не сложно прямоугольник на нем. Заранее спасибо.

Дикс
17.11.2009, 23:10
char title[25];
char message[500];

cout << "enter title: ";
cin.clear();
cin.getline(title, 30);

cout << "enter message: ";
cin.clear();
cin.getline(message, 500);

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

enter title: enter message:

и я могу заполнить только вторую переменную?

РЕШЕНО:
cin.seekg(0);

Roston
17.11.2009, 23:14
У тебя сначала char title[25];
а потом ты делаеш вот так
cin.getline(title, 30);


Попробуй поменять 30 на 25

Roston
17.11.2009, 23:18
Подскажите, как в builder 6 C++ вывести график x,y ? И если не сложно прямоугольник на нем. Заранее спасибо.

_http://www.citforum.ru/programming/bcpp/r79_4.shtml

там внизу ищи graphics.h, сможет прочитать про команды графики в досе.

График выводиш так... заганяеш ф-цию в цыкл и рисуеш там точки или линии.. ну в зависимости что тебе нужно

Epic wave
17.11.2009, 23:19
_http://www.citforum.ru/programming/bcpp/r79_4.shtml

там внизу ищи graphics.h, сможет прочитать про команды графики в досе.

График выводиш так... заганяеш ф-цию в цыкл и рисуеш там точки или линии.. ну в зависимости что тебе нужно

В цикле , в Досе... ясно. Мне то нужно под винодой и как - то проще. не ?

Roston
17.11.2009, 23:23
В цикле , в Досе... ясно. Мне то нужно под винодой и как - то проще. не ?

Я имею ввиду в командной строке...
Под винду... я х3... надо учить GUI

Дикс
18.11.2009, 11:14
cout << "enter title: ";
cin.clear();
cin.seekg(0);
cin.getline(title, 25);

cout << "enter message: ";
cin.clear();
cin.seekg(0);
cin.getline(message, 500);


была такая проблема - в консоли эклипса сразу выводился текст "введите заголовок: введите сообщение: " и получается можно ввести только сообщение

когда добавил cin.seekg(0); - в эклипсе все стало норм
но в cmd.exe осталось также

что можно сделать?

Ra$cal
18.11.2009, 11:35
cout << "enter title: ";
cin >> title;

cout << "enter message: ";
cin >> message;

_nic
18.11.2009, 14:06
Есть какая то разница в скорости(добавление элементов,доступ по иттератору) между контейнерами list и vector ?

Irdis
18.11.2009, 14:18
http://www.cplusplus.com/reference/stl/

Дикс
19.11.2009, 00:06
cout << "enter title: ";
cin >> title;

cout << "enter message: ";
cin >> message;

в этом случае он обрезает сообщение до первого пробела

Ra$cal
19.11.2009, 00:49
#include <iostream>
#include <string>
using namespace std;

void main()
{
string title;
string message;


cout << "enter title: ";
getline(cin, title);

cout << "enter message: ";
getline(cin, message);

system("pause");
}

Chrek625
19.11.2009, 06:47
Доброго времени суток.
Возможно ли на С++ открыть ехе файл с параметрами? или тут уже без вижуал С++ не обойтись? Если возможно то подскажите как?
Заранее благодарен.

BrainDeaD
19.11.2009, 07:02
void main(int argc, char *argv[])
argc - количество параметров
*argv[] - параметры (т.е. еррей указателей на char. можно сказать каждый элемент в еррее параметр)

при чём тут вообще вижуал, я не понимаю.

Дикс
19.11.2009, 09:09
блин
в эклипсе все варианты норм
а в cmd.exe ни один не работает

VirtuoZ
19.11.2009, 09:55
Доброго времени суток.
Возможно ли на С++ открыть ехе файл с параметрами? или тут уже без вижуал С++ не обойтись? Если возможно то подскажите как?
Заранее благодарен.
юзай апи

ShellExecute ( NULL, "open", "имя_файла.exe", "параметры", ... , ... )

razb
19.11.2009, 14:03
Доброго времени суток.
Возможно ли на С++ открыть ехе файл с параметрами? или тут уже без вижуал С++ не обойтись? Если возможно то подскажите как?
Заранее благодарен.
смотри exec* ф-ции

блин
в эклипсе все варианты норм
а в cmd.exe ни один не работает
что именно не так?

Дикс
19.11.2009, 16:27
в cmd.exe сразу выводится текст "введите заголовок: введите сообщение: " и получается можно ввести только сообщение

Ra$cal
19.11.2009, 16:31
у меня все нормально. проверяй руки.

razb
19.11.2009, 16:34
я в этой теме отписывал https://forum.antichat.ru/thread149886.html

Roston
19.11.2009, 17:57
Дикс...
удали старый проект и создай новый... и по новому компильни

POS_troi
19.11.2009, 18:00
Приветствую.

Поставил тут Microsoft Visual Studio 2008 и что-то не въехал в методы разработки интерфейса - тоесть как понял нет фишки как в том-же борланде - Drag-and-drop ?

Киньте кто нить, какой-нить попсовый проэктик со сложным интефейсом =)


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


Протупил, Сори

Дикс
19.11.2009, 18:58
я в этой теме отписывал https://forum.antichat.ru/thread149886.html
там советуют добавить cin.sync()
после него у меня оба сообщения стали проскакивать

удали старый проект и создай новый... и по новому компильни
не помогло

может проблема в том, что исходники в utf-8?

razb
19.11.2009, 19:41
Поставил тут Microsoft Visual Studio 2008 и что-то не въехал в методы разработки интерфейса - тоесть как понял нет фишки как в том-же борланде - Drag-and-drop ?
ну дк выбирай какую нибудь либу (mfc, wtl, qt)

emillord
19.11.2009, 20:23
Здравствуйте. Извините если не туда написал...
Назрел вопрос: Какой язык программирования выбрать для того чтобы писать программы для работы с интернетом(регеры, чекеры, инвайтеры)?
Есть огромное желание, прямые руки и мозг.
С меня + за ответ=)

POS_troi
19.11.2009, 20:24
ну дк выбирай какую нибудь либу (mfc, wtl, qt)

да уже разобрался - не заметил скрытое меню - справа

Kaimi
19.11.2009, 20:25
Назрел вопрос: Какой язык программирования выбрать для того чтобы писать программы для работы с интернетом(регеры, чекеры, инвайтеры)?

C#

POS_troi
19.11.2009, 20:27
2emillord

это все можно писать на чем угодно - Assembler,C++,Delphi,PHP,Perl и т.п.

А вот что тебе больше понравится это уже вопрос, лично я предпочитаю C++ и Perl

2Kaimi

+1 забыл про него =)

emillord
19.11.2009, 20:33
Спасибо большое. Ждите бесплатных полу рабочих чекеров и регеров=-)

Kerny
19.11.2009, 21:58
int openfile1()
{
int i=0;
char ht[99999];
FILE *f;
f=fopen("/var/www/cgi-bin/1.txt","r");

while(!feof(f))
{
fscanf(f,"%s",&ht[i]);
printf("%s",&ht[i]);
i++;
}
fclose(f);
}

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

Roston
19.11.2009, 23:02
Попробуй fgets(ht,99999,f)

Linkus
19.11.2009, 23:14
Kerny, fgets() тебе в помощь! :)

да, и в принципе i там не нужна, в цикле

M.W.N.N.
19.11.2009, 23:17
Здравствуйте. Нужен пример ping'a на C, попадались только на С++

Kerny
19.11.2009, 23:26
Попробуй fgets(ht,99999,f)
Пробелы остаются но вывод какой зря некоторые слова повторяет и обрезает, поработаю еще над кодом.

Roston
19.11.2009, 23:33
Реально тогда пробуй без цикла как писал Linkus

Linkus
19.11.2009, 23:49
не-не, цикл нужен чтоб считать все строки, а вот переменная i не нужна, в том числе и после &ht не надо [i] в printf(), мож поэтому и режет слова

wolmer
20.11.2009, 18:08
error PRJ0003 : Ошибка при создании "resgen.exe".

Такое пишет при компиляции пустой программы с интерфейсом (т.е. с формой)
Что делать/как решить? Кроме переустановки

Работаю в Visual C++ 2008

VirtuoZ
20.11.2009, 18:53
error PRJ0003 : Ошибка при создании "resgen.exe".

Такое пишет при компиляции пустой программы с интерфейсом (т.е. с формой)
Что делать? Кроме переустановки

Работаю в Visual C++ 2008
Возможно, что отсутствует файл "resgen.exe", или система его невидит(нужно указать путь в системной переменной PATCH)

upd:
сорри не PATCH а PATH :o

_nic
21.11.2009, 00:45
Теоретически гипотетический вопрос

for(;;)
{
WaitForSingleObject(какой то поток...,INFINITE);
Sleep(10000);
}

Почему в таком цикле слип может игнорироватся?

Irdis
21.11.2009, 05:51
Если не дождёмся освобождения HANDLE hHandle

new-sl
21.11.2009, 15:15
нужен алгоритм генерации случаиных чисел

Wrath
21.11.2009, 15:27
нужен алгоритм генерации случаиных чисел
#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
int R;
R = rand();
return 0;
}


Oo

new-sl
21.11.2009, 15:35
#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
int R;
R = rand();
return 0;
}


Oo
алгоритм

razb
21.11.2009, 15:39
сабж очень хорошо гуглится

Roston
21.11.2009, 16:08
Еше желательно подключить time.h и делать в начале програмы так

srand(time(NULL));

[Dead]Demon
22.11.2009, 10:48
Нужна ваша помощь... Есть задача по поводу работы со строками:
"Из текстового файла неизвестного размера вывести на экран все предложения, не содержащие запятых." Есть код по по поиску и вводу предложений с вопросительным знаком, они вроде и похожи, но как не пытался под свою изменить - не получается (пишу на Turbo C++), вот её код:

Код C++

#include <windows.h>
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;

char bufRus[256];
char* Rus(char* mes)
{ AnsiToOem(mes, bufRus);
return bufRus;
}
int main(void)
{ char ch[2]; FILE * f;
f=fopen("D:\\FileTXT\\text2.txt","r");
if (f == NULL)
{ cout << Rus("Файл не найден!\n");
getch(); return 1;
}

// определяем длину файла

fseek(f,0,SEEK_END); long len=ftell(f);

// выделяем буфер необходимого размера

char *buf=new char[len+1];

// смещаем указатель на начало файла и
// считываем файл в буфер

fseek(f,0,SEEK_SET);
fread(buf, len,1, f); buf[len]='\0';
// выделение предложений из текста
long n = 0; // позиция начала предложения
long i=0, j=0, kol=0;
while(buf[i])
{ if (buf[i]== '?')
{ //вывод символов вопросительного предложения
for(j=n; j<=i;j++)
{ch[0]=buf[j]; ch[1]='\0';
cout << Rus(ch);
} kol++;
n=i+1;
}
if (buf[i]=='.' || buf[i]== '!') n=i+1;
i++;
} fclose(f); cout << endl;
cout << "\n kol = " << kol;
cout << Rus("\n Для выхода нажмите <Enter>:");
getch(); return 0;
}

помогите разобраться

fker
22.11.2009, 13:51
2[Dead]Demon

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

using namespace std;
int main(void)
{
FILE * f;
f=fopen("E:\\text2.txt","r");
if (f == NULL){
//cout << Rus("Файл не найден!\n");
getch();
return 1;
}
// определяем длину файла
fseek(f,0,SEEK_END); long len=ftell(f);
// выделяем буфер необходимого размера
char *buf=new char[len+1];

// смещаем указатель на начало файла и
// считываем файл в буфер
fseek(f,0,SEEK_SET);
fread(buf, len,1, f); buf[len]='\0';
// выделение предложений из текста
long i=0, fl, kol=0, s;
while(buf[i])
{
fl=0;//флаг присутствует ли запятоя
s=i; //начало предложения
while(buf[i]!='.'&&buf[i]!='?'&&buf[i]!='!'){
if(buf[i]==',')
fl=1;
i++;
}
//вывод предложения, если есть зп
if(!fl){
kol++;
cout << kol << ". ";
for(;s!=i;s++)
cout << buf[s];
cout << endl;
}
i++;

}
fclose(f);
cout << "\n kol = " << kol;
getch();
return 0;
}
add
Правда предложение еще может заканчиваться на многоточие, эт тоже надо предусмотреть.

[Dead]Demon
22.11.2009, 14:58
попробую

ZnikiR
22.11.2009, 19:36
Вот написал маленькую программу по Д\З в универе,вроде всё работает,но хотелось бы узнать ваше мнение на её счет.
Программирую на С++ я только с этого года,а Visual Studio Вообще лишь сегодня поставил
#include<iostream>
#include<math.h>
using namespace std;
/*Задание:
Есть два массива
G[k][k]={9,8,7,6,5,4,3,2,1}
E[k][k]={1,2,3,4,5,6,7,8,9}
k=3
Найти M[i][j]=Σ(L=0 до L=K-1)G[i][L]*E[L][j]
По русски
M[i][j]=G[i][0]*E[0][j]+G[i][1]*E[1][j]+G[i][2]*E[2][j]

И затем вывести её в виде матрицы.
*/

int main () {
//Для отладки поставь tmode=1
const int k=3,tmode=0;
int g[k][k]={9,8,7,6,5,4,3,2,1};
int e[k][k]={1,2,3,4,5,6,7,8,9};
int m[k][k],i,j,l,sum;
for (i=0;i<k;i++)
{
if(tmode==1){cout<<endl<<" || i="<<i;} //<===== отладка

//первый цикл,перебор массивов по i
for (j=0;j<k;j++)
{




if(tmode==1){cout<<" ||j="<<j<<endl;} //<===== отладка
//перебор по j
sum=0;
//SUM=0 нужен для того,чтобы к сумме не прибавлялось значение полученное в циклах по L до этого
for (l=0;l<k;l++)
{
//сумме присваеваем значение предидушей + текущего произведение
sum=sum+g[i][l]*e[l][j];
//На выходе получаем M[i][j]
if(tmode==1){cout<<" | sum[l="<<l<<"]="<<sum;}//<===== отладка
}
m[i][j]=sum;


if(tmode==1){cout<<" | m[i="<<i<<"][j="<<j<<"]="<<m[i][j]; //<===== отладка
cout<<endl;} //<===== отладка
}
}



//Второй этап=Вывод
printf("m[i/j]| 0 | 1 | 2 \n======|======|======|======\n");
for(i=0;i<k;i++)
{
printf(" %2d",i);
for (j=0;j<k;j++)
{

if (m[i][j]>99){printf(" | %2i",m[i][j]);}
else {printf(" | %2i",m[i][j]);}

}printf("\n======|======|======|======\n");
}
return 0;
}

anasta
23.11.2009, 04:27
Как установить и где их взять библиотеки OpenGL?
Пишу под Linux Mandriva, компил gcc.

zythar
23.11.2009, 09:37
хз как в этой вашей мандриве менеджер пакетов называется.
установи пакеты freeglut freeglut-devel

m0Hze
23.11.2009, 18:38
Имеем:

exp = "abcdef";

Как сгенеррировать все возможные комбинации из этого диапазона например начиная с 3-х,заканчивая 6 значными словами.
Полазил в сорцах брута на суде,там это должно быть реализовано,но изза многократного упоминания библиотек и переменных относящихся к видеодрайверу,я потерялся :)
Интересует алгоритм,в котором бы,сгенерированные ранее слова,не генерились вновь.

razb
23.11.2009, 18:47
Делаешь вложенный цикл, с глубиной вложения равной количеству символов в пассе.

Ra$cal
23.11.2009, 19:22
Делаешь вложенный цикл, с глубиной вложения равной количеству символов в пассе.

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

#include <iostream>
#include <string>
#include <vector>
using namespace std;

string passFromCounter(int counter, const vector<string>& letters);

void main()
{
vector<string> letters;
letters.push_back("a");
letters.push_back("b");
letters.push_back("c");
letters.push_back("d");
letters.push_back("e");

int counter = 0;

while (counter < 50){
cout << passFromCounter(counter++, letters) << endl;
}
system("pause");
}

string passFromCounter(int counter, const vector<string>& letters){
int num = letters.size();
int local_mutation_step = counter;
string pass;

do{
pass = letters.at((local_mutation_step % num)) + pass;
local_mutation_step = local_mutation_step / num - 1;
}while(local_mutation_step >= 0);

return pass;
}

Немножко математики спасают от тупого хардкодирования. Как это работает я уже не раз описывал тут. Как подобрать длину пароля - с 3х до 6ти букв - придумайте сами. Простая арифметика.

ZnikiR
23.11.2009, 23:02
Привет.
У мня тут два вопросика.
Недавно заинтересовался двумя вещами.
Глушилками на hosts,и программа фейками,хотел бы спросить (не отрицаю того,что тема где-то подымалась,но я ничего стоящего не нашел)
1)на чем обычно такое пишется.
2)как организуется отправка введеных данных с фейк программы например ко мне на почту?
3)сильно ли палиться это ативирусами?
4)где об этом можно найти качественную инфу?

спасибо за внимание.

Romik001
24.11.2009, 11:16
ZnikiR
Держи пример кароч на С++:

кидаешь на форму два компонента: idSMTP и idMessage
вот те примерный код:

IdMessage1->CharSet = "windows1251"; // на шестом билдере понта ноль от этого конечно, а вот на делфи робит отлично, соль в том что если символы русские то приходит ??? это из-за версии инди
IdMessage1->ContentTransferEncoding = "8bit";
IdMessage1->ContentType = "text/plain";

IdMessage1->Recipients->EMailAddresses = "bla_bla@mail.ru";
IdMessage1->Subject = "tema";
IdMessage1->Body->Text = Edit1->Text+':'+Edit2->Text; //текст мессаги, самый гемор для мну был)

IdMessage1->From->Name = "ot menya";
IdMessage1->From->Address = "bla_bla@mail.ru";

IdSMTP1->Host = "smtp.mail.ru";
IdSMTP1->Port = 25; //стандартный порт
IdSMTP1->UserId = "тут_логин_для_входа_в_почту";
IdSMTP1->Password = "тут_пароль_на_вход";
IdSMTP1->AuthenticationType = atLogin; //говорим что нужна авторизация

IdSMTP1->Connect(); // коннект собсно
IdSMTP1->Send(IdMessage1);
IdSMTP1->Disconnect(); //дисконнект =)

вот собсно код фэйка для отправки на почту. надеюсь на + к репе =)

p.s.: На форуме где нибудь можно почитать примеры авторизации на сайтах с использованием idHTTP ? ну или другими способами?

POS_troi
24.11.2009, 21:49
Среда разработки MSVC 2008 (NET 3.5)

Дано PictureBox + ресурс IDB_Picture_101 (точечный рисунок)

Как правильно подгрузить картинку из ресурсов?

Большой джо
24.11.2009, 23:58
Такой вопрос, как установить DirectX SDK на Code::Blocks?)

ZnikiR
25.11.2009, 00:47
ZnikiR
Держи пример кароч на С++:

***************

p.s.: На форуме где нибудь можно почитать примеры авторизации на сайтах с использованием idHTTP ? ну или другими способами?

Я так понимаю,что такие программы лучше всего на делфи писать?
Или нет?

POS_troi
25.11.2009, 10:25
Я так понимаю,что такие программы лучше всего на делфи писать?

#include <curl/curl.h>

NetSter
26.11.2009, 00:54
Для тех кто захочет заняться садомазо (как сейчас я))) и захочет написать в Visual Studio 2008 (C++) - чтоб не протрахались так как я в поисках нужных либ и инклудов, которых в студии нет.
http://dump.ru/file/3831023
в архиве
GLAUX.LIB
glaux.h

лить соответственно

C:\Program Files\Microsoft Visual Studio 9.0\VC\lib
C:\Program Files\Microsoft Visual Studio 9.0\VC\include

надеюсь хоть кому то сэкономит время)

mailbrush
26.11.2009, 00:57
Как проверить, существует ли пользователь (тот, под которым логинится в винду) в C++?

bons
26.11.2009, 01:40
Как проверить, существует ли пользователь (тот, под которым логинится в винду) в C++?
вот код на С, выводящий список учетных записей windows. #include <stdio.h>
#include <windows.h>
#include <lm.h>

void print_users(void)
{
unsigned long i, dwERead, dwETotal, dwRes, res;
char* p;
PUSER_INFO_10 info;

info = NULL;
dwRes = 0;
res = NetUserEnum(
NULL,
10,
FILTER_NORMAL_ACCOUNT,
(LPBYTE*) &info,
MAX_PREFERRED_LENGTH,
&dwERead,
&dwETotal,
&dwRes
);

if((res)||(!info))
{
fprintf(stderr, "NetUserEnum failedn");
return;
}
p = (char*)info;
for(i=0; i<dwERead; i++)
{
info = (PUSER_INFO_10)(p + i*sizeof(USER_INFO_10));
printf("%ls\r\n", info->usri10_name);


}
NetApiBufferFree(info);
return;
}

int main(void)
{
print_users();
return 0;
}

mailbrush
26.11.2009, 01:46
Повторюсь, мне надо, проверку на существование учетной записи.

slesh
26.11.2009, 10:53
2 mailbrush ну а кто тебе не дает заюзать код выше для провеки что такой пользователь существует? Ты получаеш список пользователей, а затем смотриш, есть нужный там или нет.

Если хочешь проверить еще и пароль, то просто запусти скрыто cmd.exe от имени этого пользователя, если запустился, то норм и прибей его.

Chrek625
26.11.2009, 14:39
Доброго времени суток.
Подскажи как используя С++ можно работать с веб браузером? ну к примеру отловить определённый урл введённый пользователем или к примеру открытой страницы в браузере скопировать код страницы

cupper
26.11.2009, 15:12
Если я вот так получаю значения из массива
unsigned long *my_descr = dpr.address + (vk_page >> 22);
то вот так я это значение изменяю
*(dpr.address + (vk_page >> 22)) &= 42;
верно ?

mailbrush
26.11.2009, 16:27
2 mailbrush ну а кто тебе не дает заюзать код выше для провеки что такой пользователь существует? Ты получаеш список пользователей, а затем смотриш, есть нужный там или нет.

Если хочешь проверить еще и пароль, то просто запусти скрыто cmd.exe от имени этого пользователя, если запустился, то норм и прибей его.
Как?

slesh
27.11.2009, 10:54
2 mailbrush апишка есть CreateProcessWithLogonW и CreateProcessAsUser


но есть еще один классный способ. Апишка LogonUser
Чтобы твоё приложение временно получала SID пользователя и выполнялось уже от него. т.е. тебе даже не надо запускать ничего внешнего.

P.S. но ты вот ленивое создание которому влом вбить в поисковике.
Первая же ссылка по запросу "Как проверить правильность имени пользователя и пароля" ведет на сайт -
http://www.rsdn.ru/article/qna/baseserv/winauth.xml
где всё расписано

Drakon
27.11.2009, 20:07
ребят, подскажите как на с++ преобразовать десятичное число в шестнатеричное?

POS_troi
27.11.2009, 20:50
int n = 354;
printf("%X", n);

=)

Drakon
27.11.2009, 21:04
спасибо

Linkus
27.11.2009, 21:09
ребят, подскажите как на с++ преобразовать десятичное число в шестнатеричное?

Можно например так:

#include <sysutils.hpp>
...
AnsiString HexNumber = IntToHex( int число , int количество разрядов);

transserg
28.11.2009, 10:58
где может быть ошибка

#define WM_NOTIFYICONMSG (WM_USER + 2);

LRESULT WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_NOTIFYICONMSG: // первая ошибка и вторая тут
switch(lParam)
{ // тут третья
case WM_LBUTTONDBLCLK:
MessageBoxA(NULL, "Двойной щелчок по иконке", "Сообщение от иконки", MB_OK);
break;
}
default:
return(DefWindowProc(hWnd, msg, wParam, lParam));
}
return 0;
}

вижел студио ругается на

Ошибка 2 error C2143: синтаксическая ошибка: отсутствие ":" перед
Ошибка 3 error C2143: синтаксическая ошибка: отсутствие ";" перед
Ошибка 4 error C2143: синтаксическая ошибка: отсутствие ";" перед


помоему в синтаксисе все норма или я ошибаюсь?

zythar
28.11.2009, 11:30
после define-а ";" ненадо

transserg
28.11.2009, 11:46
#define WM_NOTIFYICONMSG (WM_USER + 2);

так есть точка запятой если сразу после него ставить то думаю это не правильно да и компилятор ругается на синтаксис тогда в дефайне

POS_troi
28.11.2009, 13:56
#define WM_NOTIFYICONMSG (WM_USER + 2)

В конце определения не должно быть ;

draliokero
28.11.2009, 14:50
Как определить всех зарегистрированных пользователей в системе? Нашел функцию, GetUserName, но она определяет только имя текущего пользователя...

POS_troi
28.11.2009, 15:40
эту тему на одну страницу назад отлистни

Вернусь к своему вопросу =)

Пытаюсь загрузить картинку из ресурсов программы


Image ^ image = Bitmap::FromResource(hInstance,"IDB_BITMAP1");


При запуске получаю ошибку

Необработанное исключение типа "System.ArgumentException" произошло в System.Drawing.dll Дополнительные сведения: Недопустимый параметр.

Компилятор не ругается. (среда MSVC2009 SP1)

В чем мой глюк?

P.S. Можно было бы так юзать

this->BackgroundImage = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"$this.BackgroundImage")));

Но к сожалению студия постоянно обновляет файл resX =(

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

Допетрил =))

Вообщем создал файл all.resX и запхал туда все необходимые мне ресурсы, далее классом ResourceManager вытащил и подставил куда нужно


// + GOOD + //
ResourceManager ^resourceManager = gcnew ResourceManager("Project.all", System::Reflection::Assembly::GetExecutingAssembly ());

Project.all - Project - Имя проэкта ака Пространство имен, all - имя файла ресурсов.

pictureBox1->Image = (Image ^)resourceManager->GetObject("image1");
// - GOOD - //


Если нужно подгрузить текст из ресурсов то так

label1->Text = resourceManager->GetString("String1");


С файлом rc так и недопетрил, его вообще возможно использовать в VC.NET ?

Gray_Wolf
29.11.2009, 05:46
Есть строка
unsigned char buf[16];
содержащая 32 шестнадцатеричных символа.

Нужно получить строку содержащую ASCII коды этих символов:
если
buf="aaa"
нужно получить
buf2="616161"

основная проблема в том что функция в которой это всё должно происходить на данный момент запускается ~860 000 раз в секунду и "тупое" преобразование может её очень сильно замедлить...

UPD: помогли в другом месте.
Используется вставка ассемблера:

inline void HexToAscii(unsigned char *szTo, unsigned char *pFrom, int n)
{
DWORD szHex[4];
szHex[0] = '3210';
szHex[1] = '7654';
szHex[2] = 'ba98';
szHex[3] = 'fedc';

__asm
{
pushad

mov esi,pFrom
mov edi,szTo
lea edx,szHex

L1: movzx eax,byte ptr[esi]
inc esi

mov ecx,eax
and eax,0xF
shr ecx,4

movzx ecx,byte ptr[edx+ecx]
movzx eax,byte ptr[edx+eax]

shl eax,8
or eax,ecx

mov [edi],ax
add edi,2

dec n
jNZ short L1

popad
}
}

NetSter
29.11.2009, 15:00
у меня такой вопрос
проблема состоит в том что нужно переменную типа FLOAT вывести на экран через dc.TextOut

переменная входит в DLL, обрабатывается и выходит из DLL такого же типа.

код DLL


#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <windows.h>
#include <stdio.h>

int calc (float cm)

{
float cm1 = cm;

CString t;

t.Format(_T("%f"), cm1);

AfxMessageBox(t);
return cm1;
}



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


float res;
HINSTANCE hDll;
hDll=::LoadLibrary("MyDll");
if (hDll == NULL)
{
::MessageBox(NULL,"Файл MyDll.dll не найден!","File MyDll.dll not found!",MB_OK| MB_ICONSTOP);
}
else
{
typedef float (*FUN)(float);
FUN func;
func=(FUN)::GetProcAddress(hDll, "calc");
res=(*func)(cm);
int resint = (int)res;
{
BE_RUN=1;
COpenWnd *OpenWnd=new COpenWnd(this);
OpenWnd -> ShowWindow(SW_SHOWNORMAL);
OpenWnd -> UpdateWindow();
CClientDC dc(OpenWnd);
sprintf(s,"%d",res);
dc.SetTextColor(RGB(0,0,255));
dc.TextOut( 35 , 45, "Результат = ");
dc.TextOut(195,45,s,strlen(s));
}
::FreeLibrary(hDll);
}



для типа INT все пашет, а FLOAT не могу вывести в dc.TextOut

кто что думает?
помогите разобраться)
Заранее большое спасибо.

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

-------------------------------
Проблема решена
https://forum.antichat.ru/showpost.php?p=1722735&postcount=4393

razb
29.11.2009, 15:17
для типа INT все пашет, а FLOAT не могу вывести в dc.TextOut
что значит не можешь вывести?
sprintf(s,"%f",res);

NetSter
29.11.2009, 15:25
что значит не можешь вывести?
sprintf(s,"%f",res);

тогда вот что получается

http://img38.imageshack.us/img38/7279/logo1qs.jpg

я уже пробовал

razb
29.11.2009, 15:35
Как у тебя буфер s обьявлен?

NetSter
29.11.2009, 15:40
char s[100];

-----------------------------------
проблема решена.
сам в шоке как активизировалась робота мозга после того как запостил здесь вопрос. :rolleyes:

трабла была вот в чем:

у нас функция с DLL интовая была

int calc (float cm)
{
bla bla bla;
}

а требовали от роботы DLL тип FLOAT

typedef float (*FUN)(float);

тоисть сделал из интовой функции - функцию FLOAT в DLL

float calc (float cm)

Всем спасибо кто откликнулся !

krewger
01.12.2009, 20:22
#include<iostream>
#include<math>
using namespace std;

float SF(float x1, float x2, float x3, float y1, float y2, float y3);
float PS(float x1, float x2, float x3, float y1, float y2, float y3);


main()
{
float x1,x2,x3,y1,y2,y3,S,P;

cout<<"Vvedite koordinaty x to4ki A";
cin>>x1;
cout<<"Vvedite koordinaty y to4ki A";
cin>>y1;
cout<<"Vvedite koordinaty x to4ki B";
cin>>x2;
cout<<"Vvedite koordinaty y to4ki B";
cin>>y2;
cout<<"Vvedite koordinaty x to4ki C";
cin>>x3;
cout<<"Vvedite koordinaty y to4ki C";
cin>>y3;
S=SF(x1, x2, x3, y1, y2, y3);
P=PS(x1, x2, x3, y1, y2, y3);

cout<<"Perimetr zadannogo treygol'nika raven"<<P<<"\n "<<"Ploshad' zadannogo treygol'nika ravna"<<S;
}

int SF (int x1, int x2, int x3, int y1, int y2, int y3)
{
return ((x1 – x3)·(y2 – y3) – (x2 – x3)·(y1 – y3))/2
}
int PS(int x1, int x2, int x3, int y1, int y2, int y3)
{
return (sqrt(((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1))))+(sqrt(((x3-x2)*(x3-x2))+((y3-y2)*(y3-y2))))+(sqrt(((x1-x3)*(x1-x3))+((y1-y3)*(y1-y3))))
}


Пишет в Visual C++ ошибки:


krew.cpp(30) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
.\krew.cpp(33) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
.\krew.cpp(34) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)

Irdis
01.12.2009, 20:57
поменяй int на float в реализации
float SF (float x1, float x2, float x3, float y1, float y2, float y3)
{
//....
}

со второй функцией точно также

Опухоль
01.12.2009, 21:50
как удалять папки в си ?

Kaimi
01.12.2009, 21:56
как удалять папки в си ?

Гугл не?
RemoveDirectory из winapi например

__mad
02.12.2009, 02:27
как удалять папки в си ?

remove(const char * name)

_nic
02.12.2009, 18:54
Вот так вот

void randstr(int leng,char *_out)
{
if(leng<1025 && leng>0)
{
char *out=new char[1024];
char *chr;
memset(out,NULL,1024);
char alphabet[]="QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvb nm";
randomize();
for(int i=0;i<leng;i++)
{
wsprintf(chr,"%c",alphabet[random(strlen(alphabet))]);
strcat(out,chr);
randomize();
}
strcpy(_out,out);
delete []out;
}
}

неработает.
Почему randomize(); неуспевает отработать?

Ra$cal
02.12.2009, 21:29
ниуянепонял.жпг

emillord
02.12.2009, 22:02
доброго времени суток.
Начал изучать С++, посоветуйте как наконец выбраться из консоли?
Какие библиотеки\модули нужны чтобы например написать простенькое приложение с графикой?

p/s гуглил нашел - gtkmm. Стоит ли его применять?

krewger
02.12.2009, 22:10
поменяй int на float в реализации
float SF (float x1, float x2, float x3, float y1, float y2, float y3)
{
//....
}

со второй функцией точно также


поменял, все тоже самое!!!!

Irdis
02.12.2009, 22:11
_nic
я тоже ниуянепонял.жпг
emillord
QT(самое приоритетное), winApi, MFC
или переходи на с#(winforms)
krewger
что то я тебе не верю :D
код в студию

krewger
02.12.2009, 22:20
#include<iostream>
#include<math>
using namespace std;

float SF(float x1, float x2, float x3, float y1, float y2, float y3);
float PS(float x1, float x2, float x3, float y1, float y2, float y3);


main()
{
float x1,x2,x3,y1,y2,y3,S,P;

cout<<"Vvedite koordinaty x to4ki A";
cin>>x1;
cout<<"Vvedite koordinaty y to4ki A";
cin>>y1;
cout<<"Vvedite koordinaty x to4ki B";
cin>>x2;
cout<<"Vvedite koordinaty y to4ki B";
cin>>y2;
cout<<"Vvedite koordinaty x to4ki C";
cin>>x3;
cout<<"Vvedite koordinaty y to4ki C";
cin>>y3;
S=SF(x1, x2, x3, y1, y2, y3);
P=PS(x1, x2, x3, y1, y2, y3);

cout<<"Perimetr zadannogo treygol'nika raven"<<P<<"\n "<<"Ploshad' zadannogo treygol'nika ravna"<<S;
}

float SF (float x1, float x2, float x3, float y1, float y2, float y3)
{
return ((x1 – x3)·(y2 – y3) – (x2 – x3)·(y1 – y3))/2
}
float PS(float x1, float x2, float x3, float y1, float y2, float y3)
{
return (sqrt(((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1))))+(sqrt(((x3-x2)*(x3-x2))+((y3-y2)*(y3-y2))))+(sqrt(((x1-x3)*(x1-x3))+((y1-y3)*(y1-y3))))
}




krew.cpp(30) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
.\krew.cpp(33) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
.\krew.cpp(34) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)

Irdis
02.12.2009, 22:46
вотъ... и пишите в с++ на английском
#include<iostream>
#include<math.h>
using namespace std;

float SF(float x1, float x2, float x3, float y1, float y2, float y3);
float PS(float x1, float x2, float x3, float y1, float y2, float y3);


int main()
{
float x1,x2,x3,y1,y2,y3,S,P;

cout<<"Vvedite koordinaty x to4ki A";
cin>>x1;
cout<<"Vvedite koordinaty y to4ki A";
cin>>y1;
cout<<"Vvedite koordinaty x to4ki B";
cin>>x2;
cout<<"Vvedite koordinaty y to4ki B";
cin>>y2;
cout<<"Vvedite koordinaty x to4ki C";
cin>>x3;
cout<<"Vvedite koordinaty y to4ki C";
cin>>y3;
S=SF(x1, x2, x3, y1, y2, y3);
P=PS(x1, x2, x3, y1, y2, y3);

cout<<"Perimetr zadannogo treygol'nika raven"<<P<<"\n "<<"Ploshad' zadannogo treygol'nika ravna"<<S;
return 0;
};

float SF (float x1, float x2, float x3, float y1, float y2, float y3)
{
return ((x1 - x3)*(y2 - y3) - (x2 - x3)*(y1 - y3))/2.0;
};
float PS(float x1, float x2, float x3, float y1, float y2, float y3)
{
return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))+sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2))+sqrt(((x1-x3)*(x1-x3))+((y1-y3)*(y1-y3)));
}

razb
02.12.2009, 23:11
Это что за точки с запятыми после тела ф-ций ?

Irdis
02.12.2009, 23:34
Это что за точки с запятыми после тела ф-ций ?
хз... компилируется, считает и ок...
(насколько я помню, в плюсах есть места где можно забивать на поставить на точку с запятой или нет)
но вот это меня порадовало "·"

krewger
03.12.2009, 00:49
А у тебя какой компилятор?

Irdis
03.12.2009, 04:57
Microsoft Visual Studio 8

Ins3t
03.12.2009, 16:16
#include<iostream>
#include<math>
using namespace std;

float SF(float x1, float x2, float x3, float y1, float y2, float y3);
float PS(float x1, float x2, float x3, float y1, float y2, float y3);


main()
{
float x1,x2,x3,y1,y2,y3,S,P;

cout<<"Vvedite koordinaty x to4ki A";
cin>>x1;
cout<<"Vvedite koordinaty y to4ki A";
cin>>y1;
cout<<"Vvedite koordinaty x to4ki B";
cin>>x2;
cout<<"Vvedite koordinaty y to4ki B";
cin>>y2;
cout<<"Vvedite koordinaty x to4ki C";
cin>>x3;
cout<<"Vvedite koordinaty y to4ki C";
cin>>y3;
S=SF(x1, x2, x3, y1, y2, y3);
P=PS(x1, x2, x3, y1, y2, y3);

cout<<"Perimetr zadannogo treygol'nika raven"<<P<<"\n "<<"Ploshad' zadannogo treygol'nika ravna"<<S;
}

float SF (float x1, float x2, float x3, float y1, float y2, float y3)
{
return ((x1 – x3)·(y2 – y3) – (x2 – x3)·(y1 – y3))/2
}
float PS(float x1, float x2, float x3, float y1, float y2, float y3)
{
return (sqrt(((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1))))+(sqrt(((x3-x2)*(x3-x2))+((y3-y2)*(y3-y2))))+(sqrt(((x1-x3)*(x1-x3))+((y1-y3)*(y1-y3))))
}




krew.cpp(30) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
.\krew.cpp(33) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
.\krew.cpp(34) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)

Вы что все дружно что то курили?

В строке 10 написано:


main()

вместо int main()

В строке 33 вместо знака вычитания поставлено тире =\

и поосле ретурна пропущена точка с запятой.

так же как и в строке 36


#include <iostream>
#include <math>
using namespace std;

float SF(float x1, float x2, float x3, float y1, float y2, float y3);
float PS(float x1, float x2, float x3, float y1, float y2, float y3);


int main()
{
float x1,x2,x3,y1,y2,y3,S,P;

cout<<"Vvedite koordinaty x to4ki A";
cin>>x1;
cout<<"Vvedite koordinaty y to4ki A";
cin>>y1;
cout<<"Vvedite koordinaty x to4ki B";
cin>>x2;
cout<<"Vvedite koordinaty y to4ki B";
cin>>y2;
cout<<"Vvedite koordinaty x to4ki C";
cin>>x3;
cout<<"Vvedite koordinaty y to4ki C";
cin>>y3;
S=SF(x1, x2, x3, y1, y2, y3);
P=PS(x1, x2, x3, y1, y2, y3);

cout<<"Perimetr zadannogo treygol'nika raven"<<P<<"\n "<<"Ploshad' zadannogo treygol'nika ravna"<<S;
}

float SF (float x1, float x2, float x3, float y1, float y2, float y3)
{
return ((x1 - x3)*(y2 - y3) - (x2 - x3)*(y1 - y3))/2;
}
float PS(float x1, float x2, float x3, float y1, float y2, float y3)
{
return (sqrt(((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1))))+(sqrt(((x3-x2)*(x3-x2))+((y3-y2)*(y3-y2))))+(sqrt(((x1-x3)*(x1-x3))+((y1-y3)*(y1-y3))));
}


Так все ок, без всяких магических точек с запятыми после тела ф-й.

Конпелятор VC++ 2008

=Zeus=
03.12.2009, 17:32
Здравствуйте. Возник вопрос:
Через OPENFILENAME получаю полный путь и имя к выбранному файлу. Дальше пытаюсь записать эту информацию в текстовый файл, но не знаю, как получить длину строки для записи.
Вот код:
static OPENFILENAME ofn;
static char FilePath[255];
...
ofn.lpstrFile = (LPWSTR)FilePath;
GetOpenFileName(&ofn);
...
ofstream outs("result.txt");
outs.write (FilePath, длина);
Хотел использовать ф-цию strlen, но там параметр *char. А уменя просто char[]. Если изменить, то перестает работать OPENFILENAME. Или я что-то не так делаю?

\\ChaOs//
03.12.2009, 19:05
...

outs <<FilePath<<endl;

Chubakur
03.12.2009, 19:24
.
unsigned int a;
int countLength=0;
for(a=0;a<=255;a++){
if(FilePath[a]) countLength++;
}
countLength будет содержать длину массива... наверное :)

Lee_fx
03.12.2009, 20:33
чем это strlen не угодила?
static char FilePath[255];
...
int len = strlen(FilePath);

Chubakur
03.12.2009, 20:40
чем это strlen не угодила?
static char FilePath[255];
...
int len = strlen(FilePath);
strlen принимает в качестве параметра char *. А тут статический char[]

POS_troi
03.12.2009, 20:59
String string;
string.c_str();
string.w_str();

нафига нужен char в файлепатч вообще не пойму - Стринг удобнее =).

Ra$cal
03.12.2009, 21:24
strlen принимает в качестве параметра char *. А тут статический char[]
ну вы хоть пробовали то написать ради любопытства?

int main(){
char temp [500];
strcpy(temp, "asdgdsasdfrawegqwefdsvF");
cout << strlen(temp) << endl;
return 0;
}

\\ChaOs//
03.12.2009, 21:26
strlen принимает в качестве параметра char *. А тут статический char[]

Как-бэ переменные объявленные как char* и как static char[] будут содержать указатель на первый элемент массива. Поэтому static char[] тот же char* .

n0th1ng!~
03.12.2009, 21:45
конечно вопрос дурацкий но как использовать проски на С++?желательно еше узнать как можно читать cookie а не тело страницы!!!?

POS_troi
03.12.2009, 21:47
Curl

n0th1ng!~
03.12.2009, 21:48
? а по точнее..))

kopBaJIoJI
06.12.2009, 17:39
Пишу простейший графический редактор.
Подскажите, как реализовать открытие картинки, чтобы она тут же встала в форму для рисования, при этом автоматически подогнался размер окна под картинку.
Так же, при рисовании экран мерцает, читал давно, что поможет двойная буферизация в самом компоненте Image, но так и не нашёл, где указывать эту буферизацию в значение true. Заранее благодарен.

St0nX
07.12.2009, 01:24
int xo_ii::SummStr(int * mas,int nStr)
{
int summ;
summ = mas[nStr][0]+mas[nStr][1]+mas[nStr][2];
return summ;
}

/home/kubik/XO/xo_test/XO/xo_ii.cpp:75: error: invalid types ‘int[int]’ for array subscript

вроде все банально, а не пашет :( чё то мозг на ночь глядя заклинило. Может кто подскажет?

rudvil
07.12.2009, 01:30
2St0nX
int xo_ii::SummStr (int* mas[], int nStr) {
int summ;
summ = mas[nStr][0]+mas[nStr][1]+mas[nStr][2];
return summ;
}

St0nX
07.12.2009, 01:32
2St0nX
int xo_ii::SummStr (int* mas[], int nStr) {
int summ;
summ = (mas[nStr][0])+(mas[nStr][1])+(mas[nStr][2]);
return summ;
}
Неа... все тоже самое.

rudvil
07.12.2009, 01:33
Неа... все тоже самое.
VS 2008, все компилится на ура.

POS_troi
07.12.2009, 01:39
VS 2008, все компилится на ура.

Вы не забывайте указывать - какая среда и какой проэкт (Consol/Windows Form)

rudvil
07.12.2009, 01:41
Вы не забывайте указывать - какая среда и какой проэкт (Consol/Windows Form)
Empty Project, т.е. консоль.

St0nX
07.12.2009, 01:42
Qt 4.5.2
Ubuntu 9.10
#ifndef XO_II_H
#define XO_II_H

struct crd
{
int x;
int y;
};

class xo_ii
{
public:
xo_ii();
crd * CrdOpr(int * mas, int poss);
private:
int SummStr(int * mas,int nStr);
int SummDl1(int * mas);
int SummDl2(int * mas);
crd * OprNullStr(int * mas,int nStr);
crd * OprNullDl1(int * mas);
crd * OprNullDl2(int * mas);
};

#endif // XO_II_H

может тут че не так сделал...

POS_troi
07.12.2009, 01:46
Empty Project, т.е. консоль.

Ну вот. а у MFC допустим свои заморочки (покрайне мере я вечно нарываюсь). да и компилитцо то оно компилитцо а ты вызови данную функцию и получиш подзатыльник от компилятора ;)

rudvil
07.12.2009, 01:46
Qt 4.5.2
Ubuntu 9.10
#ifndef XO_II_H
#define XO_II_H

struct crd
{
int x;
int y;
};

class xo_ii
{
public:
xo_ii();
crd * CrdOpr(int * mas, int poss);
private:
int SummStr(int * mas,int nStr);
int SummDl1(int * mas);
int SummDl2(int * mas);
crd * OprNullStr(int * mas,int nStr);
crd * OprNullDl1(int * mas);
crd * OprNullDl2(int * mas);
};

#endif // XO_II_H

может тут че не так сделал...
тут тоже нужно поменять
заменить int SummStr(int * mas,int nStr); на int SummStr (int* mas[], int nStr);

InFlame
08.12.2009, 19:34
FILE *fp;
char *files[] = {file1, file2, file3};
i=0;
while(i<3) {
printf("Обработка файла %s\n\t",files[i]);
if((fp=fopen(files[i],"r+"))==NULL) { //если файл невозможно открыть, то выкидывается ошибка и переходим к следующему файлу в массиве
perror("fopen");
fclose(fp);
i++;
}
//тут идёт обработка файла
i++;

Есть массив файлов, программа обрабатывает этот массив, но если файл невозможно открыть, то программа завершает свою работу. Вопрос: как сделать так, чтобы программа продолжала свою работу, если файл невозможно открыть?
ЗЫ: Прога вылетает с ошибкой Segmentation fault (Ошибка сегментации).

St0nX
08.12.2009, 20:20
Есть массив файлов, программа обрабатывает этот массив, но если файл невозможно открыть, то программа завершает свою работу. Вопрос: как сделать так, чтобы программа продолжала свою работу, если файл невозможно открыть?
Прога завершается? или же всетаки с ошибкой вылетает? Если завершается нормально то гоняй в цикле пока массив с файлами не кончится.

InFlame
08.12.2009, 20:34
Прога вылетает с ошибкой (Ошибка сегментации).

POS_troi
08.12.2009, 21:16
ifiles[i],"r+"

вся проблема тут, ибо по условию "i<3" ты в результате получаеш 4!!! (0,1,2,3) а четвертую ячейку массива она не может высосать из воздуха, сделай условие "i<2".

Компилил в мозгах, могу ошибаться но врятли.

St0nX
08.12.2009, 21:21
вся проблема тут, ибо по условию "i<3" ты в результате получаеш 4!!! (0,1,2,3) а четвертую ячейку массива она не может высосать из воздуха, сделай условие "i<2".

Компилил в мозгах, могу ошибаться но врятли.
Неа будет 0 1 2 когда i = 3 оно уже не прокатит по условию

InFlame
08.12.2009, 21:28
вся проблема тут, ибо по условию "i<3" ты в результате получаеш 4!!! (0,1,2,3) а четвертую ячейку массива она не может высосать из воздуха, сделай условие "i<2".

Компилил в мозгах, могу ошибаться но врятли.
Всё там правильно, потому что в цикле стоит условие "меньше", а не "меньше-равно." Да и суть не в этом. Я искусственно удаляю второй файл и на нём программа вылетает, а надо чтобы продолжала работу.

St0nX
08.12.2009, 21:36
Выложи весь код работы с файлами так ниче не понятно чё ты там делаеш, как удаляеш. В отладчике смотрел?

razb
08.12.2009, 21:46
Емае, ну для кого отладчик придумали то? посмотри там на какой ф-ции вылетает и с какими параметрами.

POS_troi
08.12.2009, 21:59
Да и суть не в этом. Я искусственно удаляю второй файл и на нём программа вылетает

Используя массив в определении fopen ты делаеш себе грабли (это не глюк - это фишка и доволи подробно опианная в WWW).

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

i<3 - протупил, не о том думал =/

winterfrost
09.12.2009, 09:54
fclose(fp);
- если файл не открылся, мб и не надо его закрывать? =)

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

St0nX
09.12.2009, 10:29
fclose(fp);
- если файл не открылся, мб и не надо его закрывать? =)

В этом ты прав)

The fopen() function opens a file indicated by fname and returns a stream associated with that file. mode is used to determine how the file will be treated (i.e. for input, output, etc).

If there is an error, fopen() returns NULL.

Если файл не открыт то он пытается закрыть указатель на адрес файла который равен 0 поэтому и получает ошибку сегментации ;)

winterfrost
09.12.2009, 11:18
if ((fp=fopen(files[i],"r+"))==NULL) {
perror("fopen");
i++;
continue; // <--
}
попробуй добавить continue, что-бы перейти к следующей интерации цикла

InFlame
09.12.2009, 11:41
Всем спасибо, исправил.

PandoraBox
09.12.2009, 17:03
кто в курсе как проактивно защитить файл от удаления в системе windows ?

типа LockFileEx, ZwLockFileEx, NtLockFileEx

_antony
09.12.2009, 17:13
кто в курсе как проактивно защитить файл от удаления в системе windows ? типа LockFileEx, ZwLockFileEx, NtLockFileEx

Удаление файла сводиться к отсылке IRP_MJ_SET_INFORMATION c FileInformationClass = FileDispositionInformation.
Вывод: писать драйвер фильтр фс и отклонять такие irp для нужного файла.

=Zeus=
09.12.2009, 19:42
Подскажите, как в Visual Studio 2008 в PictureControl программно загрузить картинку JPG из файла, на API.

kopBaJIoJI
09.12.2009, 21:28
Подскажите функцию, которая при закрытии формы выдавала бы информационное сообщение с кнопками Да, Нет, Отмена. При нажатии да - открывается окно для сохранения файла, при нажатии нет - программа закрывается, при отмене - остаётся всё как было.

St0nX
09.12.2009, 21:43
Подскажите функцию, которая при закрытии формы выдавала бы информационное сообщение с кнопками Да, Нет, Отмена. При нажатии да - открывается окно для сохранения файла, при нажатии нет - программа закрывается, при отмене - остаётся всё как было.
необходимо перехватить событие закрытие формы и вызвать свою функцию. В Qt допустим достаточно переопределить функцию закрытия формы в классе пример отлично разбирается в книге Qt 4. Программирование GUI на С++. В WinAPI примерно так:
#include <windows.h>

// Объявления функций
BOOL RegClass(WNDPROC, LPCTSTR, UINT);
LRESULT CALLBACK WndProc(HWND,UINT, WPARAM, LPARAM); // оконные процедуры

HINSTANCE hInstance;
char szMainClass[] = "MainClass";
char szTitle[] = "Пример 1.2";

// Главная функция приложения
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst,
LPSTR IpszCmdLine, int nCmdShow)
{
MSG msg;
hInstance = hInst;
HWND hwnd;
if (!RegClass(WndProc, szMainClass, COLOR_DESKTOP))
return FALSE;
// До создания окна узнаём габариты экрана в пикселях
int w = GetSystemMetrics(SM_CXSCREEN) - 1; // Ширина
int h = GetSystemMetrics(SM_CYSCREEN) - 1; // Высота
hwnd = CreateWindow(szMainClass, szTitle,
WS_POPUPWINDOW | WS_CAPTION |
WS_MINIMIZEBOX | WS_VISIBLE,
0, 0, w, h, 0, 0, hInstance, NULL);
if (!hwnd) return FALSE;
while (GetMessage(&msg, 0, 0, 0)) DispatchMessage(&msg);
return msg.wParam;
}

BOOL RegClass(WNDPROC Proc, LPCTSTR szName, UINT brBackground)
{
WNDCLASS wc;
wc.style = wc.cbClsExtra = wc.cbWndExtra = 0;
wc.lpfnWndProc = Proc;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(brBackground + 1);
wc.lpszMenuName = (LPCTSTR) NULL;
wc.lpszClassName = szName;
return (RegisterClass(&wc) != 0);
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg,
WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_DESTROY:
{
PostQuitMessage(0);
return 0;
}
case WM_CLOSE:
{
// ТУТ ТВОЙ МЕСАДЖ БОКС И ЕГО ОБРАБОТКА
return 0;
}
}
return DefWindowProc(hwnd, msg, wParam, lParam);
}

kopBaJIoJI
09.12.2009, 21:46
Благодарю!

becensed
09.12.2009, 21:58
MessageBox не подходит?

kopBaJIoJI
09.12.2009, 23:56
Да, подошло, сделал через MessageBox в FormCloseQuery.
Теперь другая проблема: как загрузить .jpg/.jpeg в TImage? Прописал в библиотеках jpeg.hpp, всёравно не загружает, пишет, что неизвестный формат. Подскажите пожалуйста:)

cremator (c)
10.12.2009, 03:29
Пытаюсь реализовать алгоритм перевода из фиксированной формы записи мат. выражения к постфиксной(обратной польской форме). Есть код хорошо реализованный, С++. Но главного, что мне надо нет: поддержка сложных функций типа cos,tg,abs и др.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
#include <assert.h>

int tok;
double tokval;

int next() {
for (;;) {
int c = getchar();
if (c == EOF || strchr("+-*/^()\n", c) != NULL) return tok = c;
if (isspace(c)) continue;
if (isdigit(c) || c == '.') {
ungetc(c, stdin);
scanf(" %lf", &tokval);
return tok = 'n';
}
fprintf(stderr, "Bad character: %c\n", c); abort();
}
}

void skip(int t) { assert(tok == t); next(); }

double expr();

// numpar ::= number | '(' expr ')'
double numpar() {
if (tok == 'n') { double x = tokval; skip('n'); return x; }
skip('('); double x = expr(); skip(')'); return x;
}

// factor ::= numpar | numpar '^' factor
double factor() {
double x = numpar();
if (tok == '^') { skip('^'); x = pow(x, factor()); }
return x;
}

// term ::= factor | term '*' factor | term '/' factor
double term() {
double x = factor();
for (;;) {
if (tok == '*') { skip('*'); x *= factor(); }
else if (tok == '/') { skip('/'); x /= factor(); }
else return x;
}
}

// expr ::= term | expr '+' term | expr '-' term
double expr() {
double x = term();
for (;;) {
if (tok == '+') { skip('+'); x += term(); }
else if (tok == '-') { skip('-'); x -= term(); }
else return x;
}
}

int main() {
next();
while (tok != EOF) {
if (tok == '\n') { skip('\n'); continue; }
printf("%.9g\n", expr());
}
return 0;
}

Кто сможет помочь расширить его доп. функциями буду безгранично благодарен :)))
..я тут не уследил где идёт простановка приоритетов ф-ий даже.. возможно в этом загвоздка. спасибо)

becensed
10.12.2009, 11:07
Да, подошло, сделал через MessageBox в FormCloseQuery.
Теперь другая проблема: как загрузить .jpg/.jpeg в TImage? Прописал в библиотеках jpeg.hpp, всёравно не загружает, пишет, что неизвестный формат. Подскажите пожалуйста:)
Кто пишет, что неизвестный формат?
Зачем jpeg.hpp в библиотеки, если это инклуд?
В гугле по поиску jpeg.hpp нашлась масса статей и примеров. Они не работают?

azsx
10.12.2009, 15:18
я хочу заняться изучением с++, для начала напишу одну нужную мне программу (использование бд, добваление, удаление и поиск записей). Вопрос, какую среду разработки выбрать? Правильно я скачал Microsoft Visual C++ 2008 express edition? Бесплатный ли он? Посоветуйте офф книгу для чайников.
Заранее спасибо.

Ra$cal
10.12.2009, 16:11
cremator (c)
boost.spirit поизучай. или AntLR. писать вручную грамматики на плюсах - дело не очень благодарное.

PandoraBox
10.12.2009, 18:03
Удаление файла сводиться к отсылке IRP_MJ_SET_INFORMATION c FileInformationClass = FileDispositionInformation.
Вывод: писать драйвер фильтр фс и отклонять такие irp для нужного файла.
можно подробнее описать данный метод ?

_antony
10.12.2009, 18:15
можно подробнее описать данный метод ?
Да , только сначала надо иметь теоретический минимум. Отсылаю Вас к этой книге http://www.ozon.ru/context/detail/id/2427699/ .

cremator (c)
10.12.2009, 20:47
Ra$cal, дело в том, что мне не нужны сложные классы парсеров и тому подобного. Мне для ргз по С++ надо сдать, в качестве своей работы) Вот поэтому и подумал может кто-то поможет разобраться в этом. С++ совсем недавно изучаю, в дельфи я бы легко нарисовал всё это..

6apa6aIIIka
12.12.2009, 00:54
подскажите пожалуйста:
есть среда разработки visual c++ 2005 express edition. Значит скомпилил я в ней программу. Пробую запустить: если из командной строки, то все отлично, а если из самой среды разработки, то получаю ошибку(функция open почему-то возвращает -1). Как это исправить? может в visual c++ стоит какой-то запрет на открытие файлов?

Ra$cal
12.12.2009, 03:07
при запуске отладки в студии CurrentDirectory = директории проекта. Если же ты запускаешь сам exe, то директория меняется на туже плюс Debug. Кароч смотри где у тебя файл. Если путь относительный(без c:\\proj\\1.txt"), то проверяй, есть ли он в папке.

Matnya
13.12.2009, 03:05
Подскажите плиз. как реализоать прогу. Задача такая. написать просмоторщик html, а лучше mht файлов в среде C++ Builder. Я хочу написать прогу которая окрыает и показывает html, но лучще mht файлы. аподскажите какие компоненты юзать и т.д. плиз

_nic
13.12.2009, 15:03
Если в стктуре для передачи данных в поток.Использовать обьекты со своим внутренним конструктором,типа всяких string,это приведет к утечке памяти?

Ra$cal
13.12.2009, 17:29
вся суть использования string вместо char* и vector вместо массивов и заключается в защите от утечек памяти. почитай на вики http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D 0%B5_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D0%B0_%D 0%B5%D1%81%D1%82%D1%8C_%D0%B8%D0%BD%D0%B8%D1%86%D0 %B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8 F

6apa6aIIIka
14.12.2009, 02:04
всем привет.

Скомпилил я переборщик паролей в visual c++2005. При малой длине пароля и при малых алфавитах, все прекрасно работает. Но если ставить большие, то прога, отработав чуть больше часа, либо виснет, либо выдает ошибку типа:
инструкция по адресу "0х00412759" обратилась к памяти по адресу "(тут разные значения получаются, например 0х0036с00а)". Память не может быть "read".
Подскажите пожалуйста что тут вообще можно сделать: как найти эту инструкцию или что изменить для устранения ошибки или как выяснить в чем проблема.

Irdis
14.12.2009, 02:08
Подскажите пожалуйста что тут вообще можно сделать:
показать код, вы, видимо, вылезаете за допустимые границы.

eldar85
14.12.2009, 16:40
system("clear");
спасибо

eldar85
14.12.2009, 16:51
подскажите пожалуйста кто знает как можно найти рандомное выражение

eldar85
14.12.2009, 20:45
Всем привет. Вот написал код на плюсах, помогите разобраться:
#include <iostream>
#include <boost/regex.hpp>
#include <curl/curl.h>
#include <windows.h>
#include <fstream>

using namespace std;
#include "as.curl.h"
int main()
{


as_curl *curl = new as_curl();

string xStr = curl->load("http://thedowntown.ru/bastion/index.php")->exec(); //тут страница загружается в строку - это работает отлично



boost::regex xRegEx("value='([0-9]{1,90})'"); //регулярка



boost::smatch xResults;



boost::regex_match(xStr, xResults, xRegEx);

cout << "value: " << xResults[1]<< endl << xStr << endl;
system ("pause");

return 0;
}

но код нифига не находит то что я ищу...
вот что скачивается в переменную xStr:
value: //вот тут должно быть value: 1260794797
HTTP/1.1 200 OK

Server: nginx/0.8.15

Date: Mon, 14 Dec 2009 12:46:37 GMT

Content-Type: text/html; charset=utf-8

Transfer-Encoding: chunked

Connection: keep-alive

X-Powered-By: PHP/5.2.8

Expires: Thu, 19 Nov 1981 08:52:00 GMT

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache

Set-Cookie: PHPSESSID=058cbbe6ead6b579cf014f5631eec125; path=/



<center><h1 style="font-family: verdana">Bastion Warehouse</h1><br /><form method='post'>

<input type='text' name='login' />

<input type='password' name='password' />

<input type='submit' value='login' />

<input type='hidden' name='rand' value='1260794797' />

</form>





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

=Zeus=
14.12.2009, 21:38
Кто знает, как определить, составляют ли точки правильный многоугольник? Пробовал, но не могу понять, как проверить соседние точки (ведь они даны в произвольном порядке). Точки задаются координатами (Х,У).
Если можно, то кусочек кода.
Вот, немного информации:
http://www.uztest.ru/plugins/abstracts/50_1.gif

Irdis
14.12.2009, 22:41
(ведь они даны в произвольном порядке).
выбирай произвольно точку... и считай скалярное произведение(векторы будут составлены из твоей произвольной точки, и всех попарно различных комбинаций двух остальных). Когда найдёшь наибольший угол вот тебе пара соседних точек.
После того как ты восстановишь порядок думать уже не надо.

Aag
14.12.2009, 23:12
Всем привет. Вот написал код на плюсах, помогите разобраться:


...
boost::regex xRegEx("value='([0-9]{1,90})'"); //регулярка
boost::smatch xResults;
std::string::const_iterator xItStart = xStr.begin();
std::string::const_iterator xItEnd = xStr.end();

if( boost::regex_search(xItStart,xItEnd, xResults, xRegEx) ){

std::cout << "value: " << xResults[1]<< std::endl << xStr << std::endl;
}
else std::cout<<"no result"<<std::endl;
...


boost::match - соответсвует ли введеная строка регулярному выражению
boost::search - поиск подстроки, соответствующей регулярному выражению, в веденной строке

_nic
15.12.2009, 02:00
С событиями можно работать как с мьютексами?Или нельзя так как у мьютекса,получать указатель на событие созданное в другом потоке?

6apa6aIIIka
15.12.2009, 12:21
показать код, вы, видимо, вылезаете за допустимые границы.

тут исходный код и исполняемый файл
http://files.mail.ru/APD71A

Отладка в Visual c++ останавливается в 334 строке файла arj2.с

eldar85
15.12.2009, 23:36
все въехал в чем залупа была)))))

transserg
16.12.2009, 15:45
привет всем... в чем может быть проблема что при испольщовании scanf около 7 раз больше он не считывает ничего getlasterror возвращает ошибку 8 c cin результат тот же.. каждый раз ввеодистя по 1му символу

SHARA
16.12.2009, 15:59
Я начинающий, скажите как решить проблему следующего типа.
После компиляции программы в консоли VS2008, русский буквы, которые идут в коде программы, после компиляции и запуска на исполнения выглядят в виде абры-кадабры.

ntldr
16.12.2009, 16:03
Я начинающий, скажите как решить проблему следующего типа.
После компиляции программы в консоли VS2008, русский буквы, которые идут в коде программы, после компиляции и запуска на исполнения выглядят в виде абры-кадабры.
setlocale(LC_ALL, “Russian”);

transserg
17.12.2009, 13:59
в чем может быть проблема, при воводе данных в консоль примерно после 7го использования scanf или cin вываливается ошибка недостаточно памяти для обработки комманды... буфер ввода чищу fflush(stdin)... притом это ошибка замечатся ток у меня на Win7 на хп и висте незамечено такого поведения
P.S да и еще когда моё приложения было запущенно из под иды =) то ошибок небыло

wolmer
17.12.2009, 15:10
Где можно посмотреть информацию о функциях вып. след. действия (токо не давно начал изучать C++ (visual studio)):
1.Копирование текста с буквы до буквы (т.е. аналог функции copy как в делфи)
2.Поиск определенного текста и возвращение числа позиции где текст распологается (т.е. аналог функции pos как в делфи)

_______
Да и вообще интересует где набраться можно информации о разных функциях (все равно что должны делать функции)(нагуглить не могу конкретно о справках функциях (вроде была где то справка на офф сайте microsoft))

slesh
17.12.2009, 15:15
1) как вариант заюзать strncat указав начальную позицию и макс длинну.
2) strchr - вернет указатель на вхождение символа в строку
strstr - вернет указатель на вхождение подстроки в строку.
Далее если null - значит нету вхождения. Если другое значение, то
от полученного указателья отнимай указатель на начало строки и получиш позицию.

Aleksandr.
17.12.2009, 18:26
Приветствую всех.
Начал Изучать язык програмирования C++
Создал первую Простейшую программу, преведенную в примерах.
В текст. Документ вписал исходный Код:
#include <iostream.h>


int main()
{
cout << " Hello World!\n";
return 0;
}
Сохранил с разрешением .cpp
Вроде все норм, читает его как С++, Но возник вопрос, почему не компонует, компилирует.

Вот Ход Построения
------ Построение начато: проект: Example 1, Конфигурация: Debug Win32 ------
Отсутствует командная строка построения, которую надо выполнить.

Осуществление действий, прописанных в проекте Makefile
Проект : error PRJ0002 : Результат ошибки -1 возвращен из "".
Журнал построения был сохранен в "file://c:\Documents and Settings\23\Мои документы\Visual Studio 2008\Projects\Example 1\Debug\BuildLog.htm"
Example 1 - ошибок 1, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Заранее спс за ответы. :) :) :)

ZeroByte
17.12.2009, 19:48
1)Новый проект
2)console wizard
3)туда пишешь твой код
4)F9
P.S. сам файл .cpp скорее всего не понадобится

Filosof_77
18.12.2009, 03:40
Привет у меня вопрос по ВизуалСтудия С++ 2008))!
суть:
можно или изменить цвет шрифта(текста) в VSC++ и как это сделать?
но не в консоле а в MFC!
буду благодарен)!

wolmer
18.12.2009, 08:03
1) как вариант заюзать strncat указав начальную позицию и макс длинну.
Такое не подходит

romeo[solo]
18.12.2009, 13:53
del

becensed
18.12.2009, 15:12
Привет у меня вопрос по ВизуалСтудия С++ 2008))!
суть:
можно или изменить цвет шрифта(текста) в VSC++ и как это сделать?
но не в консоле а в MFC!
буду благодарен)!
Что значит в MFC?
Попробую угадать: Tools->Options->Fonts and Colors
так?

Filosof_77
18.12.2009, 22:47
Что значит в MFC?
Попробую угадать: Tools->Options->Fonts and Colors
так?

ну типа в МФЦ приложении при нажатие на елемент лістБокс в соседнем елементе СтатікТекст отображалась набпись с какимто цветом... а при нажатии следуещего елемента....на том Статіке отображалась надпись но уже з другим цветом...

Mozy
19.12.2009, 18:48
2 Aleksandr.
Ты забыл указать пространство имён STD

либо пишешь

#include <iostream>
using namespace std;

int main()
{
cout << " Hello World!\n";
return 0;
}


либо указываешь пространство имён явно

#include <iostream>

int main()
{
std::cout << " Hello World!\n";
return 0;
}

оlbaneс
19.12.2009, 20:35
2алесандр. прочитай https://forum.antichat.ru/threadnav89681-12-40.html с 477 коммента и до конца.
там расписано.

anasta
19.12.2009, 21:37
Можно ли как-нибудь реализовать отправку e-mail по средствам C?

PandoraBox
19.12.2009, 21:47
Какой компонент нужен для работы с графами в C++ Builder и рисование (карта сети) по хаб устройствам ?

Для C++ Builder v6 или RAD Studio 2010, или где посмотреть пример работы Boost Graph Library для виндовс ? :)

razb
19.12.2009, 21:57
или где посмотреть пример работы Boost Graph Library для виндовс
По графам в бусте даже небольшая книга написана, так и ищи в гугле "C++ Boost Graph Library book"

PandoraBox
19.12.2009, 22:01
Можно ли как-нибудь реализовать отправку e-mail по средствам C?

// Yuri Zarechny for News2News (c) 2006

#include "stdafx.h"
//#include < windows.h >
#include < winsock2.h > //link ws2_32.lib
#include "conio.h"

struct _sendmail {
LPSTR host;
LPSTR IP;
LPSTR sender;
LPSTR recip;
LPSTR subject;
LPSTR body;
SOCKET hSocket;
} sendmail;

BOOL InitSock(LPSTR Server)
{
WSADATA wsd;
if (WSAStartup(MAKEWORD(2,2), &wsd) > 0)
{
printf("Winsock init error: %d\n", WSAGetLastError());
return false;
}
return true;
}

LPSTR GetIP(LPSTR h)
{
in_addr ia;
hostent* hbn;
unsigned int addr;

if (isalpha(h[0])) hbn = gethostbyname(h);
else
{
addr = inet_addr(h);
hbn = gethostbyaddr((char *)&addr, 4, AF_INET);
}

if (hbn==0) return "";
ia.S_un.S_addr=*(DWORD *)hbn->h_addr_list[0];
return inet_ntoa(ia);
}

BOOL ValidateEnvelope(LPSTR h, LPSTR r, LPSTR s, LPSTR *ip)
{
if (h=="" || r=="" || s=="")
{
printf("Invalid host or sender/recipient email address\n");
return false;
}
*ip=GetIP(h);
if (*ip=="")
{
printf("Can not resolve host name %s to ip address\n", h);
return false;
}
return true;
}

BOOL ConnectTo()
{
const u_short SMTP_PORT=25;
sockaddr_in sa;
sa.sin_family=AF_INET;
sa.sin_addr.S_un.S_addr=inet_addr(sendmail.IP);
sa.sin_port=htons(SMTP_PORT);
return (connect(sendmail.hSocket, (SOCKADDR *)&sa, sizeof(sa))==0);
}

BOOL snd(LPSTR txt, bool resp)
{
char tx[4096];
sprintf(tx, "%s\r\n", txt);

if (send(sendmail.hSocket, tx, strlen(tx),0)==SOCKET_ERROR)
{
printf("%s%s\n", tx, " - send operation failed.");
return false;
}
if (!resp) return true;

while (true)
{
char rcv[1024];
char outp[255]="";

HANDLE hEvent=WSACreateEvent();
WSAEventSelect(sendmail.hSocket,hEvent,FD_READ);
DWORD nWait=WSAWaitForMultipleEvents(1, &hEvent, 0, 1000, 0);
WSACloseEvent(hEvent);
if (nWait!=0) return false;
recv(sendmail.hSocket, rcv, sizeof(rcv),0);

strncpy(outp, rcv, strcspn(rcv, "\n")+1);
printf("%s\n", outp);
}
return true;
}

BOOL SendMail()
{
if (!ValidateEnvelope(sendmail.host, sendmail.recip,
sendmail.sender, &sendmail.IP)) return false;

char tmp[255];
if (sendmail.sender=="" || sendmail.recip=="" ||
sendmail.body=="" || sendmail.subject=="") return false;

sendmail.hSocket=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sendmail.hSocket==SOCKET_ERROR) return false;

if (!ConnectTo())
{
printf("Unable to connect to the server.\n");
return false;
}
snd("HELO", true);

sprintf(tmp, "%s%s%s", "MAIL FROM:<", sendmail.sender, ">");
snd(tmp, true);
sprintf(tmp, "%s%s%s", "RCPT TO:<", sendmail.recip, ">");
snd(tmp, true);

snd("DATA", true);
sprintf(tmp, "%s%s", "From: ", sendmail.sender);
snd(tmp, false);
sprintf(tmp, "%s%s", "To: ", sendmail.recip);
snd(tmp, false);
sprintf(tmp, "%s%s", "Subject: ", sendmail.subject);
snd(tmp, false);
snd("", false);
snd(sendmail.body ,false);
snd(".", true);

snd("NOOP", true);
snd("QUIT", true);
closesocket(sendmail.hSocket);

return true;
}

void _tmain() {
// provide valid host name and email addresses
sendmail.host = "smtp.myisp.ca";
sendmail.sender = "sender@myisp.ca";
sendmail.recip = "recipient@myisp.ca";

sendmail.subject = "Testing Winsock SMTP functionality";
sendmail.body = "Test message:\n\n"
"Windows Sockets (Winsock) provides a general-purpose networking "
"application programming interface (API) based on the socket "
"interface from the University of California at Berkeley.\n";

if (InitSock(sendmail.host))
{
SendMail();
WSACleanup();
}

printf("\nPress ENTER to quit");
getch();
return;
}

PandoraBox
19.12.2009, 22:04
По графам в бусте даже небольшая книга написана, так и ищи в гугле "C++ Boost Graph Library book"
есть какая то альтернатива постройки карты сетей (+ подсети из Switch тоже выводить) ?

«Adult Holding»
19.12.2009, 22:33
Господа, напишите код на Visual С++:
Вывождение графика ф-ций: y=3x-cos(x) - 1

Буду дико благодарен! ;)

Lee_fx
19.12.2009, 23:59
Вывождение ну зачем так людей пугать)

SaiRus
20.12.2009, 00:29
Господа, напишите код на Visual С++:
Вывождение графика ф-ций: y=3x-cos(x) - 1

Буду дико благодарен! ;)
как раз пишу, только на билдере, могу дать сам функцию подставишь...только она не только график выводит...


Собственно мой вопрос
- язык с++ билдер
-имеется юнит1.h, юнит2.h
-в юнит1.cpp прописан класс, в классе функция fx(х) вычисляет функцию по х

немогу заюзать класс в юнит2.h как понял надо extern'ом тащить, класс вытаскиваю, дальше пытаюсь определить переменную для этого класса ни хера кароче...как правильно подключить этот класс? спасибо

razb
20.12.2009, 01:08
Господа, напишите код на Visual С++:
Вывождение графика ф-ций: y=3x-cos(x) - 1

Буду дико благодарен
Подобные запросы пишем в соседнюю тему с лабами, тут задаем конкретные вопросы.


есть какая то альтернатива постройки карты сетей (+ подсети из Switch тоже выводить) ?
Немного не ясно что тебе необходимо сделать, поподробней ...

Собственно мой вопрос
- язык с++ билдер
-имеется юнит1.h, юнит2.h
-в юнит1.cpp прописан класс, в классе функция fx(х) вычисляет функцию по х

немогу заюзать класс в юнит2.h как понял надо extern'ом тащить, класс вытаскиваю, дальше пытаюсь определить переменную для этого класса ни хера кароче...как правильно подключить этот класс? спасибо
У тебя в юнит1.h обьявление класса, в юнит1.срр реализация так?
немогу заюзать класс в юнит2.h
инклюдь сюда первый хэдэр.

SaiRus
20.12.2009, 01:23
юнит1:
грубо говоря

class myClass
{
float x;


public:
float adr,bdr,n,a1,b1,c,x2,x3,x1,Xmin,Ymin,h1,eps1,num;
bool flagForm3,FlagF;
int k;
float AllEx[3];


//--------------------------Функция---------------------
float fx(float num)
{
x=num;
return (2*x*x-12.5)*cos(x);
}
//тут еще функции

}
myClass calculate;

//........и дальше текст еще проги..............



юнит2

#include "Unit1.h"

void __fastcall TForm3::FormShow(TObject *Sender)
{float a,b,h,Y;
int x0,y0;
a=StrToFloat(Form1->Edit1->Text);
b=StrToFloat(Form1->Edit2->Text);
Y=calculate.fx(a);
h=StrToFloat(Form1->Edit3->Text);
}

говорит не определенный символ calculate и в юнит2 если написать myClass calculate; в объявлении переменных говорит ошибка описания переменных, хотя инклудить не рекомендуют но мне уже чет пофиг, но как то можно еще extern'ом, ваще инфу не могу найти...
ПС: реализация в юнит2, а описание в юнит1...

Ra$cal
20.12.2009, 01:36
зачем объект объявляешь прямо в хидере с описанием класса? его обычно объявляют в том классе, который будет его использовать. так же у тебя будут проблемы, когда ты проинклюдишь этот класс более чем в одном файле. нужно будет ставить модификатор static.