いいから貴様等ヘルプぐらい読んでこい

string → PChar は、長さが1以上ならそのままバッファへのポインタを、
長さが0の時は特別に用意された長さ0のC形式の文字列へのポインタを返してくれる
長さが0のstringは全ビット0なので、純粋なキャスト、例えばPointerにキャストすればnilだし、Cardinalにすれば0。
でも、PCharにしたときは、別の値になる。
疑うならCPUウィンドウでトレースしてみなさい