Вызов функций внешней dll из випа
Модераторы: m0p3e, edward_K, Модераторы
Вызов функций внешней dll из випа
Проверял в Express - работает и с атлантис 5.4.14 и без (свободный
fpc196).
http://sites.google.com/site/svobodnyef ... es/cube.7z
в архиве - вип исходник, его сборка user.res (атлантис 5.4.23) и dll (fpc196).
fpc196).
http://sites.google.com/site/svobodnyef ... es/cube.7z
в архиве - вип исходник, его сборка user.res (атлантис 5.4.23) и dll (fpc196).
Последний раз редактировалось sensoft 19 июл 2011, 14:54, всего редактировалось 1 раз.
Re: Вызов функций внешней dll из випа
Ну ты крут! Поставил плюсик. Понравилось! Не знал что так можно. Только вот описание скудное, к тому же собрано на старом Атлантисе (пришлось перекомпилировать). Для тем кому качать и компилить влом, приведу код (удивительно короткий), надеюсь автор не будет против
Результат - игруха (бухи оценят )):
Ну тут скорее топик о другом, вызов функции dll сам по себе ничем не примечателен. Приведи если не жаль код cube.dll, расскажи как отрисовку сделал, как картинки вставил. Отрисовка ведь из библиотеки идет напрямую в Галактику, т.е. это не ActiveX контрол пользовательский. Как меняется заголовок окна интерфейса. Вот это самое интересное.
Код: Выделить всё
const
cmC000=3000;cmC001=3001;cmC002=3002;cmC003=3003;cmC004=3004;cmC005=3005;cmC006=3006;cmC007=3007;cmC008=3008;cmC009=3009;cmC010=3010;cmC011=3011;cmC012=3012;cmC013=3013;cmC014=3014;cmC015=3015;cmC016=3016;cmC017=3017;cmC018=3018;cmC019=3019;
cmC020=3020;cmC021=3021;cmC022=3022;cmC023=3023;cmC024=3024;cmC025=3025;cmC026=3026;cmC027=3027;cmC028=3028;cmC029=3029;cmC030=3030;cmC031=3031;cmC032=3032;cmC033=3033;cmC034=3034;cmC035=3035;cmC036=3036;cmC037=3037;cmC038=3038;cmC039=3039;
cmC040=3040;cmC041=3041;cmC042=3042;cmC043=3043;cmC044=3044;cmC045=3045;cmC046=3046;cmC047=3047;cmC048=3048;cmC049=3049;cmC050=3050;cmC051=3051;cmC052=3052;cmC053=3053;cmC054=3054;cmC055=3055;cmC056=3056;cmC057=3057;cmC058=3058;cmC059=3059;
cmC060=3060;cmC061=3061;cmC062=3062;cmC063=3063;cmC064=3064;cmC065=3065;cmC066=3066;cmC067=3067;cmC068=3068;cmC069=3069;cmC070=3070;cmC071=3071;cmC072=3072;cmC073=3073;cmC074=3074;cmC075=3075;cmC076=3076;cmC077=3077;cmC078=3078;cmC079=3079;
cmC080=3080;cmC081=3081;cmC082=3082;cmC083=3083;cmC084=3084;cmC085=3085;cmC086=3086;cmC087=3087;cmC088=3088;cmC089=3089;cmC090=3090;cmC091=3091;cmC092=3092;cmC093=3093;cmC094=3094;cmC095=3095;cmC096=3096;cmC097=3097;cmC098=3098;cmC099=3099;
cmC100=3100;cmC101=3101;cmC102=3102;cmC103=3103;cmC104=3104;cmC105=3105;cmC106=3106;cmC107=3107;cmC108=3108;cmC109=3109;cmC110=3110;cmC111=3111;cmC112=3112;cmC113=3113;cmC114=3114;cmC115=3115;cmC116=3116;cmC117=3117;cmC118=3118;cmC119=3119;
cmC120=3120;cmC121=3121;cmC122=3122;cmC123=3123;cmC124=3124;cmC125=3125;cmC126=3126;cmC127=3127;cmC128=3128;cmC129=3129;cmC130=3130;cmC131=3131;cmC132=3132;cmC133=3133;cmC134=3134;cmC135=3135;cmC136=3136;cmC137=3137;cmC138=3138;cmC139=3139;
cmC140=3140;cmC141=3141;cmC142=3142;cmC143=3143;cmC144=3144;cmC145=3145;cmC146=3146;cmC147=3147;cmC148=3148;cmC149=3149;cmC150=3150;cmC151=3151;cmC152=3152;cmC153=3153;cmC154=3154;cmC155=3155;cmC156=3156;cmC157=3157;cmC158=3158;cmC159=3159;
cmC160=3160;cmC161=3161;cmC162=3162;cmC163=3163;cmC164=3164;cmC165=3165;cmC166=3166;cmC167=3167;cmC168=3168;cmC169=3169;cmC170=3170;cmC171=3171;cmC172=3172;cmC173=3173;cmC174=3174;cmC175=3175;cmC176=3176;cmC177=3177;cmC178=3178;cmC179=3179;
cmC180=3180;cmC181=3181;cmC182=3182;cmC183=3183;cmC184=3184;cmC185=3185;cmC186=3186;cmC187=3187;cmC188=3188;cmC189=3189;cmC190=3190;cmC191=3191;cmC192=3192;cmC193=3193;cmC194=3194;cmC195=3195;cmC196=3196;cmC197=3197;cmC198=3198;cmC199=3199;
cmC200=3200;cmC201=3201;cmC202=3202;cmC203=3203;cmC204=3204;cmC205=3205;cmC206=3206;cmC207=3207;cmC208=3208;cmC209=3209;cmC210=3210;cmC211=3211;cmC212=3212;cmC213=3213;cmC214=3214;cmC215=3215;cmC216=3216;cmC217=3217;cmC218=3218;cmC219=3219;
cmC220=3220;cmC221=3221;cmC222=3222;cmC223=3223;cmC224=3224;cmC225=3225;cmC226=3226;cmC227=3227;cmC228=3228;cmC229=3229;cmC230=3230;cmC231=3231;cmC232=3232;cmC233=3233;cmC234=3234;cmC235=3235;cmC236=3236;cmC237=3237;cmC238=3238;cmC239=3239;
cmC240=3240;cmC241=3241;cmC242=3242;cmC243=3243;cmC244=3244;cmC245=3245;cmC246=3246;cmC247=3247;cmC248=3248;cmC249=3249;cmC250=3250;cmC251=3251;cmC252=3252;cmC253=3253;cmC254=3254;cmC255=3255;cmC256=3256;cmC257=3257;cmC258=3258;cmC259=3259;
cmC260=3260;cmC261=3261;cmC262=3262;cmC263=3263;cmC264=3264;cmC265=3265;cmC266=3266;cmC267=3267;cmC268=3268;cmC269=3269;cmC270=3270;cmC271=3271;cmC272=3272;cmC273=3273;cmC274=3274;cmC275=3275;cmC276=3276;cmC277=3277;cmC278=3278;cmC279=3279;
cmC280=3280;cmC281=3281;cmC282=3282;cmC283=3283;cmC284=3284;cmC285=3285;cmC286=3286;cmC287=3287;cmC288=3288;cmC289=3289;cmC290=3290;cmC291=3291;cmC292=3292;cmC293=3293;cmC294=3294;cmC295=3295;cmC296=3296;cmC297=3297;cmC298=3298;cmC299=3299;
cmQQQQ=3300;cmGame=3301;
cmBEST=3400;cmG001=3401;cmG002=3402;cmG003=3403;cmG004=3404;
end;
var
o:byte;
score1,score2:word;
function TuneCube:byte; external 'cube.dll';
procedure FindCube(o:byte);external 'cube.dll';
procedure NewCube(o:byte); external 'cube.dll';
procedure DrawCube(o:byte);external 'cube.dll';
procedure BackCube(o:byte);external 'cube.dll';
procedure DelCube(o:byte); external 'cube.dll';
procedure DoneCube(o:byte);external 'cube.dll';
procedure SetCube(o:byte,n:byte); external 'cube.dll';
procedure BestCube(o:byte);external 'cube.dll';
Interface Cube 'CUBES' ('Построй свой полигон :)',,scInterface) EscClose, Cyan;
Show at (0,0,104,32);
TabbedSheet SysTabCube;
Screen scrCube1 ' Игра ';
Buttons
cmC000;cmC001;cmC002;cmC003;cmC004;cmC005;cmC006;cmC007;cmC008;cmC009;cmC010;cmC011;cmC012;cmC013;cmC014;cmC015;cmC016;cmC017;cmC018;cmC019;
cmC020;cmC021;cmC022;cmC023;cmC024;cmC025;cmC026;cmC027;cmC028;cmC029;cmC030;cmC031;cmC032;cmC033;cmC034;cmC035;cmC036;cmC037;cmC038;cmC039;
cmC040;cmC041;cmC042;cmC043;cmC044;cmC045;cmC046;cmC047;cmC048;cmC049;cmC050;cmC051;cmC052;cmC053;cmC054;cmC055;cmC056;cmC057;cmC058;cmC059;
cmC060;cmC061;cmC062;cmC063;cmC064;cmC065;cmC066;cmC067;cmC068;cmC069;cmC070;cmC071;cmC072;cmC073;cmC074;cmC075;cmC076;cmC077;cmC078;cmC079;
cmC080;cmC081;cmC082;cmC083;cmC084;cmC085;cmC086;cmC087;cmC088;cmC089;cmC090;cmC091;cmC092;cmC093;cmC094;cmC095;cmC096;cmC097;cmC098;cmC099;
cmC100;cmC101;cmC102;cmC103;cmC104;cmC105;cmC106;cmC107;cmC108;cmC109;cmC110;cmC111;cmC112;cmC113;cmC114;cmC115;cmC116;cmC117;cmC118;cmC119;
cmC120;cmC121;cmC122;cmC123;cmC124;cmC125;cmC126;cmC127;cmC128;cmC129;cmC130;cmC131;cmC132;cmC133;cmC134;cmC135;cmC136;cmC137;cmC138;cmC139;
cmC140;cmC141;cmC142;cmC143;cmC144;cmC145;cmC146;cmC147;cmC148;cmC149;cmC150;cmC151;cmC152;cmC153;cmC154;cmC155;cmC156;cmC157;cmC158;cmC159;
cmC160;cmC161;cmC162;cmC163;cmC164;cmC165;cmC166;cmC167;cmC168;cmC169;cmC170;cmC171;cmC172;cmC173;cmC174;cmC175;cmC176;cmC177;cmC178;cmC179;
cmC180;cmC181;cmC182;cmC183;cmC184;cmC185;cmC186;cmC187;cmC188;cmC189;cmC190;cmC191;cmC192;cmC193;cmC194;cmC195;cmC196;cmC197;cmC198;cmC199;
cmC200;cmC201;cmC202;cmC203;cmC204;cmC205;cmC206;cmC207;cmC208;cmC209;cmC210;cmC211;cmC212;cmC213;cmC214;cmC215;cmC216;cmC217;cmC218;cmC219;
cmC220;cmC221;cmC222;cmC223;cmC224;cmC225;cmC226;cmC227;cmC228;cmC229;cmC230;cmC231;cmC232;cmC233;cmC234;cmC235;cmC236;cmC237;cmC238;cmC239;
cmC240;cmC241;cmC242;cmC243;cmC244;cmC245;cmC246;cmC247;cmC248;cmC249;cmC250;cmC251;cmC252;cmC253;cmC254;cmC255;cmC256;cmC257;cmC258;cmC259;
cmC260;cmC261;cmC262;cmC263;cmC264;cmC265;cmC266;cmC267;cmC268;cmC269;cmC270;cmC271;cmC272;cmC273;cmC274;cmC275;cmC276;cmC277;cmC278;cmC279;
cmC280;cmC281;cmC282;cmC283;cmC284;cmC285;cmC286;cmC287;cmC288;cmC289;cmC290;cmC291;cmC292;cmC293;cmC294;cmC295;cmC296;cmC297;cmC298;cmC299;
<<
<.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.>
<.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.>
<.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.>
<.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.>
<.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.>
<.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.>
<.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.>
<.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.>
<.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.>
<.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.>
<.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.>
<.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.>
<.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.>
<.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.>
<.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.><.·.>
>>
end;
Screen scrCube2 ' и... ';
Fields
score1 : Protect;
score2 : Protect;
Buttons
cmGame;
cmG001;cmG002;cmG003;cmG004;
<<
Игра "галактический полигон" даёт шанс собрать неподетски большой результат, если в случайном нагромождении разглядеть
тонкий ход фишки:). Первыми как всегда любители комбинировать детали в поисках целого.
Коротко о правилах: полигоном назовём набор квадратов одного цвета со смежными сторонами и чем он крупнее, тем больше
за него дают, примерно число квадратов в квадрате. Понятно, что строить и собирать полигоны можно пока есть квадраты.
Поэтому максимум достигается на одном гигантском полигоне:).
<. Игра .> Двойной клик или F7 новая раскраска
Правый клик или F8 возврат раскраски предыдущего хода
Левый клик или F3 очередной ход изменения раскраски удалением полигона
Строка заголовка даёт текущий счёт, количества квадратов = синих, красных, зелёных,
жёлтых и фиолетовых, = и количество квадратов / цену текущего полигона.
Выбор раскраски с лучшим результатом (премии за последние 3, 2, 1, 0 квадраты)
1. счёт .@@@@@@ 2. счёт .@@@@@@
<.·.> <.·.>
<.·.> <.·.>
>>
end;
end;
HandleEvent
cmInit: begin o:=TuneCube; if (o=0) PutCommand(cmClose) else PutCommand(cmQQQQ); end;
cmChangeTabbedSheetFormat: if (Target=scrCube1) PutCommand(cmGame) else PutCommand(cmBEST);
cmInsert: begin NewCube(o); abort; exit; end;
cmDelete: begin BackCube(o); abort; exit; end;
cmPick: begin DelCube(o); abort; exit; end;
cmClose: begin if (o<>0) DoneCube(o); end;
cmQQQQ: begin NewCube(o); end;
cmGame: begin SetFormat(scrCube1); FindCube(o); DrawCube(o); end;
cmC000: DelCube(o);cmC001: DelCube(o);cmC002: DelCube(o);cmC003: DelCube(o);cmC004: DelCube(o);cmC005: DelCube(o);
//...
cmG001: begin SetCube(o,1); SetFormat(scrCube1); FindCube(o); DrawCube(o); end;
cmG002: begin SetCube(o,2); SetFormat(scrCube1); FindCube(o); DrawCube(o); end;
cmG003: begin SetCube(o,1); SetFormat(scrCube1); FindCube(o); DrawCube(o); end;
cmG004: begin SetCube(o,2); SetFormat(scrCube1); FindCube(o); DrawCube(o); end;
cmBEST: begin BestCube(o); end;
end;
End.
Ну тут скорее топик о другом, вызов функции dll сам по себе ничем не примечателен. Приведи если не жаль код cube.dll, расскажи как отрисовку сделал, как картинки вставил. Отрисовка ведь из библиотеки идет напрямую в Галактику, т.е. это не ActiveX контрол пользовательский. Как меняется заголовок окна интерфейса. Вот это самое интересное.
-
- Местный житель
- Сообщения: 222
- Зарегистрирован: 04 июн 2008, 14:35
- Откуда: Стерлитамак
- Контактная информация:
Re: Вызов функций внешней dll из випа
Даешь LINES на випе!!!!
Re: Вызов функций внешней dll из випа
http://sites.google.com/site/svobodnyef ... 0100517.7z
про толк в извращениях я в курсе:)
про толк в извращениях я в курсе:)
Последний раз редактировалось sensoft 19 июл 2011, 14:55, всего редактировалось 1 раз.
Re: Вызов функций внешней dll из випа
А был еще тетрис на випе от GalaxyFoe.
Re: Вызов функций внешней dll из випа
sensoft
Впечатляет! Может, пора браться за задачи посерьезнее: редфокс анвипнуть или сервер АК отучить от АК?
Впечатляет! Может, пора браться за задачи посерьезнее: редфокс анвипнуть или сервер АК отучить от АК?
Re: Вызов функций внешней dll из випа
KATZ
+1. А еще vip отучить от лицензии, иногда нужно дома поработать
+1. А еще vip отучить от лицензии, иногда нужно дома поработать
Re: Вызов функций внешней dll из випа
KATZ
интеграция с внешним оборудованием - хорошая тема, но для АК уже есть решение:)
интеграция с внешним оборудованием - хорошая тема, но для АК уже есть решение:)
Re: Вызов функций внешней dll из випа
И не одно. Но в паблик они не вышли. Впрочем, данный форум - не самое подходящее место обсуждать такие вопросы. Я же не всерьез предлагал этим заняться, а только называл как пример реально сложной задачи, успешное решение которой - высший программистский пилотаж.sensoft писал(а):для АК уже есть решение
Re: Вызов функций внешней dll из випа
Пример настолько понравился, что сделал для него ролик на YouTube
http://www.youtube.com/watch?v=0sLrlq6ti0g
http://www.youtube.com/watch?v=0sLrlq6ti0g