I've finally made my project work, but I have one last problem. As this problem isn't related to 7z.so, I decided to make new thread for it.
I don't know, if it's Lazarus fault or Linux Mint fault. My time zone is UTC+3. But GetTimeZoneOffset reports -3. This causes following problem - LocalTimeToUniversal is reversed. For example current time is 20:00, UTC should be 17:00, but DateTimeToStr(LocatTimeToUniversal(Now)) reports 23:00. I.e. it adds 3 instead of subtracting it. I need to save time in UTC, but there is 6 hours difference due to this problem. Time zone is set correctly and time is shown correctly in system tray too, but every time I relog to Windows - there is the same 6 hours difference, that suggests, that something is wrong with TZ on Linux. Time is UTC in BIOS, but Linux Mint calculates UTC incorrectly, when it updates time via NTP, so it sets BIOS time incorrectly and Windows shows it incorrectly too, while it's not corrected via NTP.
What can be wrong? Can I fix it somehow? Or I should use crutch and replace LocalTimeToUniversal with UniversalTimeToLocal? LocalTimeToUniversal works correctly on Windows.