文字列をPCharに入れたんですが、これの終わりを知る方法ってありませんか?
Inc(P);
で、次々送っているんですが。
PCharが、ポイントっぽいのは分かります。
苦肉の策で、
if Length(string(PChar(P))) = 0 then break;
ってので、いけそうな気もするんですが、もっとスマートな方法ってありますか?
試していませんが、
if p = nil then break;
としたら、どうなりますか?
if p^ = #0 then break;
でいいんじゃない?
“素直に”さんが書かれているように p^ ですね。
×:if p = nil then break;
○:if p^ = nil then break;
ループ中に、いろいろと試してみました。
こんな感じに。
ループ{
if p^ = #0 then
begin
Form1.Memo2.Lines.Add('#0');
// break;
end;
if Length(string(PChar(P))) = 0 then
begin
Form1.Memo2.Lines.Add('Length');
// break;
end;
いろいろと試してみて、期待通り動きそうなのは、この二つかな。
if p^ = nil then break;
は、[エラー] 互換性の無い型です、でコンパイラエラーになっちゃいますねー。
P in [] とかも考えたのですが、、、何を入れたら全体になるかが分からなかったので。
いっそのこと、Pに何かエンドマークを付け加えてin[]・・・とかも考えたのですが。^^;
速攻解決で、ありがとうございます。^^;
ツイート | ![]() |