Board.KolibriOS.org

Official KolibriOS board
It is currently Mon May 20, 2019 1:53 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 25 posts ]  Go to page Previous 1 2
Author Message
 Post subject: Re: Delphi7 examples
PostPosted: Tue Oct 03, 2017 3:07 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
In this example the window can be moved by arrow keys and can be resized by Ctrl+arrow keys.
Used functions: SetWindowPos, GetThreadInfo, GetControlKeyState, GetKey, GetScreenSize, WaitEvent, BeginDraw, DrawWindow, DrawText, EndDraw, GetButton, ThreadTerminate.

Screenshot:
Spoiler: Show
Attachment:
17.PNG
17.PNG [ 3.82 KiB | Viewed 1220 times ]

Source:
Attachment:
{17} SetWindowPos.7z [1.07 KiB]
Downloaded 66 times


Top
   
 Post subject: Re: Delphi7 examples
PostPosted: Fri Feb 16, 2018 7:23 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
This example shows the name of process whose window is under the mouse pointer.
Note that desktop has no window therefore name will be 'IDLE' (name of special system process).
Used functions: GetPointOwner, WaitEventByTime, GetThreadInfo, GetMousePos, GetScreenSize, SetEventMask, BeginDraw, DrawWindow, DrawText, EndDraw, DrawRectangle, GetButton, ThreadTerminate.

Screenshot:
Spoiler: Show
Attachment:
18.PNG
18.PNG [ 1.76 KiB | Viewed 1160 times ]

Source:
Attachment:


Top
   
 Post subject: Re: Delphi7 examples
PostPosted: Sun Sep 09, 2018 2:27 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
Как насчет перевести свои наработки с пиратки на официально бесплатную Делфи Токио Стартер/Коммьюнити?

Это бы было правильно для отрытой Оси

Возможно, у тебя лично и купленная Д7, но для новичков желателен лицензионно чистый софт, особенно для стран развитого капитализма


Top
   
 Post subject: Re: Delphi7 examples
PostPosted: Mon Sep 10, 2018 11:15 am 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Siemargl wrote:
с пиратки на официально бесплатную
:lol: вся суть!

Возможно, у тебя лично и пиратка, но никто никого не заставляет ничего пиратить.

А в чём, собственно, принципиальная проблема переноса?
У меня просто нет Tokyo, чтобы проверить.

И, кстати, FreePascal ещё есть.
Lode Runner собран им http://websvn.kolibrios.org/listing.php ... d8f767cc2a
Правда, ещё нужна RTL http://websvn.kolibrios.org/listing.php ... 6668893f98


Top
   
 Post subject: Re: Delphi7 examples
PostPosted: Tue Sep 11, 2018 12:38 am 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
0CodErr wrote:
Siemargl wrote:
с пиратки на официально бесплатную
:lol: вся суть!

Возможно, у тебя лично и пиратка, но никто никого не заставляет ничего пиратить.
Те ты предлагаешь нубам купить Про за 1000$ ?
Чтобы просто иметь возможность использовать Паскаль для Колибри.
0CodErr wrote:
А в чём, собственно, принципиальная проблема переноса?
У меня просто нет Tokyo, чтобы проверить.
Дык зарегистрируйся и скачай.
https://www.embarcadero.com/products/delphi/starter
0CodErr wrote:

И, кстати, FreePascal ещё есть.
Lode Runner собран им http://websvn.kolibrios.org/listing.php ... d8f767cc2a
Правда, ещё нужна RTL http://websvn.kolibrios.org/listing.php ... 6668893f98

Я не проверял возможность сборки этого актуальной версией FP, и считал эту ветку неживой для Колибри.
Тем более, что ты либу тоже под FP не проверяешь.


Top
   
 Post subject: Re: Delphi7 examples
PostPosted: Tue Sep 11, 2018 9:25 am 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Siemargl wrote:
Те ты предлагаешь нубам купить Про за 1000$ ?
Нубам я вообще ничего не предлагаю.
Siemargl wrote:
0CodErr wrote:
А в чём, собственно, принципиальная проблема переноса?
У меня просто нет Tokyo, чтобы проверить.
Дык зарегистрируйся и скачай.
https://www.embarcadero.com/products/delphi/starter
Ты на вопрос так и не ответил. Простой перекомпиляции недостаточно? Что конкретно вызывает проблемы?
Siemargl wrote:
0CodErr wrote:
И, кстати, FreePascal ещё есть.
Lode Runner собран им http://websvn.kolibrios.org/listing.php ... d8f767cc2a
Правда, ещё нужна RTL http://websvn.kolibrios.org/listing.php ... 6668893f98

Я не проверял возможность сборки этого актуальной версией FP, и считал эту ветку неживой для Колибри.
Тем более, что ты либу тоже под FP не проверяешь.
А стоило бы. Товарищ //DG говорил, что версия 3.0 стала более совместимой, а в версии 2.4.4 были проблемы.


Top
   
 Post subject: Re: Delphi7 examples
PostPosted: Wed Sep 12, 2018 11:21 am 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
0CodErr wrote:
Ты на вопрос так и не ответил. Простой перекомпиляции недостаточно? Что конкретно вызывает проблемы?
У меня нет Дельфи СЕ и нет легальной возможности ее получить, т.к. уже зарегистрирован CBuilder Starter, а и то и то одновременно на халяву не положено.
0CodErr wrote:
Siemargl wrote:
Я не проверял возможность сборки этого актуальной версией FP, и считал эту ветку неживой для Колибри.
Тем более, что ты либу тоже под FP не проверяешь.
А стоило бы. Товарищ //DG говорил, что версия 3.0 стала более совместимой, а в версии 2.4.4 были проблемы.

Я не нашел упоминаний от //DG, что там вообще были за проблемы.

В принципе, можно попробовать оживить FP, но его перспективы быть третьим кросс-компилятором, который никто не поддерживает...


Top
   
 Post subject: Re: Delphi7 examples
PostPosted: Thu Sep 13, 2018 9:02 am 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Siemargl wrote:
У меня нет Дельфи СЕ и нет легальной возможности ее получить
Зачем же ты тогда предлагал что-то перенести? Может оно и так работает? Пока ещё никто о проблемах не писал(кроме тебя, но сам ты даже и не пробовал).
Siemargl wrote:
Я не нашел упоминаний от //DG, что там вообще были за проблемы.
Этот диалог был в ЛС:
0CodErr wrote:
Кое-что у FPC работает не так, как в Delphi, например, для GetScreenSize пришлось немного извратиться, в то время как Delphi кладёт результат в eax, как и положено:
на FP
Spoiler: Show
Code:
Function GetScreenSize: SIZE;
Asm
        mov      ecx, eax
        push   ebx
        mov    eax, 61
        mov    ebx, 1
        int    64
        pop    ebx
        mov    dword[ecx], eax
End;
на Delphi
Spoiler: Show
Code:
Function GetScreenSize(): SIZE;
Asm
        push   ebx
        mov    eax, 61
        mov    ebx, 1
        int    64
        pop    ebx
End;
Так что, не всё можно просто так взять и перенести.
//DG wrote:
Кстати, по поводу разницы между Д и ФП - не могу с тобой согласиться. Сделал тест, все так же - структура передана через регистр:

Code:
  TMyRec = record
    a: word;
    b: word;
  end;

//  function MyProc(): TMyRec;
//  begin
//    Result.a := 1;
//    Result.b := 2;
//  end;

{$ASMMODE   intel}
function MyProc(): TMyRec; assembler;
asm
   mov eax,10102020h
end;

procedure TMyApplication.DoRun;
var
  ErrorMsg: String;
  a:tmyrec;
begin
  a := MyProc();

0CodErr wrote:
Code:
//////////////////////////////////////////
 Type
  SIZE = Record height, width : Word End;
////////////////////////////////////////// 
  Scr : SIZE;
//////////////////////////////////////////
Scr := GetScreenSize;
//////////////////////////////////////////
Function GetScreenSize: SIZE;
Asm
        mov      ecx, eax
        push   ebx
        mov    eax, 61
        mov    ebx, 1
        int    64
        pop    ebx
        mov    dword[ecx], eax
End;
в результате так
Code:
      sub   esp,4
      lea   eax,[ebp-4]
      call   NEAR TEST_GETSCREENSIZE$$SIZE
      mov   eax,dword [ebp-4]
      mov   dword [U_TEST_SCR],eax 

На всякий случай, это был Free Pascal Compiler version 2.4.4 [2011/04/23] for i386
Copyright (c) 1993-2010 by Florian Klaempfl

Так что, если ещё и от версий зависит... слишком много будет conditional define'ов.
//DG wrote:
Я скорее думаю, это от опций компилирования зависит.
//DG wrote:
Твой пример у меня в 3,0,0 также через регистр возвращает.
//DG wrote:
А режим компиляции(точнее, синтаксиса)-то какой?
0CodErr wrote:
//DG wrote:
А режим компиляции(точнее, синтаксиса)-то какой?
Я специально его не указывал, но вот из документации:
Quote:
This mode is selected by the $MODE FPC switch. On the command line, this means that you
none of the other compatibility mode switches. It is the default mode of the compiler (-Mfpc).
Значит был режим FPC.
//DG wrote:
Quote:
Значит был режим FPC.

Вот и я про то же, раз не указывал, то беретс fpc. А он и не должен быть совместимым с Дельфи, так что все путем. objfpc совместим, и он пересылает через регистр.
0CodErr wrote:
Попробовал {$MODE OBJFPC} и {$MODE DELPHI}, — результат тот же, значит, тогда от версии зависит наверное.
//DG wrote:
Quote:
Попробовал {$MODE OBJFPC} и {$MODE DELPHI}, — результат тот же, значит, тогда от версии зависит наверное.

Наверно, я на последней тройке пробую.


Top
   
 Post subject: Re: Delphi7 examples
PostPosted: Fri Oct 19, 2018 10:19 am 
Offline
User avatar

Joined: Tue May 08, 2007 12:44 am
Posts: 346
Siemargl wrote:
У меня нет Дельфи СЕ и нет легальной возможности ее получить, т.к. уже зарегистрирован CBuilder Starter, а и то и то одновременно на халяву не положено

В состав C++Builder эпохи Borland входил dcc32 (иногда даже бо́льшей версии, чем в соответствующей версии Delphi) и исходники RTL/VCL на Delphi. У Embarcadero уже не так?

_________________
Разработчик языка программирования Кантор


Top
   
 Post subject: Re: Delphi7 examples
PostPosted: Wed Oct 24, 2018 9:27 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
KolibriOS.lib issues:
  • Code:
    GetMAC(Device: Byte): Dword
    actually mac 6 bytes, Dword — only 4 bytes
  • Code:
    GetSentBytes(Device: Byte): Integer;
    actually int64 instead of Integer
  • Code:
    GetReceivedBytes(Device: Byte): Integer;
    actually int64 instead of Integer
  • Code:
    DrawWindow(Left, Top, Right, Bottom
    should be Width, Height instead of Right, Bottom
  • Code:
    DrawButton(Left, Top, Right, Bottom
    the same as DrawWindow
  • need to add RenameFile
  • need to add key code and scan code constants
  • may be it need to a bit change in a definition of TThreadInfo structure, i suggest instead of
    Code:
         Name:         Packed Array[0..10] Of Char;
         reserved2:    Byte;
    use this
    Code:
         Name:         Packed Array[0..11] Of Char;
    and of course reserved2 field must be always set to zero by kernel
  • Blitebx is not saved, need to add "push ebx \ pop ebx"
  • DrawImageExesi, edi is not saved, need to add "push esi; push edi \ pop edi; pop esi"


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 25 posts ]  Go to page Previous 1 2

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited