да, программа пишется на делфи.
Предлагаю с данным вопросом перейти в другую ветку, ибо тут это оффтоп 
Как можно получить полную версию программы VRI-cnc
Сообщений 31 страница 46 из 46
Поделиться312008-03-31 17:08:20
Поделиться322008-04-15 17:02:07
Роман у меня предложение. Если сделать привязку не жесткому диску а к процессору т.к. процессор не так быстро сдохнет в отличии от харда.
Да и поменять процессор на компе станке врядли кому придет в голову.
Я для своего собрал комп. а так как жесткий там стоит стары у меня на него нехорошие предчувствия надеюсь до следующей версии проги дотянет.
Поделиться332008-04-15 18:33:21
Поддерживаю "привязку не жесткому диску а к процессору"
Интересный вариант!
Поделиться342008-04-15 20:40:54
если кто в этом шарит (Делфи) кидайте код определения проца посмотрю.
Поделиться352008-04-15 21:51:07
Ну тут может быть уйма вариантов:
unit unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
Tfrm_main = class(TForm)
img_info: TImage;
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure info(s1, s2: string);
end;
var
frm_main: Tfrm_main;
gn_speed_y: Integer;
gn_text_y: Integer;
const
gn_speed_x: Integer = 8;
gn_text_x: Integer = 15;
gl_start: Boolean = True;
implementation
{$R *.DFM}
procedure Tfrm_main.FormShow(Sender: TObject);
var
_eax, _ebx, _ecx, _edx: Longword;
i: Integer;
b: Byte;
b1: Word;
s, s1, s2, s3, s_all: string;
begin
//Set the startup colour of the image
img_info.Canvas.Brush.Color := clblue;
img_info.Canvas.FillRect(rect(0, 0, img_info.Width, img_info.Height));
gn_text_y := 5; //position of the 1st text
asm //asm call to the CPUID inst.
mov eax,0 //sub. func call
db $0F,$A2 //db $0F,$A2 = CPUID instruction
mov _ebx,ebx
mov _ecx,ecx
mov _edx,edx
end;
for i := 0 to 3 do //extract vendor id
begin
b := lo(_ebx);
s := s + chr(b);
b := lo(_ecx);
s1:= s1 + chr(b);
b := lo(_edx);
s2:= s2 + chr(b);
_ebx := _ebx shr 8;
_ecx := _ecx shr 8;
_edx := _edx shr 8;
end;
info('CPU', '');
info(' - ' + 'Vendor ID: ', s + s2 + s1);
asm
mov eax,1
db $0F,$A2
mov _eax,eax
mov _ebx,ebx
mov _ecx,ecx
mov _edx,edx
end;
//06B1
//|0000| |0000 0000| |0000| |00| |00| |0110| |1011| |0001|
b := lo(_eax) and 15;
info(' - ' + 'Stepping ID: ', IntToStr(b));
b := lo(_eax) shr 4;
info(' - ' + 'Model Number: ', IntToHex(b, 1));
b := hi(_eax) and 15;
info(' - ' + 'Family Code: ', IntToStr(b));
b := hi(_eax) shr 4;
info(' - ' + 'Processor Type: ', IntToStr(b));
//31. 28. 27. 24. 23. 20. 19. 16.
// 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
b := lo((_eax shr 16)) and 15;
info(' - ' + 'Extended Model: ', IntToStr(b));
b := lo((_eax shr 20));
info(' - ' + 'Extended Family: ', IntToStr(b));
b := lo(_ebx);
info(' - ' + 'Brand ID: ', IntToStr(b));
b := hi(_ebx);
info(' - ' + 'Chunks: ', IntToStr(b));
b := lo(_ebx shr 16);
info(' - ' + 'Count: ', IntToStr(b));
b := hi(_ebx shr 16);
info(' - ' + 'APIC ID: ', IntToStr(b));
//Bit 18 =? 1 //is serial number enabled?
if (_edx and $40000) = $40000 then
info(' - ' + 'Serial Number ', 'Enabled')
else
info(' - ' + 'Serial Number ', 'Disabled');
s := IntToHex(_eax, 8);
asm //determine the serial number
mov eax,3
db $0F,$A2
mov _ecx,ecx
mov _edx,edx
end;
s1 := IntToHex(_edx, 8);
s2 := IntToHex(_ecx, 8);
Insert('-', s, 5);
Insert('-', s1, 5);
Insert('-', s2, 5);
info(' - ' + 'Serial Number: ', s + '-' + s1 + '-' + s2);
asm
mov eax,1
db $0F,$A2
mov _edx,edx
end;
info('', '');
//Bit 23 =? 1
if (_edx and $800000) = $800000 then
info('MMX ', 'Supported')
else
info('MMX ', 'Not Supported');
//Bit 24 =? 1
if (_edx and $01000000) = $01000000 then
info('FXSAVE & FXRSTOR Instructions ', 'Supported')
else
info('FXSAVE & FXRSTOR Instructions Not ', 'Supported');
//Bit 25 =? 1
if (_edx and $02000000) = $02000000 then
info('SSE ', 'Supported')
else
info('SSE ', 'Not Supported');
//Bit 26 =? 1
if (_edx and $04000000) = $04000000 then
info('SSE2 ', 'Supported')
else
info('SSE2 ', 'Not Supported');
info('', '');
asm //execute the extended CPUID inst.
mov eax,$80000000 //sub. func call
db $0F,$A2
mov _eax,eax
end;
if _eax > $80000000 then //any other sub. funct avail. ?
begin
info('Extended CPUID: ', 'Supported');
info(' - Largest Function Supported: ', IntToStr(_eax - $80000000));
asm //get brand ID
mov eax,$80000002
db $0F
db $A2
mov _eax,eax
mov _ebx,ebx
mov _ecx,ecx
mov _edx,edx
end;
s := '';
s1 := '';
s2 := '';
s3 := '';
for i := 0 to 3 do
begin
b := lo(_eax);
s3:= s3 + chr(b);
b := lo(_ebx);
s := s + chr(b);
b := lo(_ecx);
s1 := s1 + chr(b);
b := lo(_edx);
s2 := s2 + chr(b);
_eax := _eax shr 8;
_ebx := _ebx shr 8;
_ecx := _ecx shr 8;
_edx := _edx shr 8;
end;
s_all := s3 + s + s1 + s2;
asm
mov eax,$80000003
db $0F
db $A2
mov _eax,eax
mov _ebx,ebx
mov _ecx,ecx
mov _edx,edx
end;
s := '';
s1 := '';
s2 := '';
s3 := '';
for i := 0 to 3 do
begin
b := lo(_eax);
s3 := s3 + chr(b);
b := lo(_ebx);
s := s + chr(b);
b := lo(_ecx);
s1 := s1 + chr(b);
b := lo(_edx);
s2 := s2 + chr(b);
_eax := _eax shr 8;
_ebx := _ebx shr 8;
_ecx := _ecx shr 8;
_edx := _edx shr 8;
end;
s_all := s_all + s3 + s + s1 + s2;
asm
mov eax,$80000004
db $0F
db $A2
mov _eax,eax
mov _ebx,ebx
mov _ecx,ecx
mov _edx,edx
end;
s := '';
s1 := '';
s2 := '';
s3 := '';
for i := 0 to 3 do
begin
b := lo(_eax);
s3 := s3 + chr(b);
b := lo(_ebx);
s := s + chr(b);
b := lo(_ecx);
s1 := s1 + chr(b);
b := lo(_edx);
s2 := s2 + chr(b);
_eax := _eax shr 8;
_ebx := _ebx shr 8;
_ecx := _ecx shr 8;
_edx := _edx shr 8;
end;
info('Brand String: ', '');
if s2[Length(s2)] = #0 then setlength(s2, Length(s2) - 1);
info('', ' - ' + s_all + s3 + s + s1 + s2);
end
else
info(' - Extended CPUID ', 'Not Supported.');
end;
procedure Tfrm_main.info(s1, s2: string);
begin
if s1 <> '' then
begin
img_info.Canvas.Brush.Color := clblue;
img_info.Canvas.Font.Color := clyellow;
img_info.Canvas.TextOut(gn_text_x, gn_text_y, s1);
end;
if s2 <> '' then
begin
img_info.Canvas.Brush.Color := clblue;
img_info.Canvas.Font.Color := clWhite;
img_info.Canvas.TextOut(gn_text_x + img_info.Canvas.TextWidth(s1), gn_text_y, s2);
end;
Inc(gn_text_y, 13);
end;
procedure Tfrm_main.FormCreate(Sender: TObject);
begin
end;
end.Отредактировано Sheeft (2008-04-15 21:51:40)
Поделиться362008-04-16 20:03:22
спсб. попробую
Поделиться372008-05-21 14:44:11
Добрый день народ!
Можно ли контроллер Романа состыковать с Kcam?
Vri-CNC все равно куплю, но некоторые вещи можно сделать только с KCam
Поделиться382008-05-22 20:59:15
нет контроллер на ТМ5 (ТМ7) не будет работать с другими програмами кроме как с VRI-cnc
Поделиться392008-05-22 22:14:51
Роман как можно приобрести полную версию програмы.
На мыло вам писал вы не ответели.
Поделиться402008-05-24 18:09:27
у меня накрылись ВИНДЫ. потихоньку востанавливаю. писем накопилось много по мере возможности отвечаю. прошу прощения за задержку.
Поделиться412008-07-03 20:33:20
а можно комп запустить вообще без винта? только флешка?
Можно, при соблюдении ряда условий.
1. Материнская плата должна поддерживать загрузку с USB. То есть старые дохленькие компы отдыхают, глотая сопли...
2. Флэшка должна поддерживать создание на себе загрузочной информации. То есть старые дешёвые флэшки за 200-300 рублей отдыхают и глотают сопли....
Есть третий вариант, самый экономичный 
Сделать загрузочную дискетку с 98-й мастдайкой и запускать программу с неё. Но тут проблема защиты от копирования даже не встаёт. Никакой защиты попросту нет, разве что к аппаратному ключу, втыкаемому, допустим. в тот же порт принтера. Но аппаратный ключ стоит больше... Смысл теряется.
Есть и четвёртый вариант, самый продвинутый.
Поставить на плату контроллера недорогой МК с защитой прошивки от чтения (AVR, к примеру) и перенести на него часть операций с программы.
То есть на выходе с компа давать не чистые команды, а некие полуготовые или кодированные. Которые МК доделывает или декодирует и выдаёт на приводы станка.
Тогда привязка будет к прошитому МК с установленным битом защиты. Стереть прошивку - можно, прочесть - низя.
Стоимость недорогих МК семейства AVR порядка двух - трёх десятков рублей, оптом дешевле...
Тогда программа будет бесплатная, а деньги брать за этот прошитый МК, высылаемый в бандерольке. Плючы - демоверсия и рабочая программа - в одном флаконе.
Нет МК на плате контроллера - пишем ДЕМО и работаем пять минут.. Есть МК (отозвался на запрос) - работаем в полном объём.
Есть и пятый вариант, вообще красивый.
Генерировать пару ключей (открытый и закрытый), пользователь тоже самое делает. Открытый ключ автора лежит на сайте. Открытый ключ покупателя присылается автору мылом и кладётся в базу. При запуске станок лезет в инет на родной сервер и там авторизует своим ключом свой комп и получает добро.
И всё.
Если возникают сомнения в адекватности копии (каждый день с нового адреса, каждый день новый винт и новый проц) - вздыхаем, баним ключ и ждём, когда встрепенётся настоящий владелец ключа и учиняем разборку.
Ну примерно как работает Оракл с удалёнными клиентами. Или SSH-клиент с сервером.
При длине каждого ключа в пару килобайт можно до посинения подбирать ключ и сжечь электричества на этом раз в сто больше, чем программа стоит.
И не подобрать.
Если кто-то будет кричать, что его станок/комп не подключён к инету, пусть подключит к тому компу свой мобильник на пару минут для активации программы и не создаёт проблем себе и другим.
А если у кого-то ещё и мобильник без инета, то я валяюсь...
Поделиться422008-07-04 12:41:37
Ув. Ironfelix!
Вы по-моему увлеклись!!!
Вам бы для ЗАС связи ключи генерить.
Вы хоть сами представили это???
Особенно два мне понравились: 1)с компа давать не чистые команды, а некие полуготовые или кодированные. Которые МК доделывает или декодирует и выдаёт на приводы станка.
___Тогда уж давайте HASPы продавать, прошивка сама по себе слетать может, и каким образом будет в ДЕМО работать полуготовые команды???
Что Вы скажете? Это настолько заморочит программму.
и 2) Генерировать пару ключей (открытый и закрытый), Вооще ХИТ!!!
ВЫ согласитесь со мной, что программа покупается реальным человеком, с реальным местом жительства, с номером паспорта и т.д.
И в данном случае, когда Вы отправляете денежный перевод то именно паспорт как основной документ является при том же получении денежки.
Пожалста! Вот простая идея! Пришел перевод от Иванова Ивана Ивановича с номером паспорта ХХХХХХХХХ. Сгенерился ключ. ИНДИВИДУАЛЬНЫЙ!!!
Можно туда и привязку к компу сделать.
Но я Вам могу сказать следующее, что при таком раскладе, Вы никому свой ключ на сторону не загоните. Вот сядьте и подумайте, не торопитесь отвечать.
Поделиться432008-07-04 18:02:44
Ув. Ironfelix!
Вы по-моему увлеклись!!!
Вам бы для ЗАС связи ключи генерить.
Вы хоть сами представили это???
.....
Особенно два мне понравились: 1)с компа давать не чистые команды, а некие полуготовые или кодированные. Которые МК доделывает или декодирует и выдаёт на приводы станка.
___Тогда уж давайте HASPы продавать, прошивка сама по себе слетать может, и каким образом будет в ДЕМО работать полуготовые команды???
Что Вы скажете? Это настолько заморочит программму.
......и 2) Генерировать пару ключей (открытый и закрытый), Вооще ХИТ!!!
ВЫ согласитесь со мной, что программа покупается реальным человеком, с реальным местом жительства, с номером паспорта и т.д.
......
Пожалста! Вот простая идея! Пришел перевод от Иванова Ивана Ивановича с номером паспорта ХХХХХХХХХ. Сгенерился ключ. ИНДИВИДУАЛЬНЫЙ!!!
Можно туда и привязку к компу сделать.
Но я Вам могу сказать следующее, что при таком раскладе, Вы никому свой ключ на сторону не загоните. Вот сядьте и подумайте, не торопитесь отвечать.
1. Ключи можно генерировать для чего угодно.
Если Вы думаете, что процесс генерации сложен и труден, то скачайте терминалку, работающую с SSH и поглядите. как она генерирует ключи при первом запуске и сколько это занимает времени. Подсказка - время измеряется десятками секунд. А надёжность работы этой пары ключей ещё никем не опровергнута.
2. Внимательно читайте сообщения. Там описана процедура рабты ДЕМО с кодировкой через прошивку МК. Повторюсь - при отсутствии МК программа переходит в режим ДЕМО и работает без шифрования, но - пять минут.
3. Оформленные Вами с паспортом переводы дальше передаются как раз парой ключей, которые подтверждают легальность перевода. Так счто паспорт не отменяет и не заменяет ключей.
ПО Вашему примеру могу привести простой антипример6 по паспорту, прописке. переводу, человек получает программу/ключ и преспокойно перепродаёт её кому попало или просто раздаёт её даром. А если Вы попытаетесь применять санкции, человек сделает большие круглые честные глаза и скажет - измините. ЭТОТ паспорт мною утерян пять лет назад, вот справка от милиции и вот мой НАСТОЯЩИЙ паспорт. И вообще, кто вы ткие, кака программа, как е ключи? У меня и компа нет.
Вот - тоже посидите и подумайте.
Паспортов крадут/теряют/похищают немало...
Защитой паспорт является только для честного человека, а не для бесчестного.
В этом смысле пара ключей по надёжности не уступает паспортным данным.
Так что дело упирается в стоимость защиты - не будет ли она превышать стоимость программы.
Просто мне не нравится привязка к винту, учитывая нынешнюю система SMART, которая убивает винты строго по истечению времени во встроенном таймере.
Поделиться442008-07-04 18:45:53
Братцы,цена проги - две бутылки водки(в Украине).Я очень сомеваюсь,что это "бабло" хотя-бы частично ,компенсирует Роману всю эту "возню" с нами...Может это своеобразный "учёт"пользователей.Перепродал,подарил-а поинтересуйтесь-многим это надо?Вокруг меня(ОТВЕЧАЮ!) в радиусе 80км. нет ни одного такого.И на этом форуме ЕДИНИЦЫ используют её в коммерческих целях.Ну а способ защиты - тут хозяин-барин.Я специально собрал комп для этих "забав".И купил 2-ю прогу,не победнел...
Поделиться452008-07-04 19:22:48
хотел ответить но в сообщении Dj_smart все и так сказано.
хотя уточню: денег полученных за прогу хватает только на оплату инета. т.е. покупая программу вы делаете мое общение с вами (форумом) бесплатным. Спасибо!
Поделиться462008-07-13 21:14:27
прога выдала мне код 11284--32192001
Пиши Роману в личку.
Dj_smart.