169 похожих чатов

Народ, подскажите пож. в чем беда? ADeviceInfo.Name не юникодный. Уже

и UnicodeString и WideString перепробовал, но ничо не помогает. В чем беда?

17 ответов

5 просмотров

разве Name не PAnsiChar?

Alexander- Автор вопроса
Karagy
разве Name не PAnsiChar?

Да. А как его в юникоде выдать?

Alexander
Да. А как его в юникоде выдать?

Покажите объявление Name. во избежание ошибок.

Alexander- Автор вопроса
Michael Longneck
String(AnsiString(Name))?

Утечку поймаешь, в delphi напрямую не рекомендовано такое приведение.

🐾 Кирпиков Александр 🐾
Утечку поймаешь, в delphi напрямую не рекомендован...

Нет здесь утечки. Да и рекомендации такой тоже нет

Alexander
Не сдается

а что вообще происходит точно?

🐾 Кирпиков Александр 🐾
Утечку поймаешь, в delphi напрямую не рекомендован...

С чего утечка? Сделается AnsiString потом UnicodeString, по выходу из блока освободится

Viktor Akselrod 💻
Покажи

Искать надо с телефона не удобно... в описании структуры строки такое замечание есть

🐾 Кирпиков Александр 🐾
Искать надо с телефона не удобно... в описании стр...

потому что нет такой рекомендации. а такой прямой каст - это как раз способ погасит хинт, говоря о том, что ты понимаешь, что делаешь и о последствиях

Viktor Akselrod 💻
потому что нет такой рекомендации. а такой прямой ...

Beware of these Constructs You should examine the following problematic code constructs: Casts that obscure the type: AnsiString(Pointer(foo)) Review for correctness: what was intended? Suspicious casts -- generate a warning: PChar(<AnsiString var>) PAnsiChar(<UnicodeString var>) Directly constructing, manipulating, or accessing string internal structures. Some, such as AnsiString, have changed internally, so this is unsafe. Use the StringRefCount, StringCodePage, StringElementSize, and other functions to get string information.

Viktor Akselrod 💻
потому что нет такой рекомендации. а такой прямой ...

Вот еще фрагметик текста Если S изменяется на 'Something else', указатель P не будет изменён и будет продолжать указывать на 'C:\Test.exe'. Поскольку P не является строковой (в смысле String) ссылкой на этот текст, и у нас нет никакой другой переменной, ссылающейся на него, то его счётчик ссылок станет равным 0, и текст будет удалён из памяти. Это означает, что P теперь указывает на недоступную память (invalid memory). https://www.transl-gunsmoker.ru/2009/09/pchars.html

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта