Memo1.linesでの書込み処理を高速にしたいのですが


Noby  2018-01-13 02:03:18  No: 48927

いつもありがとうございます。

下記のコードで引用符等(スペースも)を追加させているのですが、

Sonyu:='>';//

Memo1.lines[i] := Sonyu + Memo1.lines[i]; 

行数が1000行近くになると42秒位かかってしまいます。

もっと高速に処理する方法等はありますでしょうか?


8  2018-01-13 03:21:30  No: 48928

引用符をつけたい最初の行の行頭から、最後の行の行末まで選択。
memo1.seltextを変数に入れ、開業文字を開業文字+引用符に置換。
頭にも引用符を足す。
その文字列を、memo1.seltextに代入する。
でどうですか?

最近の書き込み内容を振り返れば、その技術の範囲内でできるお話です。
描画処理がないため、いくらか早くなると思います。

念のため書いておきますと、string replace関数は、あまり処理が早くありません。
もし、何十倍もの長さの文字列を扱うのであれば、もう少しだけ手の込んだことを
しなくてはいけないかもしれません。


通りすがり  2018-01-13 06:34:02  No: 48929

あとMemo1.Lines[]の書き換えをMemo1.Lines.BeginUpdateとMemo1.Lines.EndUpdateで囲むと
もう少し幸せになれるかもしれません。


Noby  2018-01-13 10:26:18  No: 48930

クさん貴重なコメントありがとうございます。

クさんから教えていただきました内容を元に
下記のコードで実現できました。
改行コード(フツ)を  フツォァヲサァで置換するという発想は、とても斬新でした。
ほぼ一瞬で置換出来ました。感動しました。
ヲサ
ヲサヲサヲサヘアョコスモメィヘアョヤャヲサフツャヲサフツォァヲサァャヲサロメチンゥサ
ヲサヲサヲサヲサヘアョフローンコスァヲサァヲサォヲサヘアョフローンサ

通りすがりさん

ヘアョフョツユとヘアョフョナユで囲むコードも実験をしてみました。
囲まれている部分が終了してから更新をするのですね。このような機能がトにあるのですね。
大変勉強になりました。10秒くらいは時短が出来ました。

ありがとうございました。解決とさせていただきます。
スススススススススススススススススススススススススススススススススススススススス
ニコ 
トコ イーアクッーアッアカィ火ゥ アカコオケコアカ  書込者ノト:ロ 「・「   ン

もう解決されてますが・・・
以下のようにヤモフを使うのも手です^^

ヲサヲサコヲサヤモフサ
ヲサヲサコヲサラサ

ヲサヲサヲサコスヲサヤモフョテサ
ヲサヲサ
ヲサヲサヲサヲサョチィヘアョフゥサ
ヲサヲサヲサヲサヲサヲサコスヲサーヲサヲサョテヲサュヲサアヲサヲサ
ヲサヲサヲサヲサヲサヲサロンヲサコスヲサァヲサヲサァヲサォヲサロンサ
ヲサヲサヲサヲササ
ヲサヲサヲサヲサヘアョフョチィゥサ
ヲサヲサ
ヲサヲサヲサヲサョニサ
ヲサヲササ
スススススススススススススススススススススススススススススススススススススススス
ニコ ホ
トコ イーアクッーアッアクィ木ゥ アイコウオコウケ シ  スュアセシ初心者セ シッニセシノヘヌ ス「コッッョョョッッアョ「 ス「ー「セ 書込者ノト:ロ 「。「 「" ン

さん

コメント下さりありがとうございました。

コヲサヤモフ  に一旦書き込み、終了したら

ヘに代入するという方法ですね。

コメントのように代入はするのですね。大変参考になりました。

実験してみました。当初のものより早く書き込めますが、今回の

目的では、下記が一番早く置換できるようでした。

ヲサヲサヘアョコスモメィヘアョヤャヲサフツャヲサフツォァヲサァャヲサロメチンゥサヲサ
ヲサヲサヲサヲサヲサヘアョフローンコスァヲサァヲサォヲサヘアョフローンサヲサ

今後もまたよろしくお願い致します。


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

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






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