http://forum.delphimaster.net/cgi-bin/forum.pl?id=1581416095&n=10

Приложение под Win 10 64 бит


RusSun ©   (11.02.20 13:14

Всем привет! Вопрос кто-нибудь пробовал kol -64.
Пробовал запустить приложение написанное в win 7, 64 разрядная.
Но у меня обычная delphi lite компилит 32. Но в семерке запускается.
Здесь же картина была маслом. Скопировал и запуска нет.
Нет ругани и нет сообщении об ошибках. Просто не запускается.
Я так понимаю читает, видит что "скопилировано" под 32 и ничего.
Запуск под Админом не помогает. Единственное, что не пробовал в режиме совместимости с Xp не запускал.
Была тема 2014 года
http://forum.delphimaster.net/cgi-bin/forum.pl?id=1393397144&n=10
Второй момент люди пишут кто как ...
Кто-то пишет что всё запускается, но мне кажется что у них десятка 32 битная.
(О, может я ошибся)
Другие пишут что ничего из 32 битного запускаться не должно по определению)
Третий что только часть 32 ого не будет запускаться.
Напишите свой опыт.
Сейчас 2020 что есть нового? :)


Dimaxx ©   (11.02.20 23:24[1]

В дельфе не баловался, баловался в ФПЦ. Все запускалось, работало. Правда в свое время пришлось перелопатить чуток КОЛ64. 32-битное в 64-битной системе должно нормально запускаться и работать, кроме дров, ессно.


RusSun ©   (13.02.20 12:07[2]

to Dimaxx

> Правда в свое время пришлось перелопатить чуток КОЛ64.

Можете поделиться?


Dimaxx ©   (13.02.20 13:17[3]

Выслал на почту из анкеты.


митя   (12.03.20 22:45[4]


> Можете поделиться?


Гость   (13.03.20 07:03[5]


> Правда в свое время пришлось перелопатить чуток КОЛ64.

А можно бросить на паблик?


Dimaxx ©   (16.03.20 10:33[6]

https://yadi.sk/d/STT5LByJP0uRLg


Гость   (18.03.20 12:57[7]

Dimaxx ,
Спасибо огромное! Думаю многие будут благодарны. Еще раз, спасибо.


RusSun ©   (20.03.20 08:35[8]

https://youtu.be/JeBjjTtvOb8


DKOL   (22.03.20 13:40[9]

На свне лежит версия совместимая с х64


RusSun ©   (25.03.20 21:29[10]

Тест математики KOL64:
program Project1;
uses
Windows,KOL;
{$R *.res}
function _gcvt(value: double; digits: integer; buffer: PAnsiChar): PAnsiChar; cdecl; external 'msvcrt.dll';
type
PForm1 = ^TForm1;
TForm1 = object(TObj)
  Form: PControl;
  Label1: PControl;
  //==========Сложение==============
  GroupBox_Plus: PControl;
  //~~~~~~~~~~~~~~~~~~~~~
  Int_Button: PControl;
  Int_Btn64: PControl;
  Double_Btn: PControl;
  Extended_Btn: PControl;
  Double_Btn_Dimaxx: PControl;
  Real_Btn: PControl;
  //========Вычитание===============
  GroupBox_Minus: PControl;
  //~~~~~~~~~~~~~~~~~~~~~~~
  Int_ButtonM: PControl;
  Int_Btn64M: PControl;
  Double_BtnM: PControl;
  Extended_BtnM: PControl;
  Double_Btn_DimaxxM: PControl;
  Real_BtnM: PControl;
   //=======Умножение================
  GroupBox_Umnoj: PControl;
  //~~~~~~~~~~~~~~~~~~~~~~
  Int_ButtonU: PControl;
  Int_Btn64U: PControl;
  Double_BtnU: PControl;
  Extended_BtnU: PControl;
  Double_Btn_DimaxxU: PControl;
  Real_BtnU: PControl;
  //=======Деление================
  GroupBox_Delenie: PControl;
  //~~~~~~~~~~~~~~~~~~~~~~~~~
  Int_ButtonD: PControl;
  Int_Btn64D: PControl;
  Double_BtnD: PControl;
  Extended_BtnD: PControl;
  Double_Btn_DimaxxD: PControl;
  Real_BtnD: PControl;
public
end;

var
Form1: PForm1;

function Dim_Double2Str(D: double): KOLString;//String // Dimaxx
var Buf: array[0..1023]  of AnsiChar;//of Char;
begin
_gcvt(D,15,@Buf[0]);
Result:=Buf;
end;
//======Сложение==========================================================
procedure clickInt_Button(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Integer;
begin
a:=100;
b:=200;
Form1.Label1.Caption:='Some result Integer '+Int2Str(a+b);
end;

procedure clickInt_Btn64(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Int64;
begin
a:=100;
b:=200;
Form1.Label1.Caption:='Some result Int64 '+Int2Str(a+b);
end;

procedure clickDouble_Btn(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Double;
begin
a:=99.75;
b:=199.25;

Form1.Label1.Caption:='Some result Double '+Double2Str(a+b);
end;

procedure clickExtended_Btn(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Extended;
begin
a:=99.75;
b:=199.25;

Form1.Label1.Caption:='Some result Extended '+Extended2Str(a+b);
end;

procedure clickDouble_Btn_Dimaxx(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Double;
begin
a:=99.75;
b:=199.25;

Form1.Label1.Caption:='Some result Double '+Dim_Double2Str(a+b)+' Dimaxx tested';
end;

procedure clickReal_Btn(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Real;
begin
a:=99.75;
b:=199.25;

Form1.Label1.Caption:='Some result Real '+Double2Str(a+b);
end;

//=====Вычитание============================================================
procedure clickInt_ButtonM(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Integer;
begin
a:=200;
b:=100;
Form1.Label1.Caption:='Some result Integer '+Int2Str(a-b);
end;

procedure clickInt_Btn64M(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Int64;
begin
a:=200;
b:=100;
Form1.Label1.Caption:='Some result Int64 '+Int2Str(a-b);
end;

procedure clickDouble_BtnM(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Double;
begin
a:=199.75;
b:=99.25;

Form1.Label1.Caption:='Some result Double '+Double2Str(a-b);
end;

procedure clickExtended_BtnM(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Extended;
begin
a:=199.75;
b:=99.25;

Form1.Label1.Caption:='Some result Extended '+Extended2Str(a-b);
end;

procedure clickDouble_Btn_DimaxxM(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Double;
begin
a:=199.75;
b:=99.25;

Form1.Label1.Caption:='Some result Double '+Dim_Double2Str(a-b)+' Dimaxx tested';
end;

procedure clickReal_BtnM(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Real;
begin
a:=199.75;
b:=99.25;

Form1.Label1.Caption:='Some result Real '+Double2Str(a-b);
end;

//====Умножение==============================================================
procedure clickInt_ButtonU(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Integer;
begin
a:=2;
b:=10;
Form1.Label1.Caption:='Some result Integer '+Int2Str(a*b);
end;

procedure clickInt_Btn64U(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Int64;
begin
a:=2;
b:=10;
Form1.Label1.Caption:='Some result Int64 '+Int2Str(a*b);
end;

procedure clickDouble_BtnU(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Double;
begin
a:=1.5;
b:=2.0;

Form1.Label1.Caption:='Some result Double '+Double2Str(a*b);
end;

procedure clickExtended_BtnU(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Extended;
begin
a:=1.5;
b:=2.0;

Form1.Label1.Caption:='Some result Extended '+Extended2Str(a*b);
end;

procedure clickDouble_Btn_DimaxxU(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Double;
begin
a:=1.5;
b:=2.0;

Form1.Label1.Caption:='Some result Double '+Dim_Double2Str(a*b)+' Dimaxx tested';
end;

procedure clickReal_BtnU(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Real;
begin
a:=1.5;
b:=2.0;

Form1.Label1.Caption:='Some result Real '+Double2Str(a*b);
end;
//===Деление====================================
procedure clickInt_ButtonD(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Integer;
begin
a:=20;
b:=2;
Form1.Label1.Caption:='Some result Integer '+Int2Str(a div b);
end;

procedure clickInt_Btn64D(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Int64;
begin
a:=20;
b:=2;
Form1.Label1.Caption:='Some result Int64 '+Int2Str(a div b);
end;

procedure clickDouble_BtnD(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Double;
begin
a:=7.0;
b:=2.0;

Form1.Label1.Caption:='Some result Double '+Double2Str(a/b);
end;

procedure clickExtended_BtnD(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Extended;
begin
a:=7.0;
b:=2.0;

Form1.Label1.Caption:='Some result Extended '+Extended2Str(a/b);
end;

procedure clickDouble_Btn_DimaxxD(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Double;
begin
a:=7.0;
b:=2.0;

Form1.Label1.Caption:='Some result Double '+Dim_Double2Str(a/b)+' Dimaxx tested';
end;

procedure clickReal_BtnD(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
var a,b:Real;
begin
a:=7.0;
b:=2.0;

Form1.Label1.Caption:='Some result Real '+Double2Str(a/b);
end;

//==Main Form==//
//Продолжение в следующем сообщении


RusSun ©   (25.03.20 21:29[11]

procedure NewForm1(var Result: PForm1; AParent: PControl);
begin
New(Result, Create);
with Result^ do
begin
  Form := NewForm(AParent, 'Тест математики KOL64').SetClientSize( 632, 550 ).CenterOnParent;
  Form.Add2AutoFree(Result);
  Form.Color:= clActiveBorder;
  Applet := Form;
  Label1 := NewLabel( form, 'Значение ' ).SetPosition( 15, 15 ).SetSize( 300, 0 );
  //GroupBox_Plus// Операции сложения
    GroupBox_Plus:= NewGroupBox(Form, ' Операции сложения в KOL64 test ' ).SetSize(300,200).PlaceUnder;
  //Label1.Color:=clBlue; for test length
  Int_Button:=NewButton(GroupBox_Plus,' Кнопка Int 100 + 200 ')^.SetSize(180,25).PlaceUnder;//.CenterOnParent;
  Int_Btn64:=NewButton(GroupBox_Plus,' Кнопка Int64 100 + 200 ')^.SetSize(180,25).PlaceUnder;

  Double_Btn:=NewButton(GroupBox_Plus,' Кнопка Double 99.75 + 199.25')^.SetSize(220,25).PlaceUnder;
  Extended_Btn:=NewButton(GroupBox_Plus,' Кнопка Extended 99.75 + 199.25')^.SetSize(240,25).PlaceUnder;
  //Dimaxx
  Double_Btn_Dimaxx:=NewButton(GroupBox_Plus,' Кнопка Double 99.75 + 199.25 by Dimaxx ')^.SetSize(290,25).PlaceUnder;
  Real_Btn:=NewButton(GroupBox_Plus,' Кнопка Real 99.75 + 199.25')^.SetSize(200,25).PlaceUnder;

  //Для работы Плюс =======================================================
  Int_Button.OnClick:=TonEvent(MakeMethod(nil,@clickInt_Button));
  Int_Btn64.OnClick:=TonEvent(MakeMethod(nil,@clickInt_Btn64));

  Double_Btn.OnClick:=TonEvent(MakeMethod(nil,@clickDouble_Btn));
  Extended_Btn.OnClick:=TonEvent(MakeMethod(nil,@clickExtended_Btn));

  //Dimaxx test
  Double_Btn_Dimaxx.OnClick:=TonEvent(MakeMethod(nil,@clickDouble_Btn_Dimaxx));
  Real_Btn.OnClick:=TonEvent(MakeMethod(nil,@clickReal_Btn));
   //========================================================================
  //GroupBox_Umnoj //Операция умножения
  GroupBox_Umnoj:= NewGroupBox(Form, ' Операции умножения в KOL64 test ' ).SetSize(300,200).PlaceRight;

  Int_ButtonU:=NewButton(GroupBox_Umnoj,' Кнопка Int 2 * 10 ')^.SetSize(180,25).PlaceUnder;//.CenterOnParent;
  Int_Btn64U:=NewButton(GroupBox_Umnoj,' Кнопка Int64 2 * 10 ')^.SetSize(180,25).PlaceUnder;

  Double_BtnU:=NewButton(GroupBox_Umnoj,' Кнопка Double 1.5 * 2.0 ')^.SetSize(220,25).PlaceUnder;
  Extended_BtnU:=NewButton(GroupBox_Umnoj,' Кнопка Extended 1.5 * 2.0 ')^.SetSize(240,25).PlaceUnder;
  //Dimaxx
  Double_Btn_DimaxxU:=NewButton(GroupBox_Umnoj,' Кнопка Double 1.5 * 2.0 by Dimaxx ')^.SetSize(290,25).PlaceUnder;
  Real_BtnU:=NewButton(GroupBox_Umnoj,' Кнопка Real 1.5 * 2.0')^.SetSize(200,25).PlaceUnder;

  //Для работы умножения ======================================================
  Int_ButtonU.OnClick:=TonEvent(MakeMethod(nil,@clickInt_ButtonU));
  Int_Btn64U.OnClick:=TonEvent(MakeMethod(nil,@clickInt_Btn64U));

  Double_BtnU.OnClick:=TonEvent(MakeMethod(nil,@clickDouble_BtnU));
  Extended_BtnU.OnClick:=TonEvent(MakeMethod(nil,@clickExtended_BtnU));

  //Dimaxx test
  Double_Btn_DimaxxU.OnClick:=TonEvent(MakeMethod(nil,@clickDouble_Btn_DimaxxU));
  Real_BtnU.OnClick:=TonEvent(MakeMethod(nil,@clickReal_BtnU));
  //==========================================================================
  //GroupBox_Minus// Операции вычитания
  GroupBox_Minus:= NewGroupBox(Form, ' Операции вычитания в KOL64 test ' ).SetSize(300,200).PlaceDown;
  GroupBox_Minus.Left:=GroupBox_Minus.Left+12;

  Int_ButtonM:=NewButton(GroupBox_Minus,' Кнопка Int 200 - 100 ')^.SetSize(180,25).PlaceUnder;//.CenterOnParent;
  Int_Btn64M:=NewButton(GroupBox_Minus,' Кнопка Int64 200 - 100 ')^.SetSize(180,25).PlaceUnder;

  Double_BtnM:=NewButton(GroupBox_Minus,' Кнопка Double 199.75 - 99.25')^.SetSize(220,25).PlaceUnder;
  Extended_BtnM:=NewButton(GroupBox_Minus,' Кнопка Extended 199.75 - 99.25')^.SetSize(240,25).PlaceUnder;
  //Dimaxx
  Double_Btn_DimaxxM:=NewButton(GroupBox_Minus,' Кнопка Double 199.75 - 99.25 by Dimaxx ')^.SetSize(290,25).PlaceUnder;
  Real_BtnM:=NewButton(GroupBox_Minus,' Кнопка Real 199.75 - 199.25')^.SetSize(200,25).PlaceUnder;

  //Для работы Минус ======================================================
  Int_ButtonM.OnClick:=TonEvent(MakeMethod(nil,@clickInt_ButtonM));
  Int_Btn64M.OnClick:=TonEvent(MakeMethod(nil,@clickInt_Btn64M));

  Double_BtnM.OnClick:=TonEvent(MakeMethod(nil,@clickDouble_BtnM));
  Extended_BtnM.OnClick:=TonEvent(MakeMethod(nil,@clickExtended_BtnM));

  //Dimaxx test
  Double_Btn_DimaxxM.OnClick:=TonEvent(MakeMethod(nil,@clickDouble_Btn_DimaxxM));
  Real_BtnM.OnClick:=TonEvent(MakeMethod(nil,@clickReal_BtnM));
  //========================================================================
  //GroupBox_Delenie //Операция Деления
  GroupBox_Delenie:= NewGroupBox(Form, ' Операции деления в KOL64 test ' ).SetSize(300,200).PlaceRight;

  Int_ButtonD:=NewButton(GroupBox_Delenie,' Кнопка Int 20 div 2 ')^.SetSize(180,25).PlaceUnder;//.CenterOnParent;
  Int_Btn64D:=NewButton(GroupBox_Delenie,' Кнопка Int64 20 div 2 ')^.SetSize(180,25).PlaceUnder;

  Double_BtnD:=NewButton(GroupBox_Delenie,' Кнопка Double 7.0 / 2.0 ')^.SetSize(220,25).PlaceUnder;
  Extended_BtnD:=NewButton(GroupBox_Delenie,' Кнопка Extended 7.0 / 2.0 ')^.SetSize(240,25).PlaceUnder;
  //Dimaxx
  Double_Btn_DimaxxD:=NewButton(GroupBox_Delenie,' Кнопка Double 7.0 / 2.0 by Dimaxx ')^.SetSize(290,25).PlaceUnder;
  Real_BtnD:=NewButton(GroupBox_Delenie,' Кнопка Real 7.0 / 2.0')^.SetSize(200,25).PlaceUnder;

  //Для работы Деления =====================================================
  Int_ButtonD.OnClick:=TonEvent(MakeMethod(nil,@clickInt_ButtonD));
  Int_Btn64D.OnClick:=TonEvent(MakeMethod(nil,@clickInt_Btn64D));

  Double_BtnD.OnClick:=TonEvent(MakeMethod(nil,@clickDouble_BtnD));
  Extended_BtnD.OnClick:=TonEvent(MakeMethod(nil,@clickExtended_BtnD));

  //Dimaxx test
  Double_Btn_DimaxxD.OnClick:=TonEvent(MakeMethod(nil,@clickDouble_Btn_DimaxxD));
  Real_BtnD.OnClick:=TonEvent(MakeMethod(nil,@clickReal_BtnD));
end;
end;

begin
NewForm1(Form1, nil);
Run(Form1.Form);
end.


QAZ ©   (13.05.20 20:13[12]

нифига не понял что у тебя там не запускается
1) любая типичная х32 прога работает без проблем в х64 винде 10
2) использовать говносборки делфи аля "лайт" так себе идея...
3) прежде чем кидаться в сторону х64 для начала перейди на уникод, а потом избавься от асамблерных вставок х32, чтоб разгребать по очереди, а не все сразу


RusSun ©   (15.05.20 20:41[13]

Доброго времени суток.
to QAZ


> 1) любая типичная х32 прога работает без проблем в х64 винде
> 10

На момент создания темы мне это не было известно.

Верно. Поэтому и возник вопрос.
У меня не было под рукой 10ки чтобы тестировать. Я решил, что 7ки будет достаточно.
Раз в 7ке запускалось, работало без ошибок, как и должно и Решил что в 10ке тоже будет работать.
Кстати. В целом посмотрел, почему не запускалось, но это целый блок.
У меня есть приложение 1 ) ранняя версия без редактирования настроек. Которое работает в 10ке. ->Вспомнил, так как показывал знакомому приложение ( у него 10ка).

Затем я добавил в приложение ->1) +редактирование настроек. И уже его запускал у другого пользователя 10ки. И второе приложение уже никак не реагировало на пуск.

Теперь нужно отловить, что же именно даёт, сей эффект в 10ке.


2) использовать говносборки делфи аля "лайт" так себе идея...


Что Вы имеете ввиду под ?  -> "говносборки делфи"
  |-> Несколько предложении не нужно сильно углубляться в подробности.

3) прежде чем кидаться в сторону х64 для начала перейди на уникод, а потом избавься от асамблерных вставок х32, чтоб разгребать по очереди, а не все сразу


"избавься от асамблерных вставок х32" -> Можно небольшой пример так сказать - "Для расширения кругозора".


QAZ ©   (16.05.20 14:29[14]

первейшие проблемы это права доступа в самой винде, куда ты пытаешься писать\читать
или соответственно их принудительное ограничение банальными песочницами антивирусов например
или отсутствием чего-то в винде (чистилки реестра и прочая "оптимизация") без проверки оного

> Что Вы имеете ввиду под ?

в природе не существует никаких "delphi lite" это все говносборки с торрентиков, что там урезано, добавлено, заменено и "оптимизировано" не всегда известно даже авторам

> Можно небольшой пример так сказать

ты просто не используешь функции на х32 асамблере и все, заменяя паскалевскими аналогами, для кола это как минимум директива PAS_VERSION


http://forum.delphimaster.net/cgi-bin/forum.pl?id=1581416095&n=10