Страница: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Вопрос: C++ vs Basic | Добавлено: 21.03.05 18:24 |
Автор вопроса: ![]() |
Ответы | Всего ответов: 127 |
Номер ответа: 106 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 71 Ответов: 321 |
Профиль | Цитата | #106 | Добавлено: 29.03.05 22:04 |
ЛЮДИ!!!! Не бросайте в трудный момент.
Как файлы переслать по сеткеееее! На VB,C++, или .bat файле - один фиг. |
Номер ответа: 107 Автор ответа: ![]() ![]() ICQ: 780477 Вопросов: 72 Ответов: 1297 |
Web-сайт: Профиль | Цитата | #107 | Добавлено: 29.03.05 22:06 |
2cresta: хм..я думаю, ты ошибаешься.
(char*)&buff Почему (char*)? Это указание функции, что её будет передан указатель типа char Почему &buff? Вместо указателя передаем адрес, под которым есть наш байтовый массив. Не знаю, почему так пашет MessageBox, как показал Sharp, но все другие функции, что я знаю (например, сетевые), так не пашут... |
Номер ответа: 108 Автор ответа: ![]() ![]() ICQ: 780477 Вопросов: 72 Ответов: 1297 |
Web-сайт: Профиль | Цитата | #108 | Добавлено: 29.03.05 22:08 |
стандартной функццией копирования, но путь указывть сетевой (тум типа //klient/C:/ или что-то такое) |
Номер ответа: 109 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 71 Ответов: 321 |
Профиль | Цитата | #109 | Добавлено: 29.03.05 22:14 |
Ну и (на досуге) вопрос который большей ногой уходит в С++.
Вот я выделяю области с CreateRoundRectRgn,CreateEllipticRgn, потом CombineRgn иполучаю некий ID чего-то там, где-то там в оперативке. Как мене получить это самое "что-то". (или CombineRgn возвращает адрес данных, тогда какой они длины?) |
Номер ответа: 110 Автор ответа: ![]() ![]() ![]() Вопросов: 117 Ответов: 1538 |
Профиль | Цитата | #110 | Добавлено: 29.03.05 23:14 |
Вообще-то первые две ф-ции возвращают хэндл созданного региона, а третья - тип региона, который был создан из двух. Никакого "чего-то там, где-то там в оперативке" нет. Есть тип получившегося региона:
NULLREGION The region is empty SIMPLEREGION The region is a single rectangle. COMPLEXREGION The region is more than a single rectangle. ERROR No region is created. Вот что ты имеешь И плюс хэндл результирующего региона, он передаётся первым параметром CombineRgn. Т.е. ты сначала создаёшь регионы (три штуки). Первый у тебя соединит в себе два остальных. Т.е. он типа пустого шаблона, в который поместится результат комбинирования функцией CombineRgn. |
Номер ответа: 111 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 71 Ответов: 321 |
Профиль | Цитата | #111 | Добавлено: 30.03.05 00:49 |
Ландо. Мне бы достать его значение, сохранить в файле, а потом, когда-нибудь загрузить. "Чтобы не было мучительно больно от бесцельно потраченного процессорного времени." Такое возможно?
Этот хэндл ведь на что-то указывает.(или означает) |
Номер ответа: 112 Автор ответа: ![]() ![]() ![]() Вопросов: 117 Ответов: 1538 |
Профиль | Цитата | #112 | Добавлено: 30.03.05 01:23 |
Кого сохранить в файл? Хэндл??? Зачем? Он имеет силу только пока программа работает!!! Это всего лишь число, не более того. А пока работает программа, твоя переменная, в которой записано это число, содержит этот хэндл. Зачем его в файл, за что?
Если был некий человек(объект), и при жизни его паспорт(хэндл) спрятали в сундук(файл), а после смерти вынули его паспорт - что, человек оживет? ![]() |
Номер ответа: 113 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Лидер форума ICQ: 216865379 Вопросов: 106 Ответов: 9979 |
Web-сайт: Профиль | Цитата | #113 | Добавлено: 30.03.05 02:03 |
у тебя теоретически правильно? Что-то не верю...
MessageBox должна принимать УКЗАТЕЛЬ (ну, или адрес) на массив. А ты что передал? Указатель? Нет. Адрес? Нет... Почему работает я даже и не знаю... Может ты скажешь почему? Гыгыгы. Я мог бы в третий раз послать в детсад, но раз ты такой упорный, приведу тебе цитату из K&R, самые азы Керниган, Ричи. Язык Си http://www.softera.ru/literature.shtml?topic=cplus&book=6&page=5.txt Очевидно существует очень тесное соответствие между ин-
дексацией и арифметикой указателей. в действительности ком- пилятор преобразует ссылку на массив в указатель на начало массива. В результате этого имя массива является указатель- ным выражением. Отсюда вытекает несколько весьма полезных следствий. Так как имя массива является синонимом местополо- жения его нулевого элемента, то присваивание PA=&A[0] можно записать как PA = A Еще более удивительным, по крайней мере на первый взг- ляд, кажется тот факт, что ссылку на A можно записать в виде *(A+I). При анализировании выражения A в языке "C" оно немедленно преобразуется к виду *(A+I); эти две формы совершенно эквивалентны. Если применить операцию & к обеим частям такого соотношения эквивалентности, то мы получим, что &A и A+I тоже идентичны: A+I - адрес I-го элемента от начала A. С другой стороны, если PA является указателем, то в выражениях его можно использовать с индексом: PA иден- тично *(PA+I). Короче, любое выражение, включающее массивы и индексы, может быть записано через указатели и смещения и наоборот, причем даже в одном и том же утверждении. Более того, твое выражение (char *)&buff содерижит как минимум 2 несерьезные ошибки: если ты используешь & в применении к массиву во избежание проблем при чтении должен указывать индекс начала массива, т.е. 0, а во-вторых, поскольку массив имеет тип char явный каст совершенно лишний, т.е. должно быть &buff[0] |
Номер ответа: 114 Автор ответа: ![]() ![]() ![]() Вопросов: 0 Ответов: 1876 ![]() |
Профиль | Цитата | #114 | Добавлено: 30.03.05 07:03 |
Ландо. Мне бы достать его значение, сохранить в файле, а потом, когда-нибудь загрузить. "Чтобы не было мучительно больно от бесцельно потраченного процессорного времени." Такое возможно?
Такое возможно. http://www.codenet.ru/progr/delphi/stat/regions/#a90 |
Номер ответа: 115 Автор ответа: ![]() ![]() ICQ: 780477 Вопросов: 72 Ответов: 1297 |
Web-сайт: Профиль | Цитата | #115 | Добавлено: 30.03.05 15:17 |
2Sharp: хм..нужно будет Керниган, Ричи. Язык Си прочесть....Действительно не знал такого...
А разве можно передавать в АПИ ф-ции для OUT параметров &buff[0]? |
Номер ответа: 116 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Лидер форума ICQ: 216865379 Вопросов: 106 Ответов: 9979 |
Web-сайт: Профиль | Цитата | #116 | Добавлено: 30.03.05 18:18 |
А разве можно передавать в АПИ ф-ции для OUT параметров &buff[0]? Ае! DaSharm признался, что он неправ! Если ты передаешь адрес начала строки в функцию, что ей помешает (ну кроме невыделенного участка памяти в нужной ей) сделать туда OUT?
|
Номер ответа: 117 Автор ответа: ![]() ![]() ![]() Вопросов: 117 Ответов: 1538 |
Профиль | Цитата | #117 | Добавлено: 30.03.05 18:39 |
В большую часть API, имеющих одним из параметров "строки", передается именно указатель на начало строки. А &buff[0]-это и есть указатель на начало. |
Номер ответа: 118 Автор ответа: ![]() ![]() ICQ: 780477 Вопросов: 72 Ответов: 1297 |
Web-сайт: Профиль | Цитата | #118 | Добавлено: 30.03.05 23:05 |
и &buff это &buff[0]...вот блин...надо такое ![]() |
Номер ответа: 119 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 71 Ответов: 321 |
Профиль | Цитата | #119 | Добавлено: 31.03.05 18:54 |
Кто-нить переводил когда-нить с Delphi на Microsoftский язык? или мне инсталлить Delphi(опять распихает по всему компу свои папки) создавать длл, или это можно перевести?
procedure SaveRegion (FileName: string); var s: TStream; size: cardinal; data: pointer; begin s := TFileStream.Create (FileName, fmCreate); try size := GetRegionData (fRgn, SizeOf (RGNDATA), nil); data := GlobalAllocPtr(GPTR, size); try GetRegionData(fRgn, size, data); s.Write(data^, size); finally GlobalFreePtr(data); end; finally s.Free; end; end; |
Номер ответа: 120 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 71 Ответов: 321 |
Профиль | Цитата | #120 | Добавлено: 31.03.05 18:59 |
Впрочем если даже на вб переводить проблема только в SizeOf(может быть подойдет и LenB) и data: pointer(==> Write(data^, size)) |
|