掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
置換速度を早くするには? (ID:19882)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
XPpro,DL6pro,BDEでデータベース作成中です。 User0、User3いずれもparadoxテーブルがあり、それぞれに同じ項目名[Memo03]があり、データ数としてはそれぞれ3000行程度です。 ListBoxをクリックするとEdit1にクリックした値が入り、この値をEdit2に入力した値と置換するために、以下のコードを作成しました。実行してみると時間が非常にかかります(xpで3分程度、98になると5分程度)。置換速度を上げたいのですが、どこをいじればよいのか判りません。どなたか、ご教示下さい。 procedure TFormSub.Button1Click(Sender: TObject); var S1,S2,S3,S4 : String; //User0,User3のテーブルのmemo03項目を同時に変換 //i : Integer; begin S1 := Edit1.Text; S2 := Edit2.Text; begin try begin //User1Table1の更新開始 //画面のちらつきをなくす目的。 DMSyaken.User0Table.DisableControls; DMSyaken.User0Table.Open; while not DMSyaken.User0Table.Eof do begin DMSyaken.User0Table.Edit; if DMSyaken.User0Table.FieldByName('Memo03').IsNull then DMSyaken.User0Table.next else S3 := DMSyaken.User0Table.FieldByName('Memo03').AsString; S4 := StringReplace(S3,S1,S2,[rfReplaceAll]); DMSyaken.User0Table.Edit; DMSyaken.User0Table.FieldByName('Memo03').Value := S4; DMSyaken.User0Table.Post; DMSyaken.User0Table.next; end; DMSyaken.User0Table.ApplyUpdates; DMSyaken.User0Table.Close; end; finally DMSyaken.User0Table.EnableControls; end; end;//User0Tableの更新修了 begin //User3Tableの更新開始 try begin //画面のちらつきをなくす目的。 DMSyaken.User3Table.DisableControls; DMSyaken.User3Table.Open; while not DMSyaken.User3Table.Eof do begin DMSyaken.User3Table.Edit; if DMSyaken.User3Table.FieldByName('Memo03').IsNull then DMSyaken.User3Table.next else S3 := DMSyaken.User3Table.FieldByName('Memo03').AsString; S4 := StringReplace(S3,S1,S2,[rfReplaceAll]); DMSyaken.User3Table.Edit; DMSyaken.User3Table.FieldByName('Memo03').Value := S4; DMSyaken.User3Table.Post; DMSyaken.User3Table.next; end; DMSyaken.User3Table.ApplyUpdates; ShowMessage('変換が終わりました'); DMSyaken.User3Table.Close; end; finally DMSyaken.User3Table.EnableControls; end; end;//User0Tableの更新修了 end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.