-Ïîèñê ïî äíåâíèêó

Ïîèñê ñîîáùåíèé â rss_sql_ru_access_programming

 -Ïîäïèñêà ïî e-mail

 

 -Ïîñòîÿííûå ÷èòàòåëè

 -Ñòàòèñòèêà

Ñòàòèñòèêà LiveInternet.ru: ïîêàçàíî êîëè÷åñòâî õèòîâ è ïîñåòèòåëåé
Ñîçäàí: 16.03.2006
Çàïèñåé:
Êîììåíòàðèåâ:
Íàïèñàíî: 4


Ñ÷èòûâàíèå òåêñòîâûõ ôàéëîâ â öèêëå

Ïîíåäåëüíèê, 09 Íîÿáðÿ 2015 ã. 14:55 + â öèòàòíèê
Ãîñïîäà, ïðèâåòñòâóþ.

Åñòü çàäà÷à - ñ÷èòûâàòü îïðåäåëåííûå ïèñüìà èç Outlook. Èç âëîæåíèé â ïèñüìàõ ñ÷èòûâàòü èíôîðìàöèþ (â pdf ôàéëàõ) è ñîõðàíÿòü äàííûå â áàçó + ñîçäàâàòü ïèñüìà àâòîìàòîì íà òå äàííûå, ÷òî ïðèõîäÿò èç ïèñåì.
Íó è òàê êàê ýòî äåéñòâèå äîëãîèãðàþùåå - ïðîãðåññáàð äëÿ îòðèñîâêè ñêîëüêî âñåãî ïèñåì áóäåò îòðàáîòàíî, ñêîëüêî èíôîðìàöèè â íèõ, ñêîëüêî îòðàáîòàíî...

Âåñü ïðîöåññ ñäåëàí, ðàáîòàë. Íî ïîïàëñÿ êîìï, íà êîòîðîì åñòü ïðîáëåìà.
Êîìï çíà÷èòåëüíî ìîùíåå ìîåãî è ìíîãèõ, íà êîòîðûõ ïðîáîâàëîñü. Äàæå íà âèðòóàëêå ó ñåáÿ ïðîáîâàë.
Ïðîöåññ:
Âûáîðêó íóæíûõ ïèñåì - ïðåäâàðèòåëüíóþ, äëÿ çíà÷åíèé ïðîãðåññáàðà è ñîõðàíåíèå íóæíûõ ïèñåì â êîëëåêöèþ.
Ñîõðàíåíèå è êîíâåðòàöèþ pdf â txt. (òîæå íå ñ ïåðâîãî ðàçà íàøåë êîíâåðòåð)
Ïðîáëåìà:
×àñòî(ñëó÷àéíûì îáðàçîì, ñèñòåìó íå ñìîã âû÷èñëèòü) - ïîñëå îòðàáîòêè êîíâåðòàöèè - ïðè ïîïûòêå ñ÷èòàòü ñàì ôàéë txt äàåò ïóñòóþ ñòðîêó. Äàëüøå ïðîöåññ "ëîæèòñÿ".
Ïðè÷åì ìîæåò ïåðâîå ïèñüìî íå îáðàáîòàòü(ñ÷èòàòü ñêîíâåðòèðîâàííûé txt), à ìîæåò è ãäå òî â ñåðåäèíå.
Ïðè ïðîâåðêå êîäà ñ òî÷êîé îñòàíîâà - âñå îê. Âñå âåçäå ñ÷èòûâàåòñÿ. Ïðè ëþáîì êîëè÷åñòâå ïèñåì.

Ïîíèìàþ, ÷òî ïðîöåññ èäåò àñèíõðîííî. Êòî òî çà êåì òî íå óñïåâàåò.

Ïðîáîâàë ïðîâåðÿòü íàëè÷èå ôàéëà ÷åðåç
If Dir(strNameFile, vbDirectory) <> "" Then
è ïîòîì (ê ñîæàëåíèþ êîä íå ñîõðàíèë, íî ïðèíöèï ýòîò)
FileName = "C:\1\1.txt"

f = FreeFile

Open FileName For Input As f
Do While Not EOF(f)
  FileTxt = Input(1, #f)
  Debug.Print UsefulTxt
Loop
Close #f

Ïîêàçûâàåò, ÷òî ôàéë åñòü, à íè÷åãî íå ñ÷èòûâàåò ñ ôàéëà, òî÷íåå äàííûå ôàéëà=""

Ïðîáîâàë ïðîâåðÿòü ÷åðåç FSO.
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(strNameFile) Then
    Set FSTR = FSO.OpenTextFile(strNameFile)
    BodyTxt = FSTR.ReadAll
    FSTR.Close
    Set FSTR = Nothing
End If

Ïðîáëåìà îñòàåòñÿ.


Ïðîáîâàë ñòàâèòü çàäåðæêó äî ñ÷èòûâàíèÿ
For aa = 1 To 100
        For ee = 1 To 110
        If Dir(strMyFileNameTo, vbDirectory) <> "" Then
            
        End If
    Next ee
Next aa

ïîìîãàåò, íî äëÿ êàæäîãî êîìïà íóæíî ïîäáèðàòü ñâîå çíà÷åíèå çàäåðæêè. Äà è ïðîöåññ óäëèíÿåò íà ìíîãî. Ïîíÿòíî ÷òî íå êëèìàòèò.
Äà è åñëè ÷óòü ïåðåáðàë â ïîäáîðå - íåïðèÿòíîå ïîäâåøèâàíèå ñàìîãî àêñà, íå ñèñòåìû.
Êñòàòè, çàìåòèë, ÷òî ïðîöåññ áåðåò íå áîëüøå 25% îò ïðîöåññîðà, ïðàâäà ïî ìåðå îáðàáîòêè ïèñåì - ðàñòåò çàíÿòàÿ ïàìÿòü îïåðàòèâû êîìïà. Ïðàâäà êàê òî ñðàçó íå äîãàäàëñÿ ïðîâåðèòü (ñåé÷àñ íå ìîãó) - ÷òî ñúåäàåò ïàìÿòü. íî â îáúåì ïàìÿòè - íå óïèðàþñü.

Ïåðåäåëàë íà ïîñòðî÷íîå ñ÷èòûâàíèå ôàéëà txt (÷åðåç êëàñ), íå ïîìîãëî.
Çàïèõíóë ïðîâåðêó íàëè÷èÿ ôàéëà ïåðåä ïîñòðî÷íûì ñ÷èòûâàíèåì(òóò íà ôîðóìå íàøåë)
While Dir(strNameFile) = ""
    a = a + 1
    If a = 10000 Then ' âñòàâèë èíà÷å ìîæíî îò ñþäà íèêîãäà è íå âûéòè
        GoTo ReadTXT_Error
    End If
    DoEvents
Wend
ïðîáëåìà ìîæåò óëó÷øèëàñü, íî íå ðåøèëàñü ïîëíîñòüþ.

Ïðîáîâàë äàæå ñîõðàíåíèå è êîíâåðòàöèþ âñòàâëÿòü â íà÷àëî ïðîöåññà - â ìîìåíò âûáîðêè ïèñåì, à ñ÷èòûâàòü
òåêñòîâûé ôàéë ïî ìåðå îáðàáîòêè âûáðàííûõ ïèñåì. Íå ïîìîãëî...
Ìîæåò âîïðîñ â òîì, ÷òî â ýòîì ïðîöåññå èäåò îáðàùåíèå ê íåñêîëüêèì "ñòîðîííèì ïðèëîæåíèÿì"?
Ñíà÷àëà Outloook(âûáîðêà è ñîõðàíåíèå âëîæåíèé), ïîòîì êîíâåðòåð( èç pdf â txt), ïîòîì çàïèñü äàííûõ â áàçó, ïîòîì îïÿòü Outlook(ñîçäàíèå ïèñåì, ñîáûòèé)

Êó÷ó íàïèñàë, óæ ïðîñòèòå, íî ýòî ÷òîáû áûëî âèäíî ÷òî è êàê äåëàë. ×òîáû íå ïîâòîðÿòüñÿ ñ âàðèàíòàìè ðåøåíèÿ ïðîáëåìû

Ïðîøó ïîìîùè â âîïðîñå:
Êàê ìíå ïîáîðîòü ýòî íå óñïåâàíèå èëè íåïðàâèëüíîå ñ÷èòûâàíèå êîíâåðòèðîâàííîãî ôàéëà?

http://www.sql.ru/forum/1184155/schityvanie-tekstovyh-faylov-v-cikle


 

Äîáàâèòü êîììåíòàðèé:
Òåêñò êîììåíòàðèÿ: ñìàéëèêè

Ïðîâåðêà îðôîãðàôèè: (íàéòè îøèáêè)

Ïðèêðåïèòü êàðòèíêó:

 Ïåðåâîäèòü URL â ññûëêó
 Ïîäïèñàòüñÿ íà êîììåíòàðèè
 Ïîäïèñàòü êàðòèíêó