- 842 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 00:27:26 ]
- >>839 試行錯誤中のコードだろうけど、どうみても一度しかnewしていない変数を
ループ中で何度もdeleteするのがおかしいことに気付かないとまずいよ。 Memo2にxをAddStringsするのもループを抜けてからじゃないと、 1,1,2,1,2,3,1,2,3,4,1,2,3,4,5,…みたいに行の登録が重複する。 Memo1が1500行だとMemo2、Memo3は(Σk=n(n+1)/2になるので)1125750行になってしまうよ。 それだけ大きいとTMemoコンポーネントのメモリ制限に引っかかってるんじゃないかな? てかMemo2、Memo3が最初からあるのならx、yなんて不要。直接入れればいい。 4つめがEEEでもRRRでもなく空の時にスペース三つ出力したいなら this->Memo2->Lines->Clear(); this->Memo3->Lines->Clear(); TStringList* Values = new TStringList; AnsiString asSpacer = " "; //スペース三つ for( int i = 0; i < Memo1->Lines->Count; i++ ){ Values->CommaText = Memo1->Lines->Strings[ i ]; this->Memo2->Lines->Add( Values->Strings[ 1 ].Trim() ); AnsiString as4thValue = Values->Strings[ 3 ].Trim(); this->Memo3->Lines->Add( as4thValue.IsEmpty() ? asSpacer : as4thValue ); } delete Values; あと >>840 で出ているデータが本物のデータからのコピーなら、ピリオドとカンマが 入力ミスで混ざってて、自動で正しく分離する事は無理。
|

|