Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 41 42 43 44 45 46 47 48 49 [50]
 Re: Топик "как я лажанулся"  [new]
Василий 2
Member

Откуда:
Сообщений: 961
Неочевидный нюанс - PChar от пустой строки вовсе не nil!

var
  p: Pointer;
  s: string;
begin
  s := '';
  p := PChar(s);
  Debug(IntToStr(Integer(p))); // Debug Output: 4224380 Process pr.exe (3984)
  p := Pointer(s);
  Debug(IntToStr(Integer(p))); // Debug Output: 0 Process pr.exe (3984)
14 янв 20, 17:01    [22059044]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Квейд
Member

Откуда: Kyiv, Ukraine
Сообщений: 5352
Василий 2
Неочевидный нюанс - PChar от пустой строки вовсе не nil!

var
  p: Pointer;
  s: string;
begin
  s := '';
  p := PChar(s);
  Debug(IntToStr(Integer(p))); // Debug Output: 4224380 Process pr.exe (3984)
Ну да, магия компилятора. Сначала идет неявный вызов _UStrToPWChar
14 янв 20, 18:07    [22059115]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Василий 2
Member

Откуда:
Сообщений: 961
Поразмыслив, можно догадаться, что в этом есть некий смысл - ведь указатель на пустую строку это вполне себе нормальный ненулевой указатель на #0 где-то в памяти. Но при вызове API функций, принимающих непустые PChar либо NULL, может сработать не так, как ожидается
14 янв 20, 18:24    [22059126]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
alekcvp
Member

Откуда:
Сообщений: 1849
Василий 2
Поразмыслив, можно догадаться, что в этом есть некий смысл - ведь указатель на пустую строку это вполне себе нормальный ненулевой указатель на #0 где-то в памяти. Но при вызове API функций, принимающих непустые PChar либо NULL, может сработать не так, как ожидается

Это специально сделано, чтобы пустая строка и в PChar была пустой строкой. Хотите nil - пишите PChar(Pointer(string)).
15 янв 20, 09:58    [22059455]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
KtoI
Member [заблокирован]

Откуда:
Сообщений: 20
Василий 2,

если смотреть в чистый космос очищенный от всего. То там останется материя. Всё логично, там где ты видишь нелогичность.
18 янв 20, 04:59    [22062071]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Василий 2
Member

Откуда:
Сообщений: 961
KtoI
Василий 2,

если смотреть в чистый космос очищенный от всего. То там останется материя. Всё логично, там где ты видишь нелогичность.

Неочевидность, а не нелогичность
20 янв 20, 10:40    [22062884]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13864
вот так я ложанулся 22077252 с наследованием фреймов
думал, у меня два фрейма, а их оказалось три
11 фев 20, 15:40    [22077685]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
ёёёёё
Member

Откуда:
Сообщений: 1976
X11,

циклическая ссылка.
11 фев 20, 17:01    [22077750]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3523
X11,

налицо нарушение принципа kiss - сделай это проще, дурачек. все претензии с названием к авторам принципа если что :)

Сообщение было отредактировано: 11 фев 20, 20:32
11 фев 20, 20:31    [22077874]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
ёёёёё
Member

Откуда:
Сообщений: 1976
makhaon,

дурачОк.
11 фев 20, 23:26    [22077928]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 41 42 43 44 45 46 47 48 49 [50]
Все форумы / Delphi Ответить