たびたび、独りよがりな投稿で申し訳ございません。
ぜひに、見ていただきたいコードがあります。
winl1 := Integer(SendMessage(h,WM_GETTEXTLENGTH,0,0)); //コマンドヒストリの文字長の取得
winl2 := StrAlloc(winl1+1); //先頭文字を指すポインタを返す
SendMessage(h,WM_GETTEXT,winl1+1,Integer(winl2)); //全コマンドヒストリの取得
wintext := StrPas(winl2); //パスカルで扱える文字列に変換
私なりに(私のレベルで)苦戦した結果、このコードに問題あり。とみました。
15バイトの文字をあつかっても、メモリは少しづつ大きくなります。
StrAllocのヘルプにもありますけど、
これで得たメモリはちゃんと開放してください。
StrPasも、下位互換性を保つためのみの書き方ですから、ヘルプを見て、
不要なら訂正してください。
あと、わたしはここで、PCharでなくCharを使いますけど…。
(Charの場合はSetLengthで確保、キャストの必要なし)
Delphi6の場合は、これで楽です。
たかみちえさん。ありがとうございました。
>これで得たメモリはちゃんと開放してください。
これでした!。私のソフトのメモリ容量が安定しました!!。感激です!!!。
CPU稼動率が高いけど、0.2秒毎に10,000バイトの文字を扱う性質上、どうし
ようもないですよね。これは。。
問題解決まで丸3日掛かりましたが、皆様の助言があっての事です。
未熟ゆえに無礼な発言等ございました事、おわび申し上げます。
私は趣味でソフト開発をしていますが、また、困った時には助けてください。
よろしくおねがいします。m(__)m
MemChekですが、頑張って勉強してみます。
ツイート | ![]() |