-
Можно ли для компиляции под WinCE на ARMv6 использовать версии КОЛа новее 2.80.3? Если да, то как?
-
2) дурацкая проблема - указываю {$DEFINE UNICODE_CTRLS}, но KOLString и KOLChar ансишные. Как использовать юникод?
PS если бы не древний навигатор, к делфи не вернулся бы
-
кол не умеет работать с широкими строками при преобразовании из 8-байтного числа. До сих пор через жопу i64 и int64. GlobalMemoryStatus валится, т.к. у меня 16 гигов озу... Короче, нахрен этот ваш кол, делфи, лазаря и прочее! Остаётся попытать счастья с с++ или забрасывать навигатор вообще
-
1. Yes, that is possible with the "unofficial" 3.22 version for 32/64 bit on the kolmck.net website. What you need to do is build an arm crosscompiler make all crossall crossinstal BINUTILSPREFIX=<prefix of your arm windows binutils> OS_TARGET=wince CPU_TARGET=armel
I don't know if mck would work, but plain KOL without mck produces working wince executables.
2. You misunderstood: when UNICODE_CTRLS is selected, kolstring is a unicodestring or widestring depending on the Delphi version. kolstring is an alias to the native string type, NOT Ansi, bit either Ansi or Unicode.
3. I do not fully understand that question, sorry, try to explain simpler.
-
sorry, should be CPU_TARGET=ARMV6 in your case
-
> ... Короче, нахрен этот ваш кол, делфи, лазаря и прочее!
Не руби с плеча. Время. Время расставит всё на свои места. Если надо сделай перерыв. Сорри, если посчитают за офф тор.
-
Thaddy, thanks, I'll try. lazarus-1.4.0-fpc-2.6.4-cross-arm-wince-win32.exe not support CPU_TARGET=ARMV6, max - v4. RusSun, после C# и VS Lazarus выглядит невероятно убогим. Как в Блокноте код пишу :( -- Возможно вопрос решится позже... GlobalMemoryStatus(m);
m.dwTotalPhys; возвращает беззнаковое целое 4 байта, эквивалентное Cardinal или LongWord. 1) Как его преобразовать в строку? 2) как конвертировать i64 в int64 и обратно?
-
отвечаю сам себе: type
UInt64 = QWord; UInt32 = LongWord;
MemoryStatusEx = packed record
Length: UInt32;
MemoryLoad: UInt32;
TotalPhys: UInt64;
AvailPhys: UInt64;
TotalPageFile: UInt64;
AvailPageFile: UInt64;
TotalVirtual: UInt64;
AvailVirtual: UInt64;
AvailExtendedVirtual: UInt64;
end;
function GlobalMemoryStatusEx(var Buffer: MemoryStatusEx): Boolean; stdcall; external kernel32 name 'GlobalMemoryStatusEx';
var
j: Double;
m: MemoryStatusEx;
begin
FillChar(m, SizeOf(MemoryStatusEx), 0);
m.Length := SizeOf(MemoryStatusEx);
GlobalMemoryStatusEx(m);
j := m.TotalPhys/1024/1024/1024; а вот с преобразованием Int64_tStr проблемы - писать много и на практически забытом языке. Позже сделаю. Наверное...
-
напомните пожалуйста что делать с: kol.pas(644,64) Fatal: Невозможно найти модуль RichEdit, используемый в KOL. ? версия неофициальная 3.22, ошибка появилась вроде как сама по себе
-
как загрузить bitmap? В демках используются функции, которых я не нашёл в версии 2.88СЕ
-
ага, это кол косячит, битмап берёт какой-то левый, а не свой
-
Try to build lazarus trunk with FPC 3.0.1 or higher (Trunk). 2.6.4 isn't maintained anymore. The unofficial KOL 3.22 that also supports 64 bit works also for WINCE provided you specify -dUNICODE_CTRLS and -dNOT_USE_RICHEDIT and provided you compile with any FPC higher than 2.6.4.
WINCE doesn't support a richedit control, so you can't use it.
-
After you build a more recent version of FPC and Lazarus, which support more arm processors try this:
program bm;
uses
Kol, bm1 in 'bm1.pas';
begin
NewForm1( Form1, nil);
Run(Form1.form);
end.
unit bm1;
interface
uses
Windows, Messages, Kol;
const
cps:KolString = 'Kol project in ' + 'Freepascal ''Delphi ' +
'64 bits ''32 bits ' +
'Unicode''Ansi';
type
PForm1=^TForm1;
TForm1=object(Tobj)
Form:pControl;
BM:PBitmap;
Menu:PMenu;
public
procedure DoMenu(sender:PMenu;Index:Integer);
procedure DoPaint(sender:PControl;DC:HDC);
end;
procedure NewForm1( var Result: PForm1; AParent: PControl );
var
Form1:pForm1;
implementation
procedure NewForm1( var Result: PForm1; AParent: PControl );
begin
New(Result,Create);
with Result^ do
begin
Form:= NewForm(AParent,cps);
Applet:=Form;
Form.Add2AutoFree(Result);
Menu := NewMenu(Form,0,['&File','(','&Open','-','E&xit',')'],DoMenu);
BM := NewBitmap(0,0);
Form.Add2AutoFree(BM);
Form.OnPaint := DoPaint;
end;
end;
procedure TForm1.DoMenu(sender: PMenu; Index: Integer);
begin
case index of
1: with NewOpenSaveDialog('Open Bitmap','',[OSFileMustExist])^ do
try
Form.BeginUpdate;
Filter := 'Bitmap files|*.bmp';
if execute then
begin
BM.Clear;
BM.LoadFromFile(Filename);
end;
finally
free;
Form.EndUpdate;
Form.Invalidate;
end;
3: Applet.Close;
else
;
end;
end;
procedure TForm1.DoPaint(sender: PControl; DC: HDC);
begin
BM.Draw(DC,0,0);
end;
end.
-
Feel free to adapt cps constant to include arm ;)
-
I am sorry, KOL needs some more fixing. I Forgot to make kernel32 equal coredll.dll' and fix some declarations in KOL_FPC'. I have that ready and put a cleaned up version online in a few hours.
|