Stringに255文字以上の文字を代入するには?

解決


Uga  2004-10-07 00:21:01  No: 11295

質問させて頂きます。
Stringに約500以上くらいの文字を代入しようとすると、「文字列のよう素数が255を超えました」とエラーが出てしまいます。
ネットで調べたところ、Delphi2.0以降からはStringにはメモリが許すまで最大2.0GBまで入るはずですが、何故エラーになってしまうのでしょうか?何方かご教授お願いします。
環境は  Windows2000, Delphi7.0pro  です。


jok  2004-10-07 00:40:38  No: 11296

プロジェクト/オプション/コンパイラの文法オプションで

長い文字列を使う にチェックが入っていますか? 普通はこれがデフォルトです。


jok  2004-10-07 00:43:50  No: 11297

それから代入の文で一行だと限界があるようです。

str := 'andsajwjew....'+
       'nbhxihjwsi....'+
       .....
       'hhshsihjc.....';

のようにしてください。


Uga  2004-10-07 01:30:58  No: 11298

jokさん、返答ありがとう御座います。
「長い文字列を使う」にはチェックが入っています。
後、代入する文字列は定数ではないので一行で代入するようにしたいのです。というのは、代入する文字列はPHPにPOSTして得られる戻り値なのでなるべく一度で代入されるようにしたいのです。又、その後代入された文字列をCopyやDelete等で文字列操作を行いたいのです。
無理して、Stringを使いたいという訳でもないのですが、他に良い方法がわかりません。ここのQ&AでTFileStreamを使っ同じようなことをするものがあったのですが今一よく分かりませんでした。
もし、この方法でできるのであれば教えて頂けないでしょうか?
図々しい事を言っていると思いますが、どうかよろしくお願いします。


jok  2004-10-07 02:06:11  No: 11299

>代入する文字列はPHPにPOSTして得られる戻り値なのでなるべく一度で代入されるようにしたいのです

たとえば Memo1 に10000バイトの文字列があった場合、

var
  str:string;

str := Memo1.Text;

とすることにはなんの問題もありません。上の代入の仕方は文字列の即値の場合
だけです。


Uga  2004-10-07 10:47:03  No: 11300

返信遅くなりました。
すみません。勘違いしていました。
Postした結果の戻り値をそのまま代入して大丈夫でした。戻り値がまだうまく戻っていなかった時なので、戻り値を定数にして実験を行おうとしていた為にこんなことになってしまいました。今、戻り値が正しく戻ってくるようになったので、代入してみたらうまくいきました。
Stringに定数で255文字以上代入すると駄目なのですね。jokさん、変な勘違いをしてしまってすみませんでした。どうもありがとう御座いました。


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

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






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