Перейти к содержанию
Fire Monkey от А до Я

Лидеры

Популярный контент

Показан контент с высокой репутацией 30.03.2021 во всех областях

  1. krapotkin

    Работа Listview

    самое простое (по мне лично) взять и положить на него новый объект типа крашеный прямоугольник. Свой класс объектов для listView можно создать аналогично тем, что есть в delphi, унаследовав от TDrawable https://www.youtube.com/watch?v=XRj3qjUjBlc
    1 балл
  2. Коли хвастался, значит нужно показать как это делается: Пишем такое консольное приложение: Program ownof; {$APPTYPE CONSOLE} {$R *.res} Type kernel_ulong_t = UInt64; kernel_long_t = Int64; TStat = packed record st_dev : kernel_ulong_t; st_ino : kernel_ulong_t; st_nlink : kernel_ulong_t; st_mode : UInt32; st_uid : UInt32; st_gid : UInt32; __pad0 : UInt32; st_rdev : kernel_ulong_t; st_size : kernel_long_t; st_blksize : kernel_long_t; st_blocks : kernel_long_t; st_atime : kernel_ulong_t; st_atime_nsec : kernel_ulong_t; st_mtime : kernel_ulong_t; st_mtime_nsec : kernel_ulong_t; st_ctime : kernel_ulong_t; st_ctime_nsec : kernel_ulong_t; __unused : array[0..2] of kernel_long_t; end; (* Функция mystat реализована на ассемблере. Откомпилирована в Linux и объектный файл перенесен в проект. *) function mystat(path_to_file : PAnsiChar; var S : TStat) : NativeUInt; external 'mystat.o' var S : TStat; Begin // Файл a.txt создан руками в том-же каталоге, куда помещается исполняемый // модуль данной программы. mystat('a.txt', S); Writeln('Owner is ', S.st_uid); End. Исходный код для mystat.asm: .text # function mystat(path_to_file : PAnsiChar; var S : TStat) : NativeUInt; # # Параметры: # rdi - path_to_file # rsi - @S # # Параметры функции помещаются, в те-же регистры, что и требует интерфейс системных # вызовов - не делаем ничего лишнего ! # # После выхода из режима ядра в регистре rax будет содержаться рузультат работы # системного вызова. Наша функция тоже возвращает рузультат в rax - не делаем # ничего лишнего ! .global mystat .align 16 mystat: movq $4, %rax # поместим номер системного вызова в регистр rax syscall # переходим в режим ядра ret Все данные для написания этой программы получены из исходных кодов ядра Linux 5.11.10. Данная реализация привязана к нескольким вещам: К архитектуре процессора (т.к. mystat написана на x86_64 ассемблере ) К ядру Linux (т.е. программа не будет работать на других Unix подобных ОС) К структуре с которой работает системный вызов sys_newstat (так называется, та процедура в ядре, что выполнает нужные нам действия). Способу выполнения системных вызовов (сам способ привязан к архитектуре процессора и к ядру ОС) Пока ничего из этого не поменяется всё будет ОК. И никаких Вам libc. PS: Номер системного вызова и его имя взято из файла arch/x86/entry/syscalls/syscall_64.tbl . Как делать системный вызов написано тут: arch/x86/entry/entry_64.S . Описание структуры взято из файла arch/x86/include/uapi/asm/stat.h
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...