Page 2 of 2

Re: Delphi7 examples

Posted: Tue Oct 03, 2017 3:07 pm
by 0CodErr
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:
17.PNG
17.PNG (3.82 KiB)
Viewed 12571 times
Source:
Downloaded 378 times

Re: Delphi7 examples

Posted: Fri Feb 16, 2018 7:23 pm
by 0CodErr
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:
18.PNG
18.PNG (1.76 KiB)
Viewed 12511 times
Source:

Re: Delphi7 examples

Posted: Sun Sep 09, 2018 2:27 pm
by Siemargl
Как насчет перевести свои наработки с пиратки на официально бесплатную Делфи Токио Стартер/Коммьюнити?

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

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

Re: Delphi7 examples

Posted: Mon Sep 10, 2018 11:15 am
by 0CodErr
Siemargl wrote:с пиратки на официально бесплатную
:lol: вся суть!

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

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

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

Re: Delphi7 examples

Posted: Tue Sep 11, 2018 12:38 am
by Siemargl
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 не проверяешь.

Re: Delphi7 examples

Posted: Tue Sep 11, 2018 9:25 am
by 0CodErr
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 были проблемы.

Re: Delphi7 examples

Posted: Wed Sep 12, 2018 11:21 am
by Siemargl
0CodErr wrote:Ты на вопрос так и не ответил. Простой перекомпиляции недостаточно? Что конкретно вызывает проблемы?
У меня нет Дельфи СЕ и нет легальной возможности ее получить, т.к. уже зарегистрирован CBuilder Starter, а и то и то одновременно на халяву не положено.
0CodErr wrote:
Siemargl wrote:Я не проверял возможность сборки этого актуальной версией FP, и считал эту ветку неживой для Колибри.
Тем более, что ты либу тоже под FP не проверяешь.
А стоило бы. Товарищ //DG говорил, что версия 3.0 стала более совместимой, а в версии 2.4.4 были проблемы.
Я не нашел упоминаний от //DG, что там вообще были за проблемы.

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

Re: Delphi7 examples

Posted: Thu Sep 13, 2018 9:02 am
by 0CodErr
Siemargl wrote:У меня нет Дельфи СЕ и нет легальной возможности ее получить
Зачем же ты тогда предлагал что-то перенести? Может оно и так работает? Пока ещё никто о проблемах не писал(кроме тебя, но сам ты даже и не пробовал).
Siemargl wrote:Я не нашел упоминаний от //DG, что там вообще были за проблемы.
Этот диалог был в ЛС:
0CodErr wrote:Кое-что у FPC работает не так, как в Delphi, например, для GetScreenSize пришлось немного извратиться, в то время как Delphi кладёт результат в eax, как и положено:
на FP
Spoiler:

Code: Select all

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:

Code: Select all

Function GetScreenSize(): SIZE;
Asm
        push   ebx
        mov    eax, 61
        mov    ebx, 1
        int    64
        pop    ebx
End;
Так что, не всё можно просто так взять и перенести.
//DG wrote:Кстати, по поводу разницы между Д и ФП - не могу с тобой согласиться. Сделал тест, все так же - структура передана через регистр:

Code: Select all

  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: Select all

//////////////////////////////////////////
 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: Select all

		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:А режим компиляции(точнее, синтаксиса)-то какой?
Я специально его не указывал, но вот из документации:
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:
Значит был режим FPC.
Вот и я про то же, раз не указывал, то беретс fpc. А он и не должен быть совместимым с Дельфи, так что все путем. objfpc совместим, и он пересылает через регистр.
0CodErr wrote:Попробовал {$MODE OBJFPC} и {$MODE DELPHI}, — результат тот же, значит, тогда от версии зависит наверное.
//DG wrote:
Попробовал {$MODE OBJFPC} и {$MODE DELPHI}, — результат тот же, значит, тогда от версии зависит наверное.
Наверно, я на последней тройке пробую.

Re: Delphi7 examples

Posted: Fri Oct 19, 2018 10:19 am
by Freeman
Siemargl wrote:У меня нет Дельфи СЕ и нет легальной возможности ее получить, т.к. уже зарегистрирован CBuilder Starter, а и то и то одновременно на халяву не положено
В состав C++Builder эпохи Borland входил dcc32 (иногда даже бо́льшей версии, чем в соответствующей версии Delphi) и исходники RTL/VCL на Delphi. У Embarcadero уже не так?

Re: Delphi7 examples

Posted: Wed Oct 24, 2018 9:27 pm
by 0CodErr
KolibriOS.lib issues:
  • Code: Select all

    GetMAC(Device: Byte): Dword
    actually mac 6 bytes, Dword — only 4 bytes
  • Code: Select all

    GetSentBytes(Device: Byte): Integer;
    actually int64 instead of Integer
  • Code: Select all

    GetReceivedBytes(Device: Byte): Integer;
    actually int64 instead of Integer
  • Code: Select all

    DrawWindow(Left, Top, Right, Bottom
    should be Width, Height instead of Right, Bottom
  • Code: Select all

    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: Select all

         Name:         Packed Array[0..10] Of Char;
         reserved2:    Byte;
    use this

    Code: Select all

         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"

Re: Delphi7 examples

Posted: Sat Nov 07, 2020 3:18 pm
by maxcodehack
У меня все идет успешно, до LD:

Code: Select all

Borland Delphi Version 15.0
Copyright (c) 1983,2002 Borland Software Corporation
Z:\media\maxim\E22406D62406AE1B\KOLIBRI\DELPHI\KolibriOS\KolibriOS.pas(626) 
Unit1.pas(62) 
690 lines, 0.02 seconds, 254 bytes code, 24 bytes data.

OMF2D 1.01 converts 32bit OMF to Delphi linkable OMF
Copyright (C) 2003 Radim Picha, www.anticracking.sk/EliCZ
Converting "Unit1.obj" to "Unit1.obj"
Microsoft (R) COFF/PE Editor Version 7.10.3052
Copyright (C) Microsoft Corporation.  All rights reserved.

Unit1.obj : warning LNK4033: converting object format from OMF to COFF

LINK : warning LNK4041: no edit options specified
ld: skipping incompatible /media/maxim/E22406D62406AE1B/KOLIBRI/DELPHI/KolibriOS/Lib/libkos.a when searching for -lkos
ld: cannot find -lkos
Я просто KolibriOS.lib в libkos.a чтобы можно было написать -lkos. Странно, он говорит что формат не тот.

Re: Delphi7 examples

Posted: Sat Dec 05, 2020 7:08 pm
by Freeman
Эта тема уже 2 года не обновлялась. Сейчас все примеры перенесены на Delphi SDK и компилируются другим набором инструментов.

Re: Delphi7 examples

Posted: Mon Dec 07, 2020 11:19 am
by Kopa
Разные примеры на сайте Turbo Pascal Developer Network
http://tpdn.ru/files/130/

P.S. Не знаю насколько они совместимы с текущим SDK для KolibriOS.