Перейти к содержанию
Fire Monkey от А до Я

Gingercat

Пользователи
  • Постов

    111
  • Зарегистрирован

  • Посещение

  • Победитель дней

    8

Весь контент Gingercat

  1. Если все так печально, почему это все работает в пределах одной версии? И вообще - что значит невозможно? Тонны кода работают на передаче именно классов и экземпляров, а вы завляете что это не верно? Или я чего то не понимаю То есть значит: __declspec(dllexport) TBitmap* __stdcall GetBmpGdi(HDC hdc, int X, int Y, int width, int height) обращение в программе TBitmap* (__stdcall *GetBmpGdi)(HDC hdc, int X, int Y, int width, int height); неверно? вы уверены?
  2. Вы не поверите, но я возвращал из dll TBitmap, созданный на основе surface Desktop Duplication API. Причем, ошибки были именно плавающие - без закономерностей. Иногда вообще access violation вышибало - нервов потратил огого. Причем, первое обращение проходило отлично, все следующие сыпали ошибки. Вот такая оказалась несовместимость версий, хотя не было использовано ничего узкоспециального. За исключением конечно, собственно, самого Desktop Duplication API. Да и к слову: у топикстатртера, судя по CreateDXGIFactory, также работа с Directx - возможно проблема именно в этом. Там есть некоторые хитрости относительно объявлений сущностей. Visual c++ допускает просто объявление, а билдер ругается, ему нужна иннициализация типа = {}. Одним словом не дружим Builder c++ с новыми (особенно) версиями библиотек DirectxX. Но это только предположения.
  3. Возможно и бред, но все же: на днях убил больше суток на работу с dll. У меня там графика была, но не суть важно - разрабатывалось в 8, а dll в 1, ибо нужные хедеры появились только в 10. Одним словом - сыпались ошибки и при обращении и при выгрузке, пока не додумался просто проект перенести в 10-ку, все проблемы как рукой сняло. Попробуйте сменить версию среды разработки. Со всем уважением, но зависит (возможно в теории нет) но практике да, в частности при работе с WinApi.
  4. То, что завлекуха - понятно, но ведь раньше и этого не было. Пересмотрели политику - так глядишь стартер версия в будущем дополнится функционалом. P.S. хоть баги общие, а то в Appmethod свои персональные были, теперь общие
  5. Доброго дня. На всякий случай - видимо серьезно поменялась политика, или маркетологи, не суть - C++Builder® 10.1 Berlin Starter Edition бесплатно) Единственное - от непомерной жадности нашей (как я подозреваю) при попытке зайти с любого браузера (даже через прокси), редиректит, и добавить товар в корзину невозможно. У меня получилось через Tor. Пришло на почту письмо с лицензией - одним словом, все как положено. Возможно - это своеобразный ответ на закрытие Appmethod. Зачем поддерживать еще один товар, если можно поступить так. Ссылка - https://www.embarcadero.com/ru/app-development-tools-store/cbuilder-starter-promotional-edition (через Tor вырезать /ru))))
  6. Доброго дня. Вспоминайте, что устанавливали. Не берусь утверждать, но некоторым программам (играм с параноидальной защитой, антивирусам) не нравится момент, когда при запуске студия обращается к рантайм-библиотекам. При этом, сборка проходит на ура, а вот запуск невозможен. И проявляется это вне зависимости от размера и наполнения проекта. Хотел вычислить что именно происходит, да духу не хватило. И кстати да - после переустановки (системы в моем случае), проблема исчезла, а потом через некоторое время появилась. А еще можно (если используете Delphi IDE Colorizer), удалить его. Он вообще тонну разных ошибок тянет за собой. По идее, антивирусы и упомянутые игры хучат системные функции (антивирусы - дабы вирус их не удалил, игры - дабы не читерили). Причем хучат не в третьем кольце (юзермод) а глубже. Список может быть внушительным - возможно тут и происходит беда, когда при запуске студия натыкается на одну из функций. Почему проходит сборка - ума не приложу, моих познаний пока маловато. P.S. прошу прощения не уточнил - это касается только Windows. P.P.S - с версией среды и системы это не связано - наблюдал на восьмерке, и на десятке, в разных версиях студии.
  7. Доброго дня. Было нечто подобное, подробностей уже и не помню, но - как собирается Dll в релизе и в дебаге? Имеется ввиду статическая или динамическая линковка. Если они разные, то при работе с динамическим рантаймом все нормально, а вот когда собираете статически - вылазит ошибка - может чего переоптимизирует, или версии рантайма отличаются. Или попробуйте, чем черт не шутит, сменить соглашения о вызове, на cdecl к примеру
  8. Поглядите вот это http://developer.android.com/guide/practices/screens_support.html
  9. Вот вы вцепились в этот xamarin. Ув. haword, есть ли у вас опыт работы с xamarin (больше хелло ворлда)?
  10. Прошу сильно не пинать, но вдруг понадобится: Вопрос к серверу IdHTTP1->Request->UserAgent= "Mozilla/5.0 (Windows NT 6.1; rv:16.0) Gecko/20100101 Firefox/16.0"; IdHTTP1->Request->Accept= "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; IdHTTP1->Request->AcceptLanguage= "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3"; IdHTTP1->Request->Connection= "keep-alive"; IdHTTP1->Request->Host= "store.steampowered.com"; TStrings* ToServer; // чего отправляем TStringStream* Response; // чего получаем ToServer = new TStringList(); Response = new TStringStream(); ToServer->Add("param=" + Edit1->Text); IdHTTP1->HandleRedirects = true; IdHTTP1->Post("http://test.ru/test.php",ToServer, Response); Memo1->Lines->Add(Response->DataString); delete Response; delete ToServer; На сервере лежит обычный PHP скрипт, для теста: <?php $param = $_REQUEST['param']; $fd = fopen("text.txt", "w"); fwrite($fd, $param); fclose($fd); echo $param; ?> Берет ваш "param", записывает в лежащий там-же текстовый файл, и возвращает. Не забыть про разрешения для файла (для PHP не критично, а вот текстовик должен иметь право на чтение и запись, в данном случае). PHP прост, и написать сверку с ключами, лежащими в текстовом файле очень просто. И еще - не до конца понял, как работает, но PHP имеет доступ 0400 - но при этом работает.
  11. "Но вот взять Microsoft, было и хорошее... " Оффтоп, но все же: под новый год письмо пришло - теперь INTUIT.RU снова предлагает доступ к регистрации DreamSpark, после прохождения теста, да еще и в придачу бесплатная регистрация разработчика в в магазине Windows. Так что... но мы не променяем бесплатные плюшки на привычную среду
  12. Также ковырял в свое время Xamarin, но так и не понял - на кой черт мне писать на шарпе, если по сути пишешь на яве - проще тогда сразу яву использовать. А про Qt - как только дело доходит до чего либо более серьезного, чем окошки с кнопками, начинаются костыли. Опять же - лично мое, сугубо субъективное мнение, основанное на уровне, достаточном для написания нескольких графических фильтров - возможно и не прав. А вот что совсем опечалило - поддержка CSS. По сути, это чертовски удобно, для тех, кто знает CSS. Ага, щас - CSS то обрезанный по самое немогу - на кой черт заявлять про поддержку). А вот цена для Rad Studio - да, кусючая. Чего бы не говорили, мол "если проект не принесет нескольких десятков тыщ уе, то на кой он нужен", для рядового пользователя, который пытается чего то сделать - неподъемно.
  13. Доброго времени суток. Навеяно постом SergeIT. Несмотря на кучу недостатков, по большей части связанных именно с с++ (удобство работы в студии, отсутствие нормального дополнения и тд), на данный момент абракадабра вне конкуренции по скорости и простоте работы. Не могу сказать про кроссплатформенность, а вот разработка под десктоп - да. Безусловно, C# под десктоп здорово, но когда критична скорость обработки - сами понимаете. Так уж сложилось, что я привязан к различным видам обработки графики. Так вот - чего бы там не говорили про оптимизацию кода (лишние вызовы в ассемблере и тд), на данный момент из коробки, быстрее всего Rad Studio. Конечно, мне далеко даже до среднего уровня с++, но все же. Работа в Visual Studio с битмапами еще тот геморой (одно заполнение структуры bitmap))) При использовании нативных! BitBlt, Dib-секций и еще множества различных способов, скорость обработки ниже, чем при использовании обертки TBitmap. Полный разбор fullHd картинки в Visual Studio занимает от 7 до 14 мс, при этом в студии 3 - 6. Проверенно тоннами тестов. Конечно, можно сказать - OpenCv. Да, пока вы решаете стандартные задачи по обработке. Как только шаг в сторону - начинаешь понимать, что проще самому писать, нежели пользоваться готовым. Ну и про Qt. Очень удобно - чтобы не говорили. Но есть несколько но: 1 - хвост библиотек (статичная сборка возможна, но там далеко не все гладко). 2 - жесточайшее навязывание своих стандартов - это уже не с а сQt. Не знаю, как дела с кроссплатформенностью - не пробовал. По скорости на посередине. При этом, использование нативных функций винды (именно без костылей) карается (понятно, кроссплатформенность). Однако, либо пользоваться bitmapom нативным (тогда какой смысл вообще в Qt, если все нужно выписывать ручками), либо... bitBlt не возможен (как и множество другого) - вырезали, остается использование довольно медленного QImage, с кучей оговорок. В Rad Studio - пожалуйте: нужно - дернул из GDI функцию, нужно - из среды, нужен кусок ассемблера - пожалуйста. Про ассемблер в Qt умолчу))) Вот и выходит, что Rad Studio на данный момент, по сути лучшая. Прошу не судить строго (далеко не профессионал в плюсах), но опыт кой какой имеется. Так что пущай развиваются))
  14. Не хочу показаться "капитаном очевидность", и да простят мну поклонники rad studio, но более хренового автодополнения я не встречал. Работает с глюками, паузами и тд. Если включить всплывающие подсказки, подвешивает студию - раздражает несказанно. Посему, единственный вариант - ctrl - пробел. Не морочьте себе голову - лучше оно не работает, и не заработает на с++, я давно смирился. При этом, работа в Delphi куда более стабильная и быстрая.
  15. Я конечно не маркетолог, но по всему выходит, что вектор развития не изменился. Как было сказано на хабре в одном из постов "нас не интересуют мелкие разработчики". Видимо, пересмотр ценообразования будет опираться на данную догму. Жаль.
  16. Спасибо, Александр. То, что нужно паковать exe - понятно, а вот про общение с серваком - темный лес, полез читать, пока моих потуг хватило только на общение с фтп, для проверки версии программы, и, если нужно - обновления)
  17. Конечно сломают, если будет хоть малейший интерес (я реально отношусь к своим способностям разработчика ), но попробовать сделать хоть что - то надо, уже закусил удила, посему не отступлю)
  18. Да, ибо она написана для использования с нетом, посему - это не важно. Nik - спасибо, погляжу. rustam_d - прошу прощения, не уточнил - это десктопное приложение)
  19. Да нет же) В том то и дело, что нужно увязать ключ пользователя с ключом на сервере. Вот тут загвоздка. На сервере пак ключей, пользователь получает один из них, программа проверяет - если есть такой, работаем. Видимо не совсем верно выразился - привязка то нужна, но только без использования пользователя. Видимо таки придется пользоваться Id оборудования, иначе не как. Только и кодировка то не нужна - пусть пары ключей будут одинаковыми, ничего не изменит. Пока я не удалю любой ключ с сервера, он будет работать у пользователя. На сервере нужно следить и метить проданные ключи, и привязку к железу. В общем пока только мысли d7d1cd - не, я не параноик, да и не стоит программа таких усилий - это скорее для себя на будущее - интересно, да и лишним не будет.
  20. Прошу прощения, но не понятно - а обязательно привязываться к логину и паролю? Если есть пак ключей, закодированных своим алгоритмом (я понимаю, что это слабое место - алгоритм раскодировки то будет внутри программы), которые и будут проверяться - разве так нельзя, или я чего то не понимаю? Не хочу привязываться к пользовательским данным - ключ себе лежит в папке программы, и иногда, случайно проверяется?
  21. Gingercat

    Блокировка программы

    Доброго времени суток, уважаемые! Сразу извиняюсь за много букв, и возможно - вопрос не совсем в тему форума. Близится завершение одного проекта, не слишком сложного, однако сожравшего много времени на разработку алгоритмов работы с графикой - не захотелось OpenCv использовать (да и логики там будь здоров). Так вот - понимаю, что не хит, но хотелось бы хоть немного защитить от школьников хакеров. Понятно что сломают, если будет интересно, но хочется. Полазив по сети, в голове образовалась каша из всяческих ключей, протекторов и тому подобное. Подумав, пришел к следующему: на сервере будет храниться список кодированных ключей. Раз в несколько дней, программа будет читать этот список, на предмет обнаружения ключа, который получит пользователь. Если такого ключа нет - все ясно - блокируем. Собственно, две непонятные вещи. 1 - алгоритм кодировки и декодировки ключа. Я понимаю, что методов куча, но может кто сталкивался - либо метод не сильно сложный, вроде не идиот, но ничего умного не нашел; либо вообще будет сказкой пример кода (пусть и на Delphi), абы только не слишком огромный. 2 - тут многие разрабатывают под мобильные, значит с интернетом на ты (я день убил на написание обновления через ftp). Требуется знать, что каждый ключ используется на одном компе. Никто ведь не мешает раздать один ключ на всех - в базе то он будет. Есть ли какая возможность (без работы на стороне сервера - я только css знаю))) отловить одновременное обращение с двух разных мест к одному ключу? Проверка по ip, как понимаю бред - а если динамический. Есть идея дописывать к ключу, к примеру номер диска, или еще чего - имеет право на жизнь подобная идея? Одно плохо - в таком случае придется менять права доступа к файлу на сервере, а мне это не нравится. Как то так Буду благодарен любым идеям, либо ткните носом, может чего еще почитать, хотя уже просто не соображаю Заранее спасибо.
  22. Не за что - у меня работало, надеюсь и вас заработает)))
  23. #pragma hdrstop #pragma argsused #include <conio.h> #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int i = 0; int n = 0; float s = 0; float x[100]; cout << "enter the size of array - " ; cin >>n; cout << "size = " << n << endl; for(i = 1; i <= n; i++) { cout << "x<" << i << "> - "; cin >> x[i]; s = s + x[i]; x[i] = s / i; } cout << "\n--- result ---\n" << endl; cout.setf(std::ios::fixed); cout.precision(3); // три знака после запятой, ибо WriteLn('|', x[i]:5:2, '|'); не совсем понимаю for(i = 1; i <= n; i++) { cout << "x<" << i << "> = "<< x[i] << endl; } getch(); return 0; } Доброго дня. Это не в коем случае не "идеальный" код, а просто перевод вашего, да и с консолью не совсем дружу))) Если нужно - оберну в проверку исключений, но сам почти никогда не пользуюсь - лучше лишний раз проверить данные при вводе, и сказать пытливому юзверю про ошибку, чем генерировать исключения)) Здесь без проверок, ибо у вас их также нет.
  24. Есть Code Block - да, это не формошлепство, но весьма достойная среда. Есть Qt - там конечно свои плюшки (это не чистые плюсы, а своей бибилиотекой), но поверьте - приложения на къют работают на андроиде в разы шустрее.
×
×
  • Создать...