проблема в том что мне что сортировать нужно не только имени но и размеру (обращаться нужно только к именам после сортировки) поэтому думаю как лучше реализовать..сейчас как раз с std и думаю у меня vc6 че-то ошибки выдает когда использую list скачал sdk пишет про секьюрити куки =\\\\\\\\\\\\\\\\\\\ думаю может на vc 2008 ?писать я так понял для сорт можно свою функцию задавать.. typedef vector<pair<__int64,string> > viListImage; typedef pair<__int64,string> piListimage;// размер и имя bool ptr_less(const piListimage& lhs, const piListimage& rhs) { return lhs.first < rhs.first; } sort(viLstImg->begin(),viLstImg->end(),&ptr_less);
> я так понял для сорт можно свою функцию задавать.. нет > думаю может на vc 2008 ?писать тогда уж vc7 (2003) > сейчас как раз с std и думаю у меня vc6 че-то ошибки выдает когда использую list по идее, это считается небезопасным (как, например, gets()) что конкретно - хз > проблема в том что мне что сортировать нужно не только имени но и размеру сначала - по имени, потом по размеру, или наоборот.
сначала по размеру я выше привел пример как сделал,ща проверяю как он работает) Code: d:\test\p1 path:d:\test\p1\abcde5.jpg size:8678 path:d:\test\p1\abcde3.jpg size:11788 path:d:\test\p1\abcde2.jpg size:21068 path:d:\test\p1\abcde4.jpg size:22089 path:d:\test\p1\abcde.jpg size:23078 d:\test\p1\p1_1 path:d:\test\p1\p1_1\abcde.jpg size:23078 d:\test\p1\p1_1\p1_1_1 path:d:\test\p1\p1_1\p1_1_1\abcde.jpg size:23078 d:\test\p1\p1_1\p_1_1_2 path:d:\test\p1\p1_1\p_1_1_2\abcde.jpg size:23078 d:\test\p2 path:d:\test\p2\abcde.jpg size:23078 Press any key to continue вроде пашет (мне нужно сначала найти все подпапки потом сортировать там файлы)
вообщем сделал так Code: typedef vector<pair<__int64,string> > viListImage; typedef pair<__int64,string> piListimage;// размер и имя .... bool ptr_less_size(const piListimage& lhs, const piListimage& rhs) { return lhs.first < rhs.first; } bool ptr_less_name(const piListimage& lhs, const piListimage& rhs) { return rhs.second.compare(lhs.second)+1; //compare возращает -1 0 1 } .... sort(viLstImg->begin(),viLstImg->end(),&ptr_less_size); .... sort(viLstImg->begin(),viLstImg->end(),&ptr_less_name); сортиврока по размеру и имени вроде работает..
Здравствуйте, я первый раз на этом замечательном сайте и меня интересует следующий вопрос: Если сервер посылает/принимает данные через startinf.hStdInput=startinf.hStdOutput = startinf.hStdError = socket; То как принимать данные клиентом? Я пытался через баальшуйщий буффер: char l_buf [4096]; ... recv(socket, l_buf, 4096); ... Но передовалась только одна строка. Тогда я пытался сделать так: ... char buff_in [128] ... while (true) {recv(socket, buff_in,128); if (buff_in == etalon_void_buffer) break;//etalon buffer -- eto //ZeroMemory(etalon_void_buffer,128); printf (buff_in); ZeroMemory(buff_in,128); } scanf(%s,buff_out); send(socket, buff_out, 128); ... Но так почему-то не выполняется сканф и посылка. В приведённом коде могут быть орфографические/синтаксические ошибки, не обращайте внимания, в настоящим их точно нет. Помогите пожалуйста рашить мою проблему.
Вот это у тебя получается безконечный цикл. Ты в ифе сравниваешь два адреса которые всегда не равны, и поэтому break никада не выполнится... Чтобы избежать этой проблемы можно либо передавать какуюто завершающую последовательность символов (чтобы получающая сторона знала что это последние передаваемые данные) либо передавать вначале размер данных а потом сами данные чтобы получающая сторона знала сколько их принять Кстати я тоже тут впервые
Ну вот смотри... Допустим тебе нужно переслать строку: Hello World. Ты считаешь сколько символов в строке. Умножаешь это количество на то сколько места занимает 1 символ. (char занимает 1 байт). И результат пересылаешь через сокет принимающей стороне. А после этого шлёшь уже и саму строку. Принимающая сторона теперь знает - "щас мне придёт 12 байт информации" и начинает принимать данные до тех пор пока не примет все 12 байт Например если ты будешь запрашивать какуюнить вебстраничку тебе в ответ придёт чтонибудь такое HTTP/1.x 200 OK Cache-Control: private Content-Type: text/html; charset=UTF-8 Content-Encoding: gzip Server: gws Content-Length: 2200 Date: Thu, 22 Nov 2007 18:07:06 GMT и после этого сама страничка. Где поле Content-Length: 2200 покажет сколько эта страничка занимает места, т.е. какое количество информации программа которая её принимает должна принять. Хоть и без рисунков но помоему подробней уже некуда
Эт то я понял, для меня остаётся тайной то , как подсчитать кол-во символов в массиве чаров, не используя всякие Mfc , Vcl и другие. ПС: а форум не позволяет писать с капсом, круто.
зацикливание происходит. делай так: Code: char buff_in [128] int len; for(;;) { len=recv(socket, buff_in,127); if(len == -1) break; buff_in[len]='\0'; printf("%s",buff_in ); } но это сработает ток есле сервер закроет соединение после отправки данных. в противном случае ты должен знать длинну данных которые тебе нужно получить
Как вывести определенное значение из реестра? Т.е. есть ветка и ключ Build Нужно вывести значение этого ключа. Я использовал RegQueryValueExA, но он не хочет работать Code: HKEY hKey; DWORD Err; DWORD type = REG_SZ; char v[80] = " "; unsigned long buf; char err; //.............// if((RegQueryValueExA(hKey, "Build", NULL, &type, (unsigned char *)v, &buf))==ERROR_SUCCESS) { MessageBoxA(0,v,"Good!",0); } else { MessageBoxA(0, "error", "error", MB_OK); } P.S. RegOpenKeyExA работает нормуль...
Вроде всё должно норм работать... Вместо &type поставь 0. P.S. MessageBox`ы это не айс. Ставь breakpoint`ы и запускай по F8.
Не рабит... Два брейка поставил =) Даже если убрать месаджбоксы, то действие все рано переносится на else {/*...*/} Проверил: RegQueryValueExA выдает значение 6
criz Бывает компилятор глючит, и не происходит обещенного, я очень часто такое замечаю на Builder C++ // Попробуй переписать в более простой, а не компактный варимант!!!
нет, не актуально и я даже могу объяснить почему. компилятор при транслировании цикла while(1) может поставить (скорее всего так и будет) проверку на равенство еденице условия цикла, то есть что 1==1, а это лишние инструкции. Получится код вида mov ecx, 1 / cmp ecx, 1 / jz XXX А for(; { .. } всегда транслируется в безусловный jmp Хотя это, вообщем-то, особенности компилятора, на других компиляторах (а я имел в виду MS VC++) мб и не так
Есть ли такая возможность в C++ Builder 6 ? : При размещении элемента на форме он растягивается\двигается с определенным шагом, иногда этого шага не достаточно для тонкой работы. Можно ли его уменьшить?
Да я уж и незнаю как его переписать... Может причина в отсутствии прав на редактирование реестра? Тогда почему RegOpenKeyExA сработал....