Страница: 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
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #107
Добавлено: 29.03.05 22:06
2cresta: хм..я думаю, ты ошибаешься.
(char*)&buff
Почему (char*)? Это указание функции, что её будет передан указатель типа char
Почему &buff?
Вместо указателя передаем адрес, под которым есть наш байтовый массив.
Не знаю, почему так пашет MessageBox, как показал Sharp, но все другие функции, что я знаю (например, сетевые), так не пашут...
Номер ответа: 108
Автор ответа:
DaSharm
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
Автор ответа:
cresta
Вопросов: 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
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #112
Добавлено: 30.03.05 01:23
Кого сохранить в файл? Хэндл??? Зачем? Он имеет силу только пока программа работает!!! Это всего лишь число, не более того. А пока работает программа, твоя переменная, в которой записано это число, содержит этот хэндл. Зачем его в файл, за что?
Если был некий человек(объект), и при жизни его паспорт(хэндл) спрятали в сундук(файл), а после смерти вынули его паспорт - что, человек оживет? ))
Номер ответа: 113
Автор ответа:
Sharp
Лидер форума
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
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #114
Добавлено: 30.03.05 07:03
Такое возможно.
http://www.codenet.ru/progr/delphi/stat/regions/#a90
Номер ответа: 115
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #115
Добавлено: 30.03.05 15:17
2Sharp: хм..нужно будет Керниган, Ричи. Язык Си прочесть....Действительно не знал такого...
А разве можно передавать в АПИ ф-ции для OUT параметров &buff[0]?
Номер ответа: 116
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #116
Добавлено: 30.03.05 18:18
Номер ответа: 117
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #117
Добавлено: 30.03.05 18:39
В большую часть API, имеющих одним из параметров "строки", передается именно указатель на начало строки. А &buff[0]-это и есть указатель на начало.
Номер ответа: 118
Автор ответа:
DaSharm
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))