Здравствуйте ! Нужна ваша помощь !!! Не могу добиться вызова окна Open_Window() с учётом выполнения проверки или запускается постоянно или закрывается совсем ...
проблема в том что в таком варианте в отладчике работает на ура - а когда делаю .exe НЕ ХОЧЕТ !
Код работает когда :
If LOF1<>LOF2: ProcedureReturn Open_Window() ; здесь был ноль : EndIf
вот сам код - его поправьте пожалуйста !!!
Global Pfad1$, Pfad2$
Global FontID2 = LoadFont(2, "Arial", 16)
Global FontID3 = LoadFont(3, "Arial", 10)
Pfad1$ = "a.txt
Pfad2$ = "b.txt
Procedure PosWinInfo(Window)
If IsWindow(Window)>0
TrayWnd = FindWindow_("Shell_TrayWnd", 0)
TrayNofifyWnd = FindWindowEx_(TrayWnd, 0, "TrayNotifyWnd", 0)
GetWindowRect_(TrayNofifyWnd,@win.RECT)
Win_x=GetSystemMetrics_(#SM_CXSCREEN)-WindowWidth(Window)-8
Win_y=GetSystemMetrics_(#SM_CYSCREEN)-(win\bottom-win\top)-WindowHeight(Window)-4
ResizeWindow(Window, Win_x, Win_y, #PB_Ignore, #PB_Ignore)
EndIf
EndProcedure
Procedure Open_Window()
OpenWindow(1,0,0,240,100,"",#PB_Window_BorderLess|#PB_Window_Invisible)
PosWinInfo(1)
StickyWindow(1, 1)
SetWindowColor(1,RGB(229, 0, 99) )
TextGadget(1, 0, 10, 240, 50, "В Файл были внесенны изменения", #PB_Text_Center)
SetGadgetFont(1, FontID2)
SetGadgetColor(1, #PB_Gadget_BackColor, RGB(229, 0, 99))
ButtonGadget(2,10,70,100,24,"Закрыть")
SetGadgetFont(2, FontID3)
AnimateWindow_(WindowID(1), 800, #SW_SHOWNA)
Repeat
Event=WaitWindowEvent()
Gadget=EventGadget()
If Event=#PB_Event_Gadget
If Gadget=2
CloseWindow(1)
Break
EndIf
EndIf
ForEver
EndProcedure
Procedure FileCompare(Pfad1$,Pfad2$)
; Содержание Сравнение двух файлов
; Result<0 ошибка
; Result=0 Файлы неравные
; Result=1 одинаковы
Protected LOF1, LOF2, Count, Result, KSize
KSize=1024*32
LOF1=FileSize(Pfad1$): If LOF1<0: ProcedureReturn -1: EndIf
LOF2=FileSize(Pfad2$): If LOF2<0: ProcedureReturn -1: EndIf
If LOF1<>LOF2: ProcedureReturn Open_Window() : EndIf
If ReadFile(101,Pfad1$)=0: Result=-1: Goto FileCompareEnd: EndIf
If ReadFile(102,Pfad2$)=0: Result=-1: Goto FileCompareEnd: EndIf
*Buffer1=AllocateMemory(KSize): If *Buffer1=0: Result=-1: Goto FileCompareEnd: EndIf
*Buffer2=AllocateMemory(KSize): If *Buffer2=0: Result=-1: Goto FileCompareEnd: EndIf
CopyMemory(*Buffer1,*Buffer2,KSize)
Result=1
Count=0
While LOF1>Count
If (LOF1-Count)>KSize
FileSeek(101,Count): ReadData(101,*Buffer1,KSize)
FileSeek(102,Count): ReadData(102,*Buffer2,KSize)
Count+KSize
Else
FileSeek(101,Count): ReadData(101,*Buffer1,LOF1-Count)
FileSeek(102,Count): ReadData(102,*Buffer2,LOF1-Count)
Count=LOF1
EndIf
If CompareMemory(*Buffer1,*Buffer2,KSize)=0
Result=0
Count=LOF1
EndIf
Wend
FileCompareEnd:
CloseFile(101) : CloseFile(102)
FreeMemory(*Buffer1): FreeMemory(*Buffer2)
ProcedureReturn Result
EndProcedure
Repeat
TimeNEW = TimeNEW + ElapsedMilliseconds() - TimeOLD
TimeOLD = ElapsedMilliseconds()
If TimeNEW > 21
For i = 1 To TimeNEW
If Pfad1$ <> Pfad2$
Debug FileCompare(Pfad1$,Pfad2$)
;Break
TimeClr = 1
EndIf
Delay(1000)
Next
EndIf
If TimeClr = 1: TimeNEW = TimeNEW % 22: TimeClr = 0: EndIf
Until Event=#PB_Event_CloseWindowкуда или как правильно вставить Open_Window() - плиз
Заранее спасибо
Отредактировано kaaamid (09.01.2013 04:30:45)
