Delphi7 examples

High-level languages programming questions
  • 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 11355 times
    Source:
  • Как насчет перевести свои наработки с пиратки на официально бесплатную Делфи Токио Стартер/Коммьюнити?

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

    Возможно, у тебя лично и купленная Д7, но для новичков желателен лицензионно чистый софт, особенно для стран развитого капитализма
  • Siemargl wrote:с пиратки на официально бесплатную
    :lol: вся суть!

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

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

    И, кстати, FreePascal ещё есть.
    Lode Runner собран им http://websvn.kolibrios.org/listing.php ... d8f767cc2a
    Правда, ещё нужна RTL http://websvn.kolibrios.org/listing.php ... 6668893f98
  • 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 не проверяешь.
  • 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 были проблемы.
  • 0CodErr wrote:Ты на вопрос так и не ответил. Простой перекомпиляции недостаточно? Что конкретно вызывает проблемы?
    У меня нет Дельфи СЕ и нет легальной возможности ее получить, т.к. уже зарегистрирован CBuilder Starter, а и то и то одновременно на халяву не положено.
    0CodErr wrote:
    Siemargl wrote:Я не проверял возможность сборки этого актуальной версией FP, и считал эту ветку неживой для Колибри.
    Тем более, что ты либу тоже под FP не проверяешь.
    А стоило бы. Товарищ //DG говорил, что версия 3.0 стала более совместимой, а в версии 2.4.4 были проблемы.
    Я не нашел упоминаний от //DG, что там вообще были за проблемы.

    В принципе, можно попробовать оживить FP, но его перспективы быть третьим кросс-компилятором, который никто не поддерживает...
  • 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}, — результат тот же, значит, тогда от версии зависит наверное.
    Наверно, я на последней тройке пробую.
  • Siemargl wrote:У меня нет Дельфи СЕ и нет легальной возможности ее получить, т.к. уже зарегистрирован CBuilder Starter, а и то и то одновременно на халяву не положено
    В состав C++Builder эпохи Borland входил dcc32 (иногда даже бо́льшей версии, чем в соответствующей версии Delphi) и исходники RTL/VCL на Delphi. У Embarcadero уже не так?
  • 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"
  • У меня все идет успешно, до 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. Странно, он говорит что формат не тот.
  • Эта тема уже 2 года не обновлялась. Сейчас все примеры перенесены на Delphi SDK и компилируются другим набором инструментов.
  • Разные примеры на сайте Turbo Pascal Developer Network
    http://tpdn.ru/files/130/

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

    Users browsing this forum: No registered users and 3 guests