このコード、おかしいですか?

解決


モモンガ  2003-03-25 17:32:05  No: 3228

たびたび、独りよがりな投稿で申し訳ございません。
ぜひに、見ていただきたいコードがあります。

winl1 := Integer(SendMessage(h,WM_GETTEXTLENGTH,0,0));   //コマンドヒストリの文字長の取得
winl2 := StrAlloc(winl1+1);                              //先頭文字を指すポインタを返す
SendMessage(h,WM_GETTEXT,winl1+1,Integer(winl2));        //全コマンドヒストリの取得
wintext := StrPas(winl2);                                //パスカルで扱える文字列に変換

私なりに(私のレベルで)苦戦した結果、このコードに問題あり。とみました。
15バイトの文字をあつかっても、メモリは少しづつ大きくなります。


たかみちえ  URL  2003-03-25 17:57:24  No: 3229

StrAllocのヘルプにもありますけど、
これで得たメモリはちゃんと開放してください。
  StrPasも、下位互換性を保つためのみの書き方ですから、ヘルプを見て、
不要なら訂正してください。

  あと、わたしはここで、PCharでなくCharを使いますけど…。
(Charの場合はSetLengthで確保、キャストの必要なし)
Delphi6の場合は、これで楽です。


モモンガ  2003-03-25 19:35:44  No: 3230

たかみちえさん。ありがとうございました。

>これで得たメモリはちゃんと開放してください。

これでした!。私のソフトのメモリ容量が安定しました!!。感激です!!!。
CPU稼動率が高いけど、0.2秒毎に10,000バイトの文字を扱う性質上、どうし
ようもないですよね。これは。。
問題解決まで丸3日掛かりましたが、皆様の助言があっての事です。
未熟ゆえに無礼な発言等ございました事、おわび申し上げます。
私は趣味でソフト開発をしていますが、また、困った時には助けてください。
よろしくおねがいします。m(__)m

MemChekですが、頑張って勉強してみます。


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

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






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