Ãîñïîäà, ïðèâåòñòâóþ.
Åñòü çàäà÷à - ñ÷èòûâàòü îïðåäåëåííûå ïèñüìà èç 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