VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2004/06/01(Tue) 08:19
投稿者花ちゃん
Eメール
URL
タイトルRe: 英数字以外の削除の仕方

この場合の処理は文字列の連結に99.5%かかっており、比較の部分は0.5%しかかかって
いません。
従って、文字列の連結をいかに早くするかにあります。
文字列が短い場合は連結も時間はかからないのですが、長くなると極端に遅くなります。
そこである程度までは、都度連結し、ある程度長くなったら連結をつなぎ変えます。
説明するより下記を試して見て下さい。
私のマシンでは、48.6 秒→ 1.1 と極端に早くなりました。
(あまりにも早いので間違っていないか心配ですが!。(^_^) )

Option Explicit
Private Declare Function timeGetTime Lib "winmm.dll" () As Long

Private Sub Command1_Click()
Dim lngStartTime    As Long
  Dim strOneLineDat As String
  Dim strTemp       As String
  Dim strTemp1       As String
  Dim intLoop       As Integer
  Dim intAsc        As Integer
  Dim dat As String

  Dim i As Integer
  
  strOneLineDat = "aAcd-0324-PあOI*POいL\AA"
  lngStartTime = timeGetTime
  strTemp = ""
 strTemp1 = ""
    For i = 1 To 10000
        For intLoop = 1 To Len(strOneLineDat)
            dat = Mid$(strOneLineDat, intLoop, 1)
            intAsc = Asc(dat)
            If (intAsc >= 97 And intAsc <= 122) _
                Or (intAsc >= 65 And intAsc <= 90) _
                Or (intAsc >= 48 And intAsc <= 57) Then
                strTemp1 = strTemp1 & dat
                If Len(strTemp1) > 50 Then
                    strTemp = strTemp & strTemp1
                    strTemp1 = ""
                End If
            End If
        Next intLoop
    Next i
    strOneLineDat = strTemp & strTemp1
    Label1.Caption = "timeGetTime  : " & (timeGetTime - lngStartTime) / 1000
End Sub


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -