🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.bazy-danych.msaccess
Article #137018

Funkcja z regexp przy 500 wywołaniu sypie błędem 2042

#137018
From: Prot
Date: Fri, 09 Oct 2015 18:09
55 lines
2815 bytes
Witam!

Pracuje nad parserem danych z formatu MT940 (sformalizowany format importu 
wyciągów bankowych) do accessa. Z mojej analizy wynika, że można go zrobić w 
VBA z wykorzystaniem właściwości tzw. submatches. Wykorzystać planuje 
funkcję:

Function GetItem(ByVal STR As String, Wzorzec As String, iNum As Long)

    Dim objRegExp As Object
    Set objRegExp = CreateObject("vbscript.regexp")
    On Error GoTo GetItem_Error
    With objRegExp
        .Global = True
        .Pattern = Wzorzec

GetItem = .Execute(STR)(iNum).SubMatches(0)

    End With

GetItem_Exit:
        On Error GoTo 0
        Set objRegExp = Nothing
        Exit Function

GetItem_Error:
        GetItem = CVErr(xlErrNA)
        Resume GetItem_Exit

End Function


W testowym pliku tekstowym mam ponad 400 linii danych, obejmujących 28 
rekordów tablicy z wyciągiem bankowym.

Dziwny problem powstał przy testowaniu w VBE 2007 działania tej funkcji: w 
kodzie testowym wywołuje tą funkcję (oczywiście w pętli) z 500 razy i 
wyłuskuje mi wszystkie potrzebne stringi i nagle przy 27 rekordzie danych 
wywala run time error 13, a w debugerze błąd 2042 - (brak danych ???).
Błąd ten występuje w momencie analizy (kolejnego 26-stego stringu) 26 
cyfrowego numeru konta bankowego i koniec.

Mam pytanie zatem dla znawców tematu czym może być spowodowany ten błąd ?
Czy są w VBA jakieś ograniczenia wielokrotności wywoływania funkcji własnych 
? Czy każde wywołanie zajmuje "odrębne" miejsce w pamięci podręcznej i 
trzeba ją cyklicznie czyścić ?

Z góry dziękuje za wszelkie sugestie i rozwiązania.

Prot 


---
Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe Avast.
https://www.avast.com/antivirus
Technical Details
Message-ID: <mv8vs6$o2p$1@node1.news.atman.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From: "Prot" <protnospam@widzew.net>
Newsgroups: pl.comp.bazy-danych.msaccess
Subject: Funkcja z regexp przy 500 wywołaniu  sypie
 błędem 2042
Date: Fri, 9 Oct 2015 20:09:08 +0200
Organization: ATMAN - ATM S.A.
Lines: 56
Message-ID: <mv8vs6$o2p$1@node1.news.atman.pl>
NNTP-Posting-Host: ip-176.105.131.220.tvsat364.lodz.pl
Mime-Version: 1.0
X-Trace: node1.news.atman.pl 1444414150 24665 176.105.131.220 (9 Oct 2015 18:09:10 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Fri, 9 Oct 2015 18:09:10 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.5931
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157
X-Antivirus: avast! (VPS 151009-0, 2015-10-09), Outbound message
X-Antivirus-Status: Clean
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit