「文字列が長すぎます」となる場合


みと  2013-10-03 19:59:44  No: 45364

Windows7の64bitでdelphi xe3 を使っています。

例えば、他のアプリケーションを起動したい時に、
ShellExecute(Handle, 'OPEN', PChar(FileName), PChar(parameter), nil, SW_NORMAL);
とやって起動しますが、パラメータが長い場合に、
stringの文字数制限なのか「文字列が長すぎます」となり、コンパイルできません。

こういう場合、どうやって回避したら良いのでしょうか?

とりあえず、バッチファイルに書き込んで実行する方法で、
これもTStringListで書き込む際に文字数制限に引っかかるので、
分割して書き込んで、あとで改行コードを消す・・・という、
とても格好悪い方法でやっていますが、
もっとスマートな方法がありましたら、教えて下さい。

よろしくお願いいたします。


tor  2013-10-03 22:27:35  No: 45365

そのコード自体では「文字列が長すぎます」というエラーになるとは思えませんが……
実際にエラーが出ているのは、そこに入れる文字列を定義している場所ではないですか?

ヲサコスヲサァとてもとてもとても……とても長い文字列ァサ

このような引用符付き文字列(文字列リテラルと言います)一つの長さはイオオ文字に制限されます。
しかし、複数の文字列リテラルに分けて連結すればもっと長い文字列を定義できるはずです。

ヲサコスヲサァとてもとてもとてもァヲサォヲサァ……ァヲサォヲサァとても長い文字列ァサ
スススススススススススススススススススススススススススススススススススススススス
ニコ みと
トコ イーアウッアーッーウィ木ゥ アエコーーコエキ  書込者ノト:ロ 「ィ  ン
モコ 


連結すれば入るのですね。
てっきり、制限ィイオオなんですねゥがあって、
それ以上は入らないのだと思っていました。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加