Netspirit писал(а):
Я так подозреваю, там должно быть одинаковое поведение: есть переменная/аргумент типа string, значит он уже инициализирован как
<len><counter>#0
Переменная типа string - это 32-х битный указатель именно на текст. По смещению -4 лежит Length (длина текста), а по смещению -8 лежит RefCount (счетчик ссылок).
Если мне не изменяет мой склероз.
Да, Дельфи гарантирует терминальный нулик.
НО нулевой длины не бывает - в таком случае динамическая память под строку высвобождается, а указатель (тот самый string) становится нулевым.
И что занимательно - именно это нам и надо.
И именно по этой причине, вышеупомянутый Pchar занимается проверочками - он честно гарантирует ненулевой указатель.
То есть, нам надо, просто имеющийся уже у нас указатель - подставить в аргумент winApi.
Спрашивается, зачем нам вызов какой-то функции из модуля System... Да и еще если предварительно длину проверять (что тоже: сначала проверит указатель, и, если уж он ненулевой, то вернет поле Length, а иначе - ноль).
Полный же бред получается

Типа: "Масло бутербродное. Что в переводе означает - масло для хлеба с маслом!"
В принципе, мне даже проверять не хочется, может оно и так заработает. Это все просто беседа больше для понимания - чего там происходит на самом деле.
Так вот: для @string - не происходит НИЧЕГО. И это есть хорошо

------------ Дoбавленo в 17.08:
Кстати, код то я выложил, но я его не проверял. ВААБЩЕ.
И все равно не поспел!
Так что не судите строго, если чего
